我正在使用 Blender 创建 .obj 文件,然后尝试编写自定义解析器来读取文件并创建网格。我有几个问题。我的示例是使用搅拌机中的立方体,但我想将我的问题扩展到立方体之外。
当我在搅拌机中创建一个立方体并将其保存为 .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
而我的Mesh渲染方法是这样的......
@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);
}
如何填充我的索引缓冲区和顶点缓冲区以便能够绘制这个立方体。我可以将所有顶点都放在一个“drawElements”函数中,还是必须逐个三角形地完成?.obj 文件是否会使一个面超过四个顶点?(比如二维五边形或六边形?)如果是这样,我将如何绘制它们?.OBJ 文件是否使用 Triang 扇形或条形?
谢谢!