glTF JSON 转 glTF Binary 转换器
将 glTF JSON 资产转换为 glTF Binary 容器,可将独立的文本清单、二进制缓冲区和纹理打包到一个文件中,以实现更快的网页分发。
格式比较与技术规格
| 规格 | GLTF | GLB |
|---|---|---|
| MIME 类型 | model/gltf+json | model/gltf-binary |
| 类型 | runtime 3D asset transmission | self-contained binary 3D container |
| 压缩 | lossless JSON manifest + external binary buffers | binary packaged JSON, buffers, and textures |
| 标准规范 | Khronos glTF 2.0 Specification | Khronos glTF 2.0 Binary Container |
| 魔数文件头 (Magic Bytes) | 7B 22 61 73 73 65 74 22 ({"asset" JSON root) | 67 6C 54 46 02 00 00 00 (glTF version 2 binary container) |
格式概述与应用
glTF JSON 格式使用纯文本结构存储 3D 场景。此文本文件指向外部二进制文件和图像纹理。虽然此设置有助于开发人员直接在代码编辑器中编辑材质和几何节点,但移动模型需要同时管理多个文件。如果丢失了一个纹理文件或文件路径损坏,3D 模型将无法在浏览器和游戏引擎中正确加载。 将 glTF JSON 转换为 glTF Binary 会将所有这些独立的部分捆绑到一个打包文件中。3D 艺术家和网页开发人员在将资产发布到生产网络服务器或将其加载到增强现实查看器之前,会使用此转换步骤。拥有单个文件减少了 HTTP 请求,这缩短了访问电子商务产品页面和交互式 3D 网页应用程序的用户的加载时间。
技术规格与编解码器解析
glTF JSON 格式使用 MIME 类型 model/gltf+json,依赖于基于文本的 JSON 清单以及外部 bin 文件和图像。相比之下,GLB 格式使用 MIME 类型 model/gltf-binary,并将所有内容打包到一个二进制容器中。GLB 文件以一个 12 字节的文件头开头,其中包含一个设置为 0x46546C67 的 4 字节幻数、一个 4 字节的版本号以及一个 4 字节的总文件长度。此文件头后面跟着存储 JSON 清单和二进制缓冲区数据的块。在转换过程中,这两种格式都不会改变底层的网格几何图形或纹理像素数据,这意味着该过程是严格无损的。
操作系统与浏览器兼容性
这两种格式使用 WebGL 和 WebGPU 渲染器在现代网页浏览器中原生运行,无需第三方插件。Windows 和 macOS 等桌面操作系统通过内置的文件预览工具支持 GLB 查看。包括 iOS 和 Android 在内的移动平台可直接在增强现实的 Quick Look 和 Scene Viewer 应用程序中渲染 GLB 文件。
💡 实用信息
在将原始纹理打包到 GLB 文件中之前,请将其保持为 PNG 或 JPEG 格式,以保持视觉保真度,同时又不会使容器大小过分膨胀。
格式比较与技术规格
一个分布在 glTF JSON 文件和多个外部纹理中的典型 15 MB 3D 资产,在标准 4G 连接下大约需要 3.0 秒下载完毕,在 5G 下需要 0.8 秒,在光纤网络下则仅需 0.2 秒。
常见问题
如何将 glTF JSON 转换为 glTF Binary 且不损失质量?
将 glTF JSON 转换为 GLB 是完全无损的,因为该过程只是将现有的文本清单、二进制缓冲区和图像文件重新打包到一个容器中,而不会改变顶点数据或进一步压缩纹理像素。
glTF JSON 与 glTF Binary 有何区别?
glTF JSON 使用引用外部 bin 和图像文件的人类可读文本文件,而 glTF Binary 将文本清单、几何数据和纹理打包到一个带有幻数文件头的自包含文件中。