1

私が使用している OpenGL モデル ヘッダー ファイルには、次のような定義が含まれています。

static const float modelVertices[NUM_OBJECT_VERTEX * 3] = {}

static const float modelTexCoords[NUM_OBJECT_VERTEX * 2] = {}

static const float modelNormals[NUM_OBJECT_VERTEX * 3] = {}

static const unsigned short modelIndices[NUM_OBJECT_INDEX] = {}

ブラケットの間にカンマで区切られた一連の数字(適切な浮動小数点数と整数)がある場所。

.obj ファイルv, vt, vnを上記の形式に変換するのは簡単に思えます。f私の .obj ファイルには、 で区切られたトリプレットを含む の束もあ​​ります/これらのパラメーターが正確に何であるかはわかりません...

4 番目の modelIndices を取得するには、どのパラメーターを変換する必要がありますか?

(私は OpenGL の初心者であることを前もって認める必要があるため、これが初歩的すぎると思われる場合は申し訳ありません!)

4

1 に答える 1

1

トリプレットは単なる顔の定義です。

f 1 2 3 の場合

これは、インデックス 1 2 および 3 の頂点で構成される三角形があることを意味します。

modelIndicesすべてのエントリがそのようなものである場合、それらのインデックスを に直接入力し、 を使用して描画できることを意味しますGL_TRIANGLES

この方法でそれらが分離されている場合/、頂点の位置とテクスチャ座標および/または法線の間のマッピングが異なります。

これはOpenGL が直接処理できないものであり、texcoord と法線データを頂点位置配列と同じサイズの配列に分解する方法があります。

これを行うのは簡単です: ここに疑似コードがあります:

read face data (triplets)
for each triplet
   read vertex indice
   read texcoord and normal indices
   fetch texcoord @ texcoord indice from your vt array
   store texcoord @ vertex indice in your modelTexCoords array
   fetch normal @ normal indice from your vn array
   store normal @ vertex indice in your modelTexCoords array

   etc

.obj 形式についてよく説明しているウィキペディアのドキュメントも参照してください: http://en.wikipedia.org/wiki/Obj

于 2010-10-09T01:37:35.917 に答える