フォト

Google AdSense

  • AdSense
無料ブログはココログ

« 2月 | トップページ | インフルエンザにはかかってないけども »

2013.02.03

Windows 8アプリ:FBX形式からCMOファイルを自動生成するカスタムビルドステップ

Vs2012cmo000

とりあえず、Windows Storeアプリでタッチパネルを使ったDirect3D11.1アプリを作ってみようと思って色々と調べたりコードを書き始めたのですが、まずはなによりも3Dモデルデータを持ち込むためにどうするのか調べたのをメモっておく。

※注.今回やってる話はVisual Studio 2012でもExpress Editionではだめかもしれません。こちらはProfessinalでやりました。

※注.今回は、Windows 8でWindows Storeアプリでやりましたがデスクトップアプリのプロジェクトでもこれがいけるのかは今後試してみます(デスクトップでいけるならそれからWindows 7環境もたぶんOK)デスクトップアプリでも使用できました。

最近、DirectXTKの方で .CMO形式と.SDKMESH形式のローダーが付いたのでまずは.CMO形式の作成方法をどうやるのか調べていたのですが下記の記事に作り方が書いてました。

ゲームまたはアプリケーションでの 3-D アセットの使用
http://msdn.microsoft.com/ja-jp/library/hh972446.aspx

これによると下記の形式について、メッシュ コンテンツ パイプラインの設定を行うとカスタムビルドステップで.CMO形式に変換する処理が走ってくれると言うことがわかりました。

・AutoDesk FBX インターチェンジ ファイル (.fbx)
・Collada DAE ファイル (.dae)
・Wavefront OBJ ファイル (.obj)

そんなわけで、上の説明通りの手順をやってみました。

Vs2012cmo001
まずは、BlenderからFBXファイルを持ってきてVisual Studio上の【資産】(英語版だとAssetsなんですが【アセット】フィルタのままでよかったなぁ...)フィルタあたりに追加しておきます。

この時点では、monkey.fbxを右クリックしてカスタムビルドステップでMeshを選択することができないので、上のMicrosoftのドキュメント「プロジェクトにビルドのカスタマイズを追加するには」あたりをやっていきます。

Vs2012cmo002
まずは、ソリューションエクスプローラーでカスタムビルドステップ追加したいプロジェクト選択して、【プロジェクト】メニューの【ビルドのカスタマイズ】を選びます。

そうすると下記のようなダイアログがでます。

Vs2012cmo003
なんか、はじめから2つありますがMeshのは無いので【既存ファイルの検索】で追加します。

ドキュメントでは

Visual Studio installation directory\Common7\IDE\Extensions\Microsoft\VSGraphics\

にあるというので探してみるとありました。

追加すると下記のようになりますので追加したものを全部チェックで。

Vs2012cmo007

追加するとmonkey.fbxのプロパティからカスタムビルドステップで、【Mesh Content Pipeline】があるので選択します。

Vs2012cmo004

今回は、Meshのやつだけあればいいのですが、下記の3つを読み込んでおきます。

・ImageContentTask.targets・・・テクスチャコンバート用。カスタムビルドステップでDDSにしてくれる
・MeshContentTask.targets・・・FBXやDAEなどをCMOにする。今回使うやつ
・ShaderGraphContentTask.targets・・・VS 2012のノードベースのシェーダエディターで作ったやつをコンパイルしてくれる

Vs2012cmo005

【Mesh Content Pipeline】の設定項目は下記ですが、出力先以外は特に設定はありません。

Vs2012cmo006

まとめと今後
とりあえず、これでCMO形式のファイルをカスタムビルドで作成できるようになりました。ひとまず、スタティックな3Dモデルデータの形式では困らなそうですね。次は、DirectXTKのモデルローダーでエクスポートしたモデルの読み込み

そういや、こういう発想はXNAあたりの経験が役立ってるんでしょうね。

それから今回のMicrosoftのドキュメントを読んでいるとVisual Studio 2012のグラフィカルなシェーダエディターで作ったシェーダをどうやって使用するかについても書かれているので、今後そちらは試していきます。

おそらく、Visual Studio 2012開発ではこのあたりの知識があればちょっとしたシェーダはHLSLを直接で記述しなくてもいかもしれません。HLSLを直接記述しない3Dアプリ開発については今後のテーマとして取り上げたいと思います。

参考:シェーダーの操作
http://msdn.microsoft.com/ja-jp/library/hh873117.aspx

« 2月 | トップページ | インフルエンザにはかかってないけども »

Programming」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« 2月 | トップページ | インフルエンザにはかかってないけども »