GLB 格式(3D 传输)
GLB(GL Transmission Format Binary)是 glTF 2.0 标准的单文件封装格式,由 Khronos Group 于 2017 年制定。采用二进制编码整合 3D 模型网格、材质贴图、骨骼动画和 PBR 渲染数据,支持 Draco 压缩算法,体积比 OBJ 小 60%,被 Microsoft 3D Viewer 和 Unreal Engine 广泛采用。
格式简介
GLB 是 glTF(GL Transmission Format)的二进制版本,将 glTF 的 JSON 描述文件和所有资源(纹理、几何体等)打包成单个二进制文件。GLB 格式专为高效传输和加载 3D 内容而设计,是 Web 3D 和移动应用的标准格式。
GLB 文件扩展名为 .glb,MIME 类型为 model/gltf-binary。GLB 格式由 Khronos Group 制定,是开放标准。
技术特点
核心特性
- 单文件格式:所有资源打包在一个文件中
- 二进制编码:高效的二进制格式
- PBR 材质:支持基于物理的渲染
- 动画支持:支持骨骼动画和变形动画
- 压缩支持:支持 Draco 几何压缩
- Web 优化:专为 Web 传输优化
GLB vs glTF
- GLB:单文件二进制格式
- glTF:JSON + 外部资源文件
- 体积:GLB 通常更小(二进制编码)
- 加载:GLB 加载更快(单文件)
支持的功能
- 几何体:网格、顶点、索引
- 材质:PBR 材质、纹理
- 动画:骨骼动画、变形动画
- 场景图:节点层次结构
- 相机:相机定义
文件结构
GLB 文件的基本结构 :
[GLB 头] # 12 字节
- 魔数(4 字节):glTF
- 版本(4 字节)
- 总长度(4 字节)
[JSON 块] # JSON 描述数据
- 块长度(4 字节)
- 块类型(4 字节):JSON
- JSON 数据(可变长度)
[二进制块] # 二进制资源数据
- 块长度(4 字节)
- 块类型(4 字节):BIN
- 二进制数据(可变长度)