GLB转glTF转换器
将 GLB 转换为 glTF,可把单个二进制容器解包为独立的文本和资源文件,方便开发人员编辑纹理和 3D 几何代码。
格式比较与技术规格
| 规格 | GLB | GLTF |
|---|---|---|
| MIME 类型 | model/ | model/ |
| 类型 | 自包含二进制 3D 容器 | 运行时 3D 资产传输 |
| 压缩 | 二进制打包的 JSON、缓冲区和纹理 | 无损 JSON 清单 + 外部二进制缓冲区 |
| 标准规范 | Khronos glTF 2.0 二进制容器 | Khronos glTF 2.0 规范 |
| 魔数文件头 (Magic Bytes) | 67 6C 54 46 02 00 00 00 (glTF version 2 binary container) | 7B 22 61 73 73 65 74 22 ({"asset" JSON root) |
格式概述与应用
GLB 格式将 3D 场景、动画、材质和纹理打包到一个整洁的二进制包中。虽然这非常适合将对象快速加载到网页和游戏中,但它使编辑原始数据变得困难。当开发人员想要检查场景结构、在文本编辑器中调整材质属性或修改嵌入的着色器参数时,通常需要将 GLB 文件解包为 GLTF 格式。 使用解包的 GLTF 资产允许工程团队使用标准的 Git 工作流程对特定的 3D 网格组件进行版本控制。开发人员可以提交对 JSON 清单的小型文本更改,同时管理单独的二进制缓冲区文件,而不必跟踪巨大的二进制 blob。此转换过程适用于高级 Web 开发流程,在这些流程中,3D 资产在运行时部署前需要注入自定义着色器或动态替换纹理。
技术规格与编解码器解析
GLB 使用 model/gltf-binary MIME 类型,以 12 字节标头开头,其中包含一个 4 字节魔数(0x46546C67)、一个 4 字节版本整数和一个 4 字节总文件长度。标头后是包含 JSON 清单和二进制缓冲区的区块。转换为使用 model/gltf+json MIME 类型的 glTF 时,清单会被分离为带有 .gltf 扩展名的人类可读文本文件。几何数据和纹理图会写入 .bin、.png 等独立外部文件。默认情况下,两种格式都不使用有损压缩,并以完整的数学精度保留顶点位置、法线和 UV 坐标。
操作系统与浏览器兼容性
解包后的 glTF 文件可使用 WebGL 和 WebGPU 渲染器,在 Google Chrome、Mozilla Firefox、Apple Safari 和 Microsoft Edge 等大多数现代网页浏览器中顺畅运行。Windows 10 和 11、macOS 和 Linux 等桌面操作系统可通过 Windows 3D Viewer 和 Blender 等原生工具查看 glTF。iOS 和 Android 等移动操作系统可在原生 AR 环境和网页应用中渲染 glTF 资源;开发人员必须在服务器上正确托管独立的 .bin 和 .gltf 文件,以避免跨域资源共享错误。
实用信息
转换后,请务必将纹理贴图与主 .gltf 文件放在同一个文件夹中,以便 JSON 清单可以找到其外部依赖项而不会出现路径损坏错误。
常见问题
如何在不损失质量的情况下将 glTF Binary 转换为 glTF JSON?
从 GLB 到 GLTF 的转换完全是无损的,因为这两种格式使用相同的底层数学结构。该过程只需从单个二进制容器中提取 JSON 块和二进制缓冲区,并将它们作为单独的文件写入磁盘,而不会改变顶点数据或像素压缩。
glTF 二进制和 glTF JSON 之间有什么区别?
GLB 是一个独立的二进制文件,将场景描述、几何图形和纹理打包到一次下载中。GLTF 通过将场景图存储在可读文本文件中,同时将几何图形和纹理保存在外部二进制和图像文件中来分离这些元素。