3

OpenGLES2.0を使用してAndroidアプリケーションを開発しています。

Blender2.49bで作成されたエクスポートをWavefrontOBJ形式でロードしたいと思います。verxtexの位置、法線、テクスチャを特定しました。

glDrawElements(GLenumモード、GLsizeiカウント、GLenumタイプ、const GLvoid * indexs)を使用してメッシュを描画したいのですが、WavefrontOBJファイルから最後のパラメーターであるインデックスを取得する方法がわかりません。

私が探している「指標」に直面していますか?

私はこれをフォーラムで見つけました:faces = 1で始まるインデックス!

「1から始める!」の意味は何ですか?

ありがとう。

4

2 に答える 2

4

これは、最初のインデックスがゼロではなく1であることを意味します。Java / C配列/コレクションはゼロベースのインデックスを使用し、最初の要素はゼロで始まります。WavefrontOBJ形式のインデックスは1で始まります。

面は、インデックスである3つの値v / vt/vnで構成されます。インデックスはファイル形式で直接指定されません。代わりに、ファイル内でv、vt、vn要素が出現する順序です。したがって、ファイルを解析するときは、遭遇した頂点、頂点テクスチャ、および頂点法線の数を追跡する必要があります。

フォーマットの詳細については、仕様を参照してください。

http://www.martinreddy.net/gfx/3d/OBJ.spec

于 2010-12-03T14:49:01.613 に答える
0

wavefront.obj形式のインデックスはありません。ファイルからメッシュデータをロードするときにインデックスを指定するのはあなたです。私がすることは:

iterate per face:
    iterate every vertex of a face
        assign index here when you store the data to your own project's vector

言い換えれば、これらの行のそれぞれについて:

f 3/55/23 34/2/12 34/43/128
f ...

属性のトリプルごとに、新しい頂点(頂点バッファーに格納される)と新しいインデックス(インデックスバッファーに格納される)が導入されます。

于 2020-08-06T02:39:33.617 に答える