Blenderを使用して.objファイルを作成してから、ファイルを読み込んでメッシュを作成するカスタムパーサーを作成しようとしています。少し質問があります。私の例はblenderのキューブを使用していますが、質問をキューブを超えて拡張したいと思います。
Blenderでキューブを作成し、それを.objファイルとして保存すると、次のようになります...
# Blender v2.63 (sub 0) OBJ File: ''
# www.blender.org
mtllib cube.mtl
o Cube_Cube.001
v -0.911915 -0.851241 1.196067
v -0.911915 -0.851241 -0.803933
v 1.088085 -0.851241 -0.803933
v 1.088085 -0.851241 1.196067
v -0.911915 1.148759 1.196067
v -0.911915 1.148759 -0.803933
v 1.088085 1.148759 -0.803933
v 1.088085 1.148759 1.196067
usemtl
s off
f 2 1 5 6
f 6 7 3 2
f 7 8 4 3
f 1 4 8 5
f 1 2 3 4
f 8 7 6 5
そして、私のメッシュレンダリング方法は次のようになります。
@Override
public void draw(GL10 gl)
{
super.draw(gl);
gl.glColor4f(255, 0, 255, 150);
gl.glFrontFace(GL10.GL_CCW);
gl.glEnable(GL10.GL_CULL_FACE);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3,GL10.GL_FLOAT,0,vertexBuffer);
gl.glDrawElements(GL10.GL_TRIANGLE_FAN,vertexBuffer.array().length,GL10.GL_UNSIGNED_SHORT,indexBuffer);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisable(GL10.GL_CULL_FACE);
gl.glColor4f(255, 255, 255, 255);
}
このキューブを描画できるようにするには、インデックスバッファと頂点バッファにデータを入力するにはどうすればよいですか。1つの「drawElements」関数にすべての頂点を含めることはできますか、それとも三角形ごとに行う必要がありますか?.objファイルで4つを超える頂点が面になることはありますか?(2Dペンタゴンまたはヘキサゴンのように?)もしそうなら、私はそれらをどのように描くでしょうか?.OBJファイルはTriangファンまたはストリップを使用しますか?
ありがとう!