2

ウェーブフロントOBJファイルを(非常に簡単に)ロードして表示しようとしています。

パーサーは100%動作しています...ファイルからデータをロードし、プログラムの構造に格納します。

これが、ターゲットデータ構造に関する情報をまったく見つけることができない部分です。

頂点バッファとインデックスバッファの使用方法がわかりません。OpenGLでディスプレイリストとイミディエイトモードを使用したことがあります。

現在、Managed Direct Xを使用しようとしていますが、これに頭を悩ませることに深刻な問題があります。


私が混乱していることがいくつかあります...

1)MDXで単純なVBおよびIBオブジェクトを保存およびレンダリングする方法に関する優れたチュートリアルはありますか?

2)どの頂点フォーマットを使用する必要がありますか?OBJ仕様では、頂点にテクスチャまたは通常のインデックスが定義されていない場合、テクスチャまたは通常のインデックスを見逃す可能性があります(したがって、特定の面には通常、テクスチャ、および位置のインデックスがあり、他の面にはちょうど位置がある場合があります)。それで、CustomVertex.PositionNormalTextureに保存し、OBJで定義されていない場合は、法線とテクスチャを空白のままにしますか?

3)これは私が理解するのが最も難しいものです(おそらくVBとIBの概念を知らなかったことが原因です)。OBJ仕様では、任意の数の頂点インデックスを持つ面が許可されています(私のサンプルファイルにはあります)。基本的に、顔は次のように定義できます。

f 1/1 2/2 3/3 4/4 5/5 6/6 7/7 8/8 9/9 10/10

問題は、どうすればそれをレンダリングできるかということです。それは三角ストリップ、ポリゴンなどですか?


別の方法として、これを行うための既存のソリューション(OBJ自体または既に作成されたプラグインを介してロードできるC#上の非常に軽量で十分に文書化された3Dシステム)を誰かが知っている場合も同様です。

Mogreが出て、そのような貧弱なドキュメントは笑える(Wiki情報が正しくない、ドキュメントの不整合など)

私はIrrlichtを試しましたが、これは私が来た中で最も近いものです。OBJローダーが組み込まれているので便利です(そして、他のビルド済みOBJビューアーの90%のような例外をスローしません(これは、頂点面の任意の数によるものだと思います。ほとんどのパーサーは、最大3または4)Irrlichtの唯一の問題はA.)OBJファイルにテクスチャを適用する方法がわからない、B。)コントロールにテクスチャをレンダリングする方法がわからないフォーム全体よりも(コントロールに埋め込まれた3Dビューポートを備えたウィンドウフォームUIが必要)。

Irrlichtの問題のいずれかを解決できれば、それも受け入れられる答えです。

編集:また、OBJからはるかに使いやすい別の3D形式に変換するために使用できるC#ライブラリまたは非常に小さなコマンドライン.exeを知っている場合は、それも知りたいと思います。

4

0 に答える 0