Collada(.dae)文件是结构清晰的XML文档,以“3D说明书”形式描述场景:1. 存顶点/法线/UV及三角面索引;2. 与分离声明材质与渲染参数;3. 构建节点树与层级变换;4. 处理蒙皮权重绑定;5. 按关节存储时间-变换采样数据。
Collada(.dae)文件本质就是标准XML文档,结构清晰、层级分明,用人类可读的标签描述整个3D场景——不是直接存海量顶点二进制数据,而是像一份“3D说明书”,告诉软件:模型长什么样、用什么材质、怎么动、谁控制谁。
*DAE文件的核心结构由多个 `
每个库负责一类信息,彼此通过ID引用关联,不重复、不嵌套混乱:
存几何体定义,比如一个立方体的顶点坐标、法线、UV贴图坐标。数据常以 存数组,再用 和 描述如何读取(如 stride=3 表示每3个数是一组XYZ)。三角面则用 + 列出顶点索引。
和
材料(如“红色塑料”)在这里声明,但真正渲染参数(漫反射色、纹理路径)写在 里,通过 指定OpenGL或CG等profile。纹理图名通常出现在 或 标签中。
场景树的根。包含 节点,每个节点有 id、name、type(如 JOINT 或 NODE),以及 变换或 / 等元素。父子关系靠嵌套 实现,骨骼层级就靠这个组织。
蒙皮绑定的核心。里面 指向几何体和骨骼, 列出所有关节ID, 给每个顶点配权重索引——哪个关节影响它、影响多少,全靠这里查表。
动画数据按关节拆分。每个 包含 : 是时间序列(float_array), 是对应时刻的变换矩阵(或平移/旋转分量)。插值方式(LINEAR、BEZIER)也在 里标明。
一个最小可行片段示意(简化版)
Z_UP -1 -1 -1 1 -1 -1 ... 0 1 2 2 1 3 ...
注意几个实际细节
# 引用,比如 url="#box-geom" 指向上面定义的geometry。 改为Y-up(常见于Blender导出)。 是局部空间变换,蒙皮计算时要乘上 bind pose 的逆矩阵(即 和 的组合逻辑)。基本上就这些。它不追求存储效率,胜在结构透明、易调试、跨工具兼容强。