glTF 转 GLB

将 .gltf 及其 .bin 和纹理打包成单个 GLB 文件。免费,在浏览器中完成,无需上传。

glTF 转 GLB:把模型打包成一个文件

这个页面在浏览器里把 glTF 转换为 GLB。把 .gltf 和它的 .bin、贴图图片一起拖进来,检查预览,然后下载一个包含全部内容的 .glb。文件不会上传。

glTF 和 GLB 是同一种格式的两种封装。.gltf 是一个 JSON 文本文件,描述场景,并引用其他文件:存放几何体和动画数据的一个或多个 .bin,以及贴图图片。.glb 把 JSON、缓冲区和图片打包成一个二进制文件。两者都是 glTF 2.0,存储模型的能力没有高下之分。区别在于使用:一个文件更容易分享、上传,也不容易缺东西。

glTF 转 GLB 的步骤

1. 一次性选中或拖入 .gltf、它的 .bin 文件和贴图图片。

2. 检查预览:应该能看到贴图,信息面板里会显示动画数。

3. 点击“转换为 GLB”,.glb 会直接下载。

4. 转换后页面会显示新 GLB 的大小。需要时可以点“重新下载”。

如果你手上有 Blender 等软件的源文件,也可以直接在导出时选择 GLB 格式,不必经过这一步。

GLB 准备好后,想在 iPhone 和 iPad 上用 AR 查看,可以用GLB 转 USDZ。

为什么要把 glTF 转成 GLB

多文件的 glTF 在编辑阶段很好用,但离开原来的文件夹就容易出问题:

上传
很多网站、模型平台、AR 服务和内容工具只接受单个文件。它们要的是 GLB,不是一个 .gltf 加一个文件夹。
分享
通过微信或邮件只发了 .gltf,没带上 .bin,对方就打不开。GLB 不会丢失其中的部分。
网页
只需要一次请求,不用在服务器上维护一堆相对路径。
内嵌式 glTF
数据以 base64 内嵌的 .gltf 本身已经是单个文件,但 base64 比原始字节大三分之一左右。转成 GLB 后,同样的数据以二进制存储。

会保留什么,要注意什么

转换器先读取 glTF,再重新导出为 GLB。这是一次重新导出,不是逐字节重新打包,有几点需要知道:

网格、场景结构
保留。两种形式都是 Y 轴向上,不做旋转,所以这个转换没有“修正向上轴”选项。
PBR 材质和贴图
保留,贴图内嵌在 GLB 里。导出时贴图会重新编码,超过 4096 像素的会缩小,文件大小可能和原图不同。
动画
保留。
Draco 和 Meshopt 压缩
输入文件会先解码用于显示,输出的 GLB 不带这些压缩。所以压缩过的 glTF 转出来的 GLB 可能明显变大。如果在意体积,之后用命令行 glTF 工具重新压缩。
不常见的扩展
three.js 不能读写的扩展可能会丢失。如果模型依赖特殊的材质效果,请对照原文件检查预览。
单位
不变,两者都以米为单位。

glTF 打不开或贴图丢失

glTF 转 GLB 失败,几乎都是加载问题,而不是转换问题:

缺少 .bin 或贴图
.gltf 只是引用这些文件。缺少 .bin 时模型无法打开,并会提示缺少的文件名;缺少图片时模型能打开,但没有贴图。请同时选中 .gltf、所有 .bin 和所有图片,或者一起拖入。
glTF 1.0
不支持。2017 年以前的文件可能是 1.0 版本,可以看 JSON 里 asset 下的 version 字段。在原软件里重新导出为 glTF 2.0。
KTX2 / Basis 纹理
不支持。文件把这个扩展列为必需时(通常如此),模型无法打开;只列为已使用时,模型能打开,但没有这些贴图。导出时改用 PNG 或 JPEG 贴图。
模型是灰色的
有图片文件没被选中,或者文件名和 .gltf 里 uri 写的不一致。

常见问题

glTF 和 GLB 有什么区别?

只是封装方式不同。.gltf 是 JSON 文件,引用单独的 .bin 和图片文件;.glb 把同样的数据放在一个二进制文件里。两者都是 glTF 2.0。

glTF 怎么转成 GLB?

把 .gltf 和它的 .bin、贴图文件一起拖到这个页面,检查预览,点击转换,下载 GLB。转换在浏览器里进行。

为什么转出来的 GLB 比原来所有文件加起来还大?

通常是因为原文件用了 Draco 或 Meshopt 压缩,而输出的 GLB 不带压缩;也可能是贴图重新编码了。需要更小的文件时,用 glTF 优化工具重新压缩。

glTF 转 GLB 会保留动画吗?

会。动画、材质和贴图都保留在 GLB 里。

只有一个 .gltf 文件,能转吗?

只有数据以 base64 内嵌在 .gltf 里时才能转。如果它引用的 .bin 或图片文件你手上没有,模型就无法还原。

GLB 能转回 glTF 吗?

能,在 3D 模型格式转换器里选择 glTF 作为输出。得到的是一个缓冲区和贴图都内嵌其中的 .gltf,而不是多个分开的文件。

文件会被上传吗?

不会,全部在浏览器里转换,Draco 压缩的文件也在本地解码,你的模型不会被发送。

相关工具