.obj文件转换为OpenGL模型头文件 - 索引和f参数?

时间:2010-10-09 01:22:47

标签: opengl header object-files

我正在使用的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的新手,所以如果这看起来太基本了就道歉!)

1 个答案:

答案 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