我正在使用的OpenGL模型头文件包含以下定义:
static const float modelVertices[NUM_OBJECT_VERTEX * 3] = {}
static const float modelTexCoords[NUM_OBJECT_VERTEX * 2] = {}
static const float modelNormals[NUM_OBJECT_VERTEX * 3] = {}
static const unsigned short modelIndices[NUM_OBJECT_INDEX] = {}
在括号之间用逗号分隔的一堆数字(浮点数和整数,作为拟合)。
将.obj文件的v, vt, vn
转换为上述格式似乎很简单。我的.obj文件也有一堆f
个,其中包含由/
分隔的三元组。 我不确定这些参数究竟是什么......
我需要转换哪些参数才能获得第四个 - modelIndices?
(我需要事先承认我是OpenGL的新手,所以如果这看起来太基本了就道歉!)
答案 0 :(得分:1)
三胞胎只是面部定义。
如果你有 f 1 2 3
这意味着您有一个由索引1 2和3的顶点组成的三角形。
如果所有条目都是这样,那意味着您可以直接用{1}}填充这些索引,并使用modelIndices
绘制它们。
现在如果它们被GL_TRIANGLES
分开,这意味着你在顶点位置和纹理坐标和/或法线之间有不同的映射。
这是OpenGL can't handle directly,你可以将texcoord和普通数据分解成与顶点位置数组相同大小的数组。
要做到这一点是微不足道的:这是伪代码:
/
另见维基百科的文档,它解释了.obj格式:http://en.wikipedia.org/wiki/Obj