讓我先說我是相當新的OpenGL ES的和OpenGL一般前言本。iOS上的OpenGL ES 2.0:從ZBrush的導入導出.obj文件沒有法線
我有一個模型對象,我們的3D人從zBrush導出。它在.obj
文件中沒有任何法線,而我認爲這就是導致此行爲的原因。我使用obj2opengl來創建包含頂點和紋理座標的.h
文件,然後導入這些文件和渲染。下面是進口的樣子:
glGenBuffers(1, &mushroomVertexBufferID);
glBindBuffer(GL_ARRAY_BUFFER, mushroomVertexBufferID);
glBufferData(GL_ARRAY_BUFFER, sizeof(mushroom01b_LowVerts), mushroom01b_LowVerts, GL_STATIC_DRAW);
glGenBuffers(1, &mushroomTextureBufferID);
glBindBuffer(GL_ARRAY_BUFFER, mushroomTextureBufferID);
glBufferData(GL_ARRAY_BUFFER, sizeof(mushroom01b_LowTexCoords), mushroom01b_LowTexCoords, GL_STATIC_DRAW);
當它的時間拉攏的對象,這裏是我使用的代碼:
glBindBuffer(GL_ARRAY_BUFFER, mushroomVertexBufferID);
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 3, NULL);
glBindBuffer(GL_ARRAY_BUFFER, mushroomTextureBufferID);
glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 2, NULL);
self.effect.texture2d0.name = _mushroomTextureInfo.name;
self.effect.texture2d0.target = _mushroomTextureInfo.target;
[self.effect prepareToDraw];
glDrawArrays(GL_TRIANGLES, 0, mushroom01b_LowNumVerts);
這工作,並在那裏我已經在打開他們的模型Blender,修正法線,並用法線重新導出爲OBJ(爲第三個數組緩衝區添加上面的代碼),它看起來很不錯。但是,如果我不修改導出 - 從 - ZBrush的OBJ可言,這裏就是我得到:
現在,這是面帶glEnable(GL_CULL_FACE);
剔除啓用。如果我沒有啓用它,模型似乎是從內部渲染。
很明顯,zBrush導出以某種方式搞砸了。我的問題是如何解決它。
謝謝。我有一個請求與他們一起檢查這個盒子,我會在這裏更新它是如何發生的。 –