我使用Blender創建.obj文件,然後嘗試編寫自定義分析器來讀取文件並創建網格。我有幾個問題。我的例子是使用攪拌機的立方體,但我想擴展我的問題超出立方體。.obj文件triangle_fan或三角形
當我創建攪拌機一個立方體,並保存爲一個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);
}
如何填充我的索引緩衝區和頂點緩衝區以便能夠繪製此多維數據集。我可以在一個「drawElements」函數中擁有所有頂點,還是必須按三角形做三角形? .obj文件是否會使四個以上的頂點成爲一張臉? (如二維五角大樓或六角形?)如果是這樣,我將如何繪製這些? .OBJ文件是否使用Triang風扇或條帶?
謝謝!
有道理....那麼我怎麼解釋.obj文件中提供給我的索引緩衝區?他們將面部列爲一組4個指數而不是6個(6是構成面部的兩個三角形) – Matthew
f 2 1 5 6 - 您可以將其解釋爲兩個三角形(2,1,5)和(1 ,5,6)。不知道排序是否正確。然後將這兩個三角形加載到緩衝區中。只要它們創建一個凸多邊形,obj格式就可以有任意數量的頂點。這取決於你如何加載。在這種情況下,您可能會使用三角風扇,但您會有很多OpenGL API調用(從風扇切換到三角形等)。擁有一個大三角形緩衝區並在一個API調用中渲染會更快。 – Eiver