SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows Phone 7.5でつくる3Dアプリケーション

Windows Phoneで3Dアプリケーションを作成しよう

Windows Phone 7.5でつくる3Dアプリケーション(4)

  • X ポスト
  • このエントリーをはてなブックマークに追加

3Dモデルの問題点

 前回の記事では、簡単なロボット……といいますか、ぶっちゃけドロイドくんの3Dモデルを作成しました。しかしながら、最大の特徴であるアンテナを作るのを失念していたため、3Dモデルにアンテナを追加して、ついでに頭と胴体の空洞を埋めておきました。この3DモデルをXファイル形式で出力し、前回作成したサンプルに上書きして実行すると、以下のように頭部にアンテナのあるドロイドくんが描画されます。しかしながら、メタセコイア上で表示される3Dモデルと比較してみると、どうもアゴ周りや胴体がもっさりしている印象を受けます。

Xファイル形式の3Dモデルを描画した結果 と メタセコイア上で表示される3Dモデル
Xファイル形式の3Dモデルを描画した結果 と メタセコイア上で表示される3Dモデル

 このように、3Dモデルを異なるファイル形式に出力すると、情報の欠落により差異が生じる場合があります。それでは、このもっさり感を簡単かつ無償で解消するには、どのようにすればよいのでしょうか? 方法はいろいろと考えられますが、今回はメタセコイア形式の3DモデルをWindows Phoneに直接読み込む方法をご紹介します。

 XNAでは、メタセコイア形式の3Dモデルを標準でサポートしていません。しかしながら、XNAにはさまざまな形式のファイルを読み込めるようにするための仕組みとして「コンテント・パイプライン」が存在します。そもそも、Xファイル形式の3DモデルがXNAで利用できるのは、Xファイルを読み込むためのコンテント・パイプライン用アセンブリが標準で用意されているためです。このため、メタセコイア用のコンテント・パイプライン用アセンブリを用意すれば、メタセコイア形式の3DモデルをXNAで利用することが可能となります。

コンテント・パイプラインによるデータフロー
コンテント・パイプラインによるデータフロー

 幸いなことに、XNAの開発メンバーである伊藤雄一氏が運営している「ひにけにXNA」というサイトでは、「メタセコイア・パイプライン」というコンテント・パイプライン用アセンブリが無償(商用利用も可能)で公開されています。このため、このアセンブリをContentプロジェクトから参照すれば、いとも簡単にメタセコイア形式の3Dモデルを直接読み込むことが可能となります。それでは、実際に手順を見ていきましょう!

3Dモデルを直接読み込む

 メタセコイア・パイプラインを利用してメタセコイア形式の3Dモデルを直接読み込むためには、まず以下のページから「MetasequoiaPipeline-1.0.101222.0-bin.zip」をダウンロードし、解凍した「MetasequoiaPipeline.dll」をソリューションのディレクトリに配置します。

 この際、「MetasequoiaPipeline.dll」のプロパティ画面に[ブロックの解除]ボタンが表示されている場合は、ボタンを押下してファイルのブロックを解除してください(下図参照)。

MetasequoiaPipeline.dllのプロパティ
MetasequoiaPipeline.dllのプロパティ

 次に、「MetasequoiaPipeline.dll」をContentプロジェクトから参照するため、Visual Studioのソリューションエクスプローラから「SlXnaAppLibContent」プロジェクトを選択し、コンテキストメニューから[参照の追加]を選択します。これにより表示される画面の[参照]タブから「MetasequoiaPipeline.dll」を選択して[OK]ボタンを押下します。

参照の追加
参照の追加

 さらに「SlXnaAppLibContent」プロジェクトの「Droid.x」を選択し、コンテキストメニューから[削除]を選択します。再度、コンテキストメニューから[追加]-[既存の項目]を選択し、表示される画面から「Droid.mqo」を選択して[追加]ボタンを押下します。この際、「Droid.mqo」が表示されない場合は、画面右下のリストボックスから[すべてのファイル(*.*)]を選択してください。

既存項目の追加
既存項目の追加

 これにより、追加したファイルの拡張子が自動的に識別されて、メタセコイア用のコンテント・パイプラインがプロパティに設定されます。

3Dモデルの置換
3Dモデルの置換

 最後に、メインメニューから[ビルド]-[ソリューションのリビルド]を選択して実行すると、以下のようにメタセコイア上で表示されるものと遜色のない3Dモデルが表示されます。

メタセコイア形式の3Dモデルを描画した結果 と メタセコイア上で表示される3Dモデル
メタセコイア形式の3Dモデルを描画した結果 と メタセコイア上で表示される3Dモデル

 このように、ソースコードに手を加えることなく、3Dモデルのファイル形式を変更し、問題を解消することができました。このことからも、コンテント・パイプラインが非常に強力な機能であることが分かります。これで後顧の憂いなく、開発に専念することができます。次項では、UIコントロールと3Dモデルを同一の画面で描画してみましょう!

次のページ
SilverlightとXNAを共存させる

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Windows Phone 7.5でつくる3Dアプリケーション連載記事一覧

もっと読む

この記事の著者

もとひろん(モト スクウェア ソリューション)

自営業でシステムエンジニアを営んでおります。主に.NETテクノロジによるシステム開発を得意としておりますが、いざとなれば何でもやります。ふつつかものですが、よろしくお願い致します!WebサイトMOTO SQUARE SOLUTIONTwitter@MOTOSQUARE 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6374 2012/01/27 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング