如何处理COLLADA指数?

man*_*eak 5 3d mesh collada indices

我为COLLADA文件格式编写了一个简单的阅读器,它似乎工作正常.现在,我有一个Blender导出的立方体网格边缘分割和三角形,所以它应该有12个三角形(每个面2个),24个顶点(每个面4个)和36个索引(每个面6个).此网格还具有普通数据和UV贴图.

COLLADA文件有24个顶点,12个法线和36个UV,所以我假设法线是每个三角形,UV是每个索引.polylist三角形的数量是12,这是正确的,并且vcount有12个'3',所以这也是正确的.现在,<p>哪个是索引列表有108个条目,其中0,3,6等是顶点索引,1,4,7等是正常索引,而2,5,8等是UV索引.

我有一个顶点的内部结构,它由position(vec3),normal(vec3)和UV坐标(vec2)组成.要绘制网格,我使用OpenGL的顶点缓冲区,并有一个单独的索引列表.

问题是,加载网格后我不应该有24个顶点吗?108个条目<p>转换为36个顶点.这里的指数有什么问题?

我可能会遗漏一些非常简单的东西,但不能只看到它.

COLLADA文件在这里.

man*_*eak 7

好的,我找到了解决方案,不得不用一架简单的飞机清除我的想法.由于每个面都是三角形,因此顶点的最终计数是polylist的count属性中描述的计数的三倍.因此,对于立方体,它是36而不是24.最后,36确实正确地绘制了立方体.所以,主要是我的大脑疯了.