COLLADA (.dae) 3D模型的XML格式是什么

DAE文件是遵循COLLADA XML Schema的结构化文本文件,以层级化、可引用的XML元素组织3D资产,核心包含asset元信息、library_geometries几何定义、library_visual_scenes场景图、library_controllers蒙皮及animation动画数据,本质为“带语义的XML描述文档”。

标签是 DAE 文件的根元素,整个文件是一个符合 COLLADA XML Schema 的标准文本文件。它不是任意写的 XML,而是严格遵循由 Khronos Group 定义的结构规范(如 ISO/PAS 17506),用层级化、可引用的 XML 元素来组织 3D 场景的各类资产。

DAE 文件本质是“带语义的 XML 描述文档”,不直接存储原始二进制几何数据,而是通过文本数组 + 语义标签(semantic)指明数据用途,再靠引用关系把几何、材质、动画等模块串联起来。

DAE 的核心 XML 结构组成

  • 包含元信息:作者、单位、坐标轴方向(如 `Y_UP`)、创建时间等,是整个文件的“说明书头”。
  • 存放模型形状数据。每个 `` 内含 ``,其中: - `` 定义顶点坐标、法线、UV 坐标等数组(用 `` 存数值,`` 指定步长 stride) - `` 关联位置与法线等输入源 - `` 或 `` 用索引(`

    ` 标签内数字序列)描述面结构,每个数字指向对应 `` 中的数据项

  • `` 引用 ``,而 `` 用 `` 定义着色参数(如 `` 链接纹理图像或指定颜色),支持 PNG/JPG 等外部贴图路径(``)
  • 构建场景图(scene graph):用 `` 嵌套表示层级关系,每个 `` 可含 `` 变换、`` 引用几何体、`` 绑定骨骼动画
  • 存储蒙皮信息:`` 指向骨骼 ``,`` 记录每个顶点受哪些关节影响及权重索引
  • 动画数据以关键帧形式组织:`` 下有 `` 存时间(`INPUT`)和变换矩阵(`OUTPUT`),`` 关联二者,`` 将采样结果绑定到具体关节的 `` 属性上

为什么用 XML 而不是纯二进制

  • 人类可读:打开 .dae 文件能看到清晰的标签结构,便于调试、手动修改或自动化解析
  • 强扩展性:新特性可通过新增 标签嵌入,不影响旧软件读取主干内容
  • 跨平台互操作:不同软件按同一 Schema 解释,避免格式私有化导致的交换障碍
  • 但代价是体积大、加载慢——所以实际工作流中,DAE 常作为中间交换格式,最终发布时转为 glTF 或 FBX

实际 XML 片段示意(简化)


  
    Y_UP
  
  
    
      
        
          0 0 0 1 0 0 0 1 0
        
        
        

0 1 2

这个结构让 DAE 成为真正意义上的“3D 场景说明书”,而不是模型本身的数据快照。