glTF二进制 (.glb)
ISO/IEC 标准二进制 glTF (GLB) 是 glTF 2.0 标准的自包含单文件二进制打包格式,在基于网络的 3D 图形、增强现实 (AR) 和实时游戏引擎中被广泛誉为"3D 领域的 JPEG"。
将 GLTF 转换为 GLB
免费的浏览器端 GLTF 转 GLB 转换器。在您的设备上即时转换文件。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 GLB 文件:
字节级文件头签名 (Magic Bytes)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 GLB 文件:
十六进制签名 (偏移量 0):
67 6C 54 46ASCII 表示形式: glTF
标准化: ISO/IEC 12113:2022 / Khronos Open Standard
技术规格
| 容器架构 | 12-byte binary header ('glTF', version, length) followed by JSON chunk (CHUNK 0) and binary buffer chunk (CHUNK 1) |
| 压缩方式 | DRACO mesh geometry compression, KHR_texture_basisu (KTX2/Basis Universal GPU textures), and ExtMeshopt |
| 字节序 | Little-Endian (Intel x86 / WebGL standard) |
| 色彩空间 | sRGB textures, Linear PBR roughness/metallic channels |
| 通道与结构 | PBR materials (Metallic-Roughness), skinned skeletal meshes, morph targets, animations, cameras, and lights |
| 最大尺寸 | Unbounded vertex and triangle count (supports multi-gigabyte models) |
| 透明度 | Alpha coverage (MASK), alpha blending (BLEND), and volumetric transmission |
| 流式传输与渐进式加载 | Single self-contained file with binary offset tables for direct GPU VBO loading |
技术对比矩阵:GLB 对比同类产品
| 技术属性 | GLB (当前) | GLTF | USDZ | FBX |
|---|---|---|---|---|
| 打包模型 | 单个自包含二进制文件 | JSON + 外部 .bin 和纹理文件 | USD 架构和纹理的 ZIP 存档 | 专有 Autodesk 二进制/ASCII |
| 网页与 AR 标准 | 通用 WebGL 和 Android AR 标准 | 通用 WebGL 标准(多文件) | 苹果 iOS Quick Look AR 标准 | 桌面游戏引擎导入标准 |
| 材质模型 | 标准化 glTF PBR 金属-粗糙度 | 标准化 glTF PBR | 通用 Pixar PBR 材质架构 | 专有 Phong/Lambert/PBR 着色器 |
| GPU 读取性能 | 即时(直接内存映射) | 快(多个网络请求) | 快(未压缩的 ZIP 条目) | 慢(需要复杂的解析) |
常见损坏模式与十六进制恢复指南
3D 模型渲染时缺少纹理或显示为纯黑色表面。
根本原因: 嵌入的纹理块损坏或缺少 PBR 金属-粗糙度纹理引用。
恢复方法: 使用 File2File 3D Converter 或 glTF-Transform 检查并修复块偏移量。
安全分析与解析器攻击向量
GLB 解析器处理 JSON 文本块以及任意二进制缓冲区,如果缓冲区长度不匹配,可能会触发缓冲区溢出。
已知攻击向量
- 当 bufferView byteOffset + byteLength 超过二进制块长度时发生缓冲区越界读取。
- 在 WebGL drawElements 执行期间发生越界顶点索引读取。
- 通过病态的 Draco 解压缩循环导致拒绝服务。
防御性最佳实践:
历史渊源与里程碑
2022glTF 2.0 和 GLB 被 ISO/IEC 国际标准化为 ISO/IEC 12113:2022。
2018谷歌采用 GLB 作为 Android Scene Viewer 和网页 <model-viewer> AR 体验的标准 3D 格式。
2015科纳斯组织 (Khronos Group) 推出 GLB,作为 glTF 生态系统的单文件二进制容器。
核心优势与特点
- 完全自包含:将 3D 几何体、PBR 材质、纹理(PNG/JPEG/KTX2)和骨骼动画打包到一个文件中。
- 直接上传 GPU:二进制几何缓冲区与 WebGL / Vulkan 内存布局匹配,零 CPU 解析开销。
- WebGL、WebGPU、电商 3D 产品预览以及移动端增强现实无可争议的标准。
技术局限与劣势
- 二进制特性使得如果没有专用的 3D 工具,很难进行手动文本检查或编辑。
- 使用高级压缩扩展时,需要 Draco 或 Basis Universal 解压缩库。
- 苹果平台倾向于将 USDZ 用于原生 iOS Quick Look AR,需要从 GLB 进行格式转换。
趣味技术冷知识
- 每个 GLB 文件的前 4 个字节是 0x67 0x6C 0x54 0x46,其 ASCII 码拼写为"glTF"。
- 在智能手机网页浏览器上查看 3D 运动鞋时,您几乎肯定在查看交互式 GLB 模型。
- GLB 的设计专门允许图形硬件直接将顶点缓冲区从磁盘读入 VRAM,而无需任何转换。
常见技术问题
glTF 和 GLB 有什么区别?
glTF 是一个引用外部 .bin 几何图形和独立图像纹理文件的 JSON 文件。而 GLB 则将整个包打包成一个紧凑的二进制文件。
如何将 GLB 转换为 Apple AR 的 USDZ?
您可以直接在网页浏览器中使用 File2File.app,一键将 GLB 模型转换为 Apple 就绪的 USDZ 文件。
我可以在 Blender 中打开 GLB 文件吗?
可以。Blender 在软件内部内置了原生、高性能的 glTF/GLB 导入和导出功能。