2

私はOpenGLが初めてです。JOGLを使って遊んでいます。私はこのモデルを使用しています。

ウィンドウに正常にレンダリングしています。ただし、テクスチャ/マテリアルを適用したいと思います。これを行う方法が完全にはわかりません。

.obj ファイルから:

f 6307/4525/3 6303/4524/3 6327/4523/3 6315/4526/3
usemtl kahki_light_pave_W.png
f 6445/3470/305 6437/4623/305 6593/4624/305 6597/4625/305
f 6594/4626/306 6438/4627/306 6446/4628/306 6598/4629/306
f 6595/4630/307 6439/4631/307 6447/4632/307 6599/4633/307
f 6448/3482/308 6440/4634/308 6596/4635/308 6600/4636/308

ウィキペディアによると、ステートメントの後usemtlと次のステートメントの前はすべてusemtlを使用することになっていますkhaki_light_pave_W.png。ただし、OpenGL でこれを行う方法がわかりません。

ファイルの上部に一連の頂点が定義されています。

v 19.886690 3.093822 -21.149584
v 23.886690 3.093822 -21.149584
vt 0.918121 0.920883
vt 0.918121 0.959193
vt -0.537323 1.541370
vt -0.537323 1.503060
vt 0.462677 0.503060

vtテクスチャに頂点を使用する必要がありますか? fステートメントにはインデックスが含まれます。これらの指標はv頂点 、vt、またはその両方ですか?

4

2 に答える 2

2

tl;dr:vtエントリは、テクスチャ座標とfエントリ インデックス (1 ベース!) を 3 つの個別の配列 ( vvt、およびvn) に指定します。

仕様の「頂点データの参照」セクションから:

すべての要素について、ジオメトリ頂点、テクスチャ頂点、頂点法線、およびパラメータ空間頂点を識別するために参照番号が使用されます。

これらのタイプの頂点には、1 から始まる番号が個別に付けられます。これは、ファイル内の最初のジオメトリ頂点が 1、2 番目が 2 というように続くことを意味します。ファイル内の最初のテクスチャ頂点は 1、2 番目は 2 などです。番号は、ファイル全体で順番に付けられます。多くの場合、ファイルには頂点データの複数のリストがあります。この番号付けシーケンスは、頂点データが他のデータによって分離されている場合でも継続します。

ファイル内の最初のリストの先頭から頂点をカウントするだけでなく、ファイル内の要素の位置から頂点をリストの逆方向にカウントすることもできます。要素からリストを数え上げると、参照番号は負になります。-1 の参照番号は、要素のすぐ上の頂点を示します。-2 の参照番号は、上記の 2 つの参照を示します。

于 2010-09-17T20:26:34.550 に答える
0

LWJGL を使用してモデルを表示するサンプル モデル ビューアーと一緒に OBJ ファイル ローダーを作成しました。LWJGL は JOGL に似ていますが、まったく同じではありません。(私は JOGL と LWJGL の両方を使用しました。実際、最近 JOGL から LWJGL に切り替えました。)

コードをできるだけクリーンでシンプルにするように努めました。残念ながら、カスタム シェーダーではなく Fixed Function Pipeline を使用するという点で「時代遅れ」ですが、基本に役立つ有益な情報になることを願っています。あなたはそれを見つけることができます;

http://darksleep.com/oObjLoader/

于 2011-12-19T04:51:50.717 に答える