我为COLLADA
文件格式编写了一个简单的阅读器,它似乎工作正常。现在,我有一个Blender导出的立方体网格边缘分割和三角形,所以它应该有12个三角形(每个面2个),24个顶点(每个面4个)和36个索引(每个面6个)。此网格还具有普通数据和UV贴图。
COLLADA
文件有24个顶点,12个法线和36个UV,所以我假设法线是每个三角形,而UV是每个索引。三角形的polylist
计数是12,这是正确的,而vcount
有十二个'3',所以这也是正确的。现在,作为索引列表的<p>
有108个条目,其中0,3,6等是顶点索引,1,4,7等是正常索引,2,5,8等是UV索引
我有一个顶点的内部结构,它由位置(vec3
),法线(vec3
)和UV坐标(vec2
)组成。要绘制网格,我使用OpenGL的顶点缓冲区,并有一个单独的索引列表。
问题是,加载网格后我不应该有24个顶点吗? <p>
中的108个条目转换为36个顶点。这里的指数有什么问题?
我可能会遗漏一些非常简单的东西,但不能只看到它。
COLLADA
文件为here。
答案 0 :(得分:7)
好的,我找到了解决方案,不得不用一架简单的飞机清除我的想法。由于每个面都是三角形,因此顶点的最终计数是polylist的count属性中描述的计数的三倍。因此,对于立方体,它是36而不是24.最后,36确实正确地绘制了立方体。所以,主要是我的大脑疯狂。