2

現在、黒い画面上で回転したり移動したりできる座標を書き込んで描いた3Dキューブがあります。これで、 「3Ds Max」で作成したモデルができました(これは高い石垣のある小さな裏庭なので、ワールドオブジェクトとして使用しようとしています)。このモデルをDirectX9 /C++プロジェクトにロードします。 DirectX SDKの例で見る限り、このコードは.Xモデルをロードするためのものです(この種の拡張機能をエクスポートするには、「3DsMax」のプラグインが必要です。これはわかりません)。

.XファイルをDX9/C ++にロードするためのコード:

D3DXLoadMeshFromX( "Tiger.x", D3DXMESH_SYSTEMMEM, 
            g_pd3dDevice, NULL, &pD3DXMtrlBuffer, NULL,
            &g_dwNumMaterials, &g_pMesh )

オブジェクトをロードするための「D3DXLoadMeshFromOBJ(.....)」のような関数はありますか?.OBJファイルをロードしてレンダリングするにはどうすればよいですか?8(

私のもう1つの質問は、 .Xファイルと.OBJファイルの違いは何ですか?どちらを使用すればよいですか?

4

2 に答える 2

4

ちなみに、DirectXはそのままの状態でwavefrontオブジェクトファイルをサポートしていません。そのためには、外部メッシュローダーが必要になります。

DX 10 SDKは.objファイルをロードする方法のサンプルであり、サンプルはMeshFromOBJ10と呼ばれていると思います。DirectX9で使用できるかどうかはわかりません。

私の知る限り、標準の.xは基本的なメッシュをサポートしているだけで、アニメーションなどの拡張機能はありません。グラフィカルプログラミングを試してみたい場合は悪くありませんが、より高い概念を目指している場合は、後で切り替えることができます。ここで.objファイルの利点を調べることができると思います。

使用している入力データの抽象化を作成することは常に良い考えです。たとえば、クラスとそれから派生AbstractMeshする実装を作成できます。XMesh後で、または同様のものの他の実装を追加することができますOBJMesh

私はあなたを少し助けることができると思います:)ハッピーコーディング!

于 2011-06-06T09:56:43.010 に答える
1

アニメーションはxファイル形式で完全にサポートされており、さらに、シェーダーを使用する場合はfxファイルをサポートしています。このページからダウンロードできるエクスポータープラグインとサンプル:

http://www.cgdev.net/download.php

于 2013-04-01T13:49:38.057 に答える