如何处理 COLLADA 指数?
Posted
技术标签:
【中文标题】如何处理 COLLADA 指数?【英文标题】:How to handle COLLADA indices? 【发布时间】:2013-02-01 09:26:59 【问题描述】:我为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 索引。
我有一个用于顶点的内部结构,它由位置 (vec3
)、法线 (vec3
) 和 UV 坐标 (vec2
) 组成。为了绘制网格,我使用 OpenGL 的顶点缓冲区,并有一个单独的索引列表。
问题是,加载网格后我不应该有 24 个顶点吗? <p>
中的 108 个条目转换为 36 个顶点。索引有什么问题?
我可能在这里遗漏了一些非常简单的东西,但不能只是看到它。
COLLADA
文件是 here。
【问题讨论】:
【参考方案1】:好的,我找到了解决方案,只好用一个简单的飞机来理清思路。由于每个面都是一个三角形,因此最终的顶点数是 polylist 的 count 属性中描述的数量的三倍。因此,对于立方体,它是 36 - 而不是 24。最后,36 确实正确绘制了立方体。所以,主要是我的大脑发疯了。
【讨论】:
以上是关于如何处理 COLLADA 指数?的主要内容,如果未能解决你的问题,请参考以下文章
从 A-Frame 或 JS 更新 Collada (.dae) 文件代码
Three.js Collada - 在三个 js 中加载多个 Collada 对象