2017-01-11 9 views
1

私はWavefrontオブジェクトファイルからインデックスバッファを作成する方法を理解するのに苦労しています。私はこれらのうち、三角形を構築するための適切な方法を認識するにはどうすればよい.objの面からインデックスバッファを派生させるには?

f 1 2 3 4 
f 2 3 4 5 

:私は、顔のような、頂点の任意の数で構成され得ることを理解できますか?

答えて

2

あなたはOBJファイルを見ると、顔の定義は次のようなものを見て:

f 1//1 2//2 3//3 

すべての線Fで始まる(エース)インジケータが1つのプリミティブを定義します。この場合、空白で区切られた3つのセクションが存在します。各セクションは単一の頂点を定義します。顔あたりこれらのセクションが3つある場合、顔は三角形でなければならないことがわかります。それが4の場合、顔はクワッドです(このフォーマットは今日ではあまり一般的ではありませんが)。あなたがここにslahesで区切られた3つの整数を参照してください

[vertex]/[texture]/[normal] 

:フォームを持っている

1/1/1 

:単一頂点の定義を見てみると

。各整数はインデックスを参照し、その値はOBJファイルで定義されています。ただし、これらのインデックスは1インデックスではありません。 Cなどの0で索引付けされた言語の場合は、すべての索引から1を減算する必要があります。

OpenGLは本当にユニークな頂点(つまり、同じ頂点座標、テクスチャ座標、法線)しかレンダリングできないため、コンパクトなインデックスバッファを生成するのはやや難解で、以前に見た頂点を確認する必要があります。より簡単なアプローチは、0から数えてインデックスバッファを作成し、ジオメトリバッファ内のすべての面のすべての頂点に別々の頂点を作成することです。

関連する問題