フォト

Google AdSense


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

« FBX描画サンプルのコード | トップページ | GRとEye-Fi Mobi »

2013.06.16

FBX描画サンプルについていくつかのFAQ

そういや、いくつか想定質問と回答。すぐ思いつくネタ。

Q.2つのクラスの関係について質問
A.CFBXLoaderはFBXから頂点データ、マテリアルデータ、テクスチャ情報などを格納するクラスです。このクラスが保持するデータはDirect3D、OpenGLなどの環境に依存しません。内部では、FBX内のノード単位で管理しています。階層構造にも対応してるのでノードの親子関係などもわかるようになっています。

CFBXRenderDX11は、CFBXLoaderで読み取ったデータからDirect3D11の頂点バッファやインデックスバッファ、マテリアルデータのConstant Buffer化やShaderResourceViewなどを作ります。今回は、頂点座標、法線、テクスチャ座標、が1つずつ。CFBXLoaderではマルチUV対応ですが、こっちでは使っていません。対応コードを書けばいけます。

CFBXLoaderは環境非依存なので、CFBXRenderDX11に当たる部分をOpenGLで書くとかすればOpenGLデモ使えると思います。

Q. どんなデータの読み取りができるの?
A.頂点座標、法線、テクスチャ座標に対応。複数のテクスチャ座標があっても読めますが、Direct3D側の頂点バッファ作る部分は1つの座標しか対応していません。

Q. マテリアル対応してるの?
A. してます。LambertとPhong対応です。

Q.TANGENTとBINORMALは?
A.非対応ですが、FBX的には格納できるので拡張すれば行けると思います。

Q.三角形メッシュ以外の対応は?
A.三角形じゃないものは内部でコンバートします。読み込み時が四角形でも、ロード時に三角形化します。

Q.座標系は?
A.DirectX系ですが、内部で他の座標系だった場合変換してます。Y-upですがデータがZ-upの場合は内部で変換します。

Q.描画が効率的でない
A.FBXのノード単位で管理・描画してるので。マテリアルが一緒ならDrawCallをマージすべきですが、そのままのデータ構造で行くことを目指してるので手をつけてないです。

Q.アニメーションやBlendShape対応は?
A.そのうちやりたいけど未対応。

Q.データがおかしいのかソースがおかしいのかジオメトリや階層構造がおかしく描画される
A.該当のデータを下記から手に入るFBX Converterで表示してみてください。このツールは、Autodesk製なのでこれで正しく表示されたらこのサンプルのコードがおかしくて、このツールで正しく出ない場合にはデータがおかしいか作り方が悪いと言うことになると思います。

http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=10775855

Q.Win 7 + Visual Studio 2010とDirectX SDK June 2010でビルドしたい。
A.対応プロジェクトはこちらで用意しませんが。いくつかの手順を踏むとビルドできると思います。

FBX SDKはFBX SDK 2014.1 VS 2010 を手に入れてください。

http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=10775847

ソースコード内のDirectXMathを使ってる部分はXNAMathに変えてください。DirectXMathとXNAMathは基本同じなのですが、DirectXMathはnamespace DirectXを使っているのでその記述を削除してください。

Visual Studio 2010上でインクルードやライブラリパスを変更してください。

« FBX描画サンプルのコード | トップページ | GRとEye-Fi Mobi »

Programming」カテゴリの記事

コメント

コメントを書く

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

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

« FBX描画サンプルのコード | トップページ | GRとEye-Fi Mobi »