glTF 转 GLB 转换器
拖入 .gltf(+ .bin + 纹理) 文件,直接在浏览器中转换为 .glb。文件不会离开你的电脑。
为什么要把 glTF 转换为 GLB?
.gltf 文件天生由多个部分组成——一个 JSON 头加上外部 .bin 缓冲区和纹理文件。缺少任何一个资源,整个模型就无法加载。GLB 把一切合并为一个二进制文件,因此适合发邮件、上传到 CDN 或放进 Git 仓库。
谁会做这种转换
打包资源用于部署的 Web 开发者、准备下载文件的 Sketchfab / Khronos glTF-Sample-Assets 发布者,以及任何被损坏的多文件 glTF 上传坑过的人。
常见问题
- 转换时必须能访问外部缓冲区和纹理——拖入前先把它们放在同一文件夹,或先打包成 zip。
- Draco 压缩的 glTF 在输出 GLB 中仍保持 Draco 压缩;目标引擎也需要支持 Draco。
- KHR 核心之外的自定义 glTF 扩展会原样保留。如果目标要求严格,请用 Khronos glTF Validator 验证。
本工具的技术说明
通过 Three.js GLTFLoader 读取 .gltf 及同目录资源,再由二进制模式的 GLTFExporter 将场景连同缓冲区和纹理重新打包为单个 .glb。
glTF 与 GLB 有什么区别?
GLB 的 JSON 版孪生格式。规范相同,只是拆分为人类可读的 .gltf 加上外部 .bin 和纹理文件。
- 基于文本的场景清单——便于检查、diff 和微调
- 支持 PBR 材质、蒙皮和动画
- 实时 3D 分发的行业标准
- 多文件输出——只复制一个文件而漏掉其余文件,很容易损坏
- 同一资产比 GLB 更大
二进制 glTF——3D 界的 JPEG。自包含、体积小,在 Web、AR 和所有现代 3D 引擎中都能原生加载。
- 所有内容(几何、纹理、材质、动画)打包在一个文件中
- 小巧快速——专为流式传输和 Web 分发设计
- Blender、Unity、Unreal、three.js、<model-viewer>、Android ARCore……都原生支持
- PBR 材质(金属度-粗糙度)在任何地方渲染效果都一致
- 二进制——无法手动编辑
- 在传统 CAD 流程中较少见
深入了解这两种格式
glTF 的由来
glTF 1.0 于 2015 年发布,是 Khronos 对“3D 界的 JPEG”这一需求的回应。2017 年的 2.0 规范整理了 PBR 材质模型,也是所有现代工具都支持的版本。拆分的 .gltf / .bin / 纹理布局是便于制作的形式;交付给最终用户时请使用 GLB。
- 移动 .gltf 而不带上 .bin 会悄无声息地破坏网格——请始终打包整个文件夹,或导出为 GLB 交付。
- 如果重新整理文件夹,JSON 中的相对纹理路径就会失效;资产定稿后建议改用 GLB。
- 扩展作者会添加新功能(KHR_materials_transmission、KHR_draco_mesh_compression),但并非所有加载器都支持——请在目标运行环境中测试。
实际用途:DCC 往返转换(Blender → glTF → Maya → glTF)、在构建时转换或优化 3D 资产的流程,以及以人类可读 JSON 为核心目的的资产来源记录。
GLB 的由来
glTF 2.0 于 2017 年由 Khronos Group 批准,并迅速成为 W3C 推荐的 Web 3D 格式。GLB 是“一个文件装下一切”的二进制封装——几何、纹理、动画和场景图全部放在单个 .glb 中。由于 <model-viewer>、Android Scene Viewer 和所有现代游戏引擎几乎同时加入支持,它的普及呈爆发式增长。
- PBR 材质模型假定纹理处于线性空间——DCC 工具导出的已烘焙 gamma 的颜色贴图,在 Web 查看器中会显得发白褪色。
- 如果没有预加载解码器,Draco 网格压缩反而会拖慢加载;除非确实需要节省带宽,否则请关闭它。
- Y 轴朝上还是 Z 轴朝上:glTF 严格采用右手系、Y 轴朝上。Blender、3ds Max 和大多数 CAD 导出在导入时需要翻转坐标轴,否则模型会侧躺。
实际用途:电商产品页(IKEA、Amazon、Shopify 3D)、Android AR 快速查看、基于 <model-viewer> 的文档、NFT 市场以及实时配置器。只要 3D 资产需要在浏览器标签页中无插件渲染,答案就是 GLB。
如何将 glTF 转换为 GLB
- 1拖入 .gltf 文件。如果 gltf 引用了外部 .bin 或纹理而加载失败,请尝试加载整个文件夹(多文件选择)。
- 2在 3D 中检查场景。PBR 材质、动画和蒙皮都应能正常渲染。
- 3点击“下载 GLB”。你会得到一个自包含文件,可直接用于 three.js、Unity、Unreal 或 AR。
常见问题解答
为什么要把 .gltf 打包成 .glb?
.gltf 很脆弱——它引用外部 .bin 和纹理文件,缺一个文件就全部失效。.glb 把所有内容打包进一个二进制文件:发邮件、嵌入或上传到 CDN 都更简单。
转换会丢失什么吗?
不会——GLB 是同一个 glTF 规范,只是以二进制打包。PBR 材质、动画、扩展等一切都会原样保留。
GLB 会更小吗?
通常会略小(省去 base-64 开销和 JSON 空白),但主要好处是操作上的简便,而不是体积。
转换后纹理丢失了
源 .gltf 很可能通过浏览器找不到的路径引用纹理。转换器只能看到你拖入的文件。如果 .gltf 使用外部纹理,请先把纹理嵌入 .gltf(大多数导出器都有 "embedded" 选项),或使用支持拖入文件夹的主 3D 查看器。
会上传任何内容吗?
不会。Three.js 的 GLTFLoader 和 GLTFExporter 在客户端完成全部处理。