.obj文件转换为OpenGL模型头文件-索引和f参数?
我正在使用的OpenGL模型头文件包含以下定义:.obj文件转换为OpenGL模型头文件-索引和f参数?,opengl,header,object-files,Opengl,Header,Object Files,我正在使用的OpenGL模型头文件包含以下定义: 静态常量浮点模型顶点[NUM_OBJECT_VERTEX*3]={} static const float modelTexCoords[NUM_OBJECT_VERTEX*2]={} static const float modelnorms[NUM_OBJECT_VERTEX*3]={} 静态常量无符号短模型索引[NUM_OBJECT_INDEX]={} 括号中有一组数字(浮点数和整数,如拟合)由逗号分隔 将.obj文件的v,vt,vn转换为
静态常量浮点模型顶点[NUM_OBJECT_VERTEX*3]={}
static const float modelTexCoords[NUM_OBJECT_VERTEX*2]={}
static const float modelnorms[NUM_OBJECT_VERTEX*3]={}
静态常量无符号短模型索引[NUM_OBJECT_INDEX]={}
括号中有一组数字(浮点数和整数,如拟合)由逗号分隔
将.obj文件的v,vt,vn
转换为上述格式似乎很简单。My.obj文件还有一组f
,其中包括由/
分隔的三元组。我不确定这些参数到底是什么
我需要转换哪些参数才能得到第四个参数——模型索引
(我需要事先承认我是OpenGL的新手,如果这看起来太简单,我深表歉意!)三胞胎只是一个面部定义 如果你有 f 1 2 3 这意味着您有一个由索引1、2和3的顶点组成的三角形 如果所有条目都是这样,这意味着您可以直接用这些索引填充
模型索引
,并使用GL_三角形
绘制它们
现在,如果它们由/
分隔,这意味着您在顶点位置和纹理坐标和/或法线之间有不同的映射
这是一种方法,您可以将texcoord和normal数据分解为与vertice position数组大小相同的数组
这样做很简单:下面是伪代码:
read face data (triplets)
for each triplet
read vertex indice
read texcoord and normal indices
fetch texcoord @ texcoord indice from your vt array
store texcoord @ vertex indice in your modelTexCoords array
fetch normal @ normal indice from your vn array
store normal @ vertex indice in your modelTexCoords array
etc
另请参见维基百科的文档,该文档解释得很好。obj格式:三胞胎只是一个面部定义 如果你有 f 1 2 3 这意味着您有一个由索引1、2和3的顶点组成的三角形 如果所有条目都是这样,这意味着您可以直接用这些索引填充
模型索引
,并使用GL_三角形
绘制它们
现在,如果它们由/
分隔,这意味着您在顶点位置和纹理坐标和/或法线之间有不同的映射
这是一种方法,您可以将texcoord和normal数据分解为与vertice position数组大小相同的数组
这样做很简单:下面是伪代码:
read face data (triplets)
for each triplet
read vertex indice
read texcoord and normal indices
fetch texcoord @ texcoord indice from your vt array
store texcoord @ vertex indice in your modelTexCoords array
fetch normal @ normal indice from your vn array
store normal @ vertex indice in your modelTexCoords array
etc
另请参阅wikipedia的文档,该文档解释得很好。obj格式:hmm,所以您是说
texcoord
(用于modelTexCoords
)实际上在每个/
-三元组中重复作为顶点索引/texcoord/normal索引
?hmm,因此,基本上,vn
在modelTexCoords
的正常索引以及modelNormals
中重复。。。此外,如果f中有一组1/2/3
,则模型索引只是每个f三元组的第一个元素(在本例中为1)?是的,模型索引只是每个f三元组的第一个元素。我不明白你所说的“vn在modelTexCoords的正常索引中重复”是什么意思。我原以为obj中的vn
直接映射到modelNormals
,但是似乎vn
在modelTexCoords
中也会重复,另一件事是v
和vn
的每一行都显示三元组(用空格分隔),所以索引映射指的是行numbhmm,所以你说texCoords
(用于modelTexCoords
)实际上在每个/
-三元组中重复,如顶点索引/texcoord/normal索引
?hmm,因此基本上vn
在modelTexCoords
的normal索引以及modelNormals
中重复。。。此外,如果f中有一组1/2/3
,则模型索引只是每个f三元组的第一个元素(在本例中为1)?是的,模型索引只是每个f三元组的第一个元素。我不明白你所说的“vn在modelTexCoords的正常索引中重复”是什么意思。我原以为obj中的vn
直接映射到modelNormals
,但是,vn
似乎在modelTexCoords
中也再次重复了,v
和vn
的每一行都显示了三元组(用空格分隔),所以索引映射指的是行numb