質問

FBXファイルから3Dモデルをインポートする際に問題が発生しました。

ソースモデルには575個のオブジェクトと1台のカメラが含まれており、次のようになります。 http:// habreffect .ru / files / 23d / 542fa7f67 / source_model.png

コンテンツパイプラインモデルで準備されたXNAには、82個のメッシュと576個のボーンが含まれています。 したがって、モデルを描画すると、ソースモデルの一部しか表示されません。次のような結果の画像: http://habreffect.ru/files/28a/6e61c0215/Result_view.png

私の描画コード: ジェネラコディセタグプレ

XNAのモデルインスタンスで575メッシュすべてを取得するにはどうすればよいですか?

ありがとう!

UPD FBXモデルを3dsmaxにインポートし、すべてのメッシュを選択して、[選択したエクスポート]を使用しようとしました。結果のFBXファイルは11倍大きくなります。次に、それをコンテンツとしてXNAプロジェクトに追加します。ロードされたモデルには、575メッシュすべてが含まれ、正しくレンダリングされます。

残念ながら、この手動変換方法は私には適していません。可変リポジトリからさまざまなfbxモデルをレンダリングする必要があります。

では、XNAコンテンツプロセッサに「適している」FBXファイルはどれですか(私はXNA 4を使用しています)?

役に立ちましたか?

解決

つまり、 MSDN でFbxImporterが2006.11バージョンのFBX形式で動作するように設計されていることがわかりました。

最近、オートデスクは FBX Converter 2012.1 をリリースしました。 FBX Eplorer、FBXViewerなどの他のツールが含まれています。

FBXエクスプローラーはFBXファイルの構造を表示でき、3DMAXファイルからエクスポートされたものとソースFBXファイルを比較します。それらは異なる内部フォーマットを持っています。次の変換を試みました:FBX-> Collada-> FBX、および結果のFBXファイルには、MAXデータ構造からエクスポートされたものと同様のものが含まれています。

つまり、結果のFBXをXNAアプリのコンテンツに追加するだけで、うまくレンダリングされます:)

これを機能させるもう1つの方法は、Autodesk FBX SDKを使用してモデルを手動で読み取り、XNAで描画することです。

結論

  1. XNA FbxImporterの正しい動作は、FBXファイルのバージョン(2006、2011など)および形式(バイナリ、ASCII)に依存しません。内部FBXデータ構造ははるかに重要です。
  2. XNA ImporterでFBXを「読み取り可能」にするには、FBX-> Collada-> FBX のような二重変換を使用できます。
  3. FBX SDKを使用して、FBXからデータを手動で読み込むこともできます

他のヒント

最新の3dxmax 2012で3dモデルを開き、.fbx形式でエクスポートします。この.fbxは、xnaモデルローダーで適切にロードされます。エクスポート中にリソースを埋め込むこともできるので、XNAを介してテクスチャを追加する必要はありません。

3DSMAXでインスタンス化を使用しています。これはXNAでは直接サポートされていません。 インスタンスボーンごとにメッシュを自分で描画する必要があります。 理想的には、代わりにDirectXインスタンス化を使用して、1回のDraw()呼び出しでボーンごとに1回各メッシュを描画します。 ただし、ボーンをインスタンスの頂点に変換することにより、独自のコードをロールする必要があります。 デフォルトでは、XNAは最も基本的な操作のみをサポートします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top