SupaVoxel
3D 文件格式

GLB vs glTF:到底有什么区别?

GLB vs glTF 的差别在打包,不在数据:.gltf 是可读的 JSON 加独立文件,.glb 则把所有内容装进一个文件。发布用 GLB,编辑用 glTF,互转无损。

  • Khronos glTF 2.0 规范
  • 实测文件大小
  • 无损转换
更新于 2026年10月

GLB vs glTF:一句话答案

glTF 是 Khronos Group 制定的开放格式,用来把 3D 场景交付到应用和网页;GLB 并不是另一种格式,而是它的二进制容器。规范同时定义了这两者:.gltf 文件是 JSON(媒体类型 model/gltf+json),.glb 文件(model/gltf-binary)则把同一份 JSON 加上一段二进制缓冲区封装进单个文件。

所以 GLB vs glTF 讨论的是打包方式,跟质量无关。网格、PBR 材质、贴图、动画、蒙皮和形变目标在两者中完全一致。变化的是你要处理多少个文件、能否用文本编辑器打开场景描述,以及把二进制塞进 JSON 时要多付多少体积。

对绝大多数人来说,答案都是 GLB:一个文件,上传、发邮件或拖进 three.js、Babylon.js、<model-viewer>、Blender、Unity、Unreal 都行。需要调试、手动改材质参数,或者在 CDN 上让多个模型共用贴图时,再选分离文件的 glTF。

GLB vs glTF 对比表

两者都是 glTF 2.0,所以大部分行完全一样。真正决定你项目该选 GLB 还是 glTF 的,是那些不一样的几行。

GLB(.glb)glTF(.gltf)
几何类型三角网格(也支持点和线)、节点层级、蒙皮、形变目标相同
颜色 / 贴图PNG 或 JPEG 贴图存放在二进制块中;顶点色贴图作为独立图片文件,或在 JSON 里用 base64 data URI 内嵌
单位米,右手坐标系,+Y 向上,依据规范相同
材质内置 PBR 金属度-粗糙度;更多能力通过 KHR 扩展相同
文件大小最小的单文件形式:12 字节文件头加一个 JSON 块和一个 BIN 块与分离文件的总字节数相同;若二进制以 base64 内嵌则大约大 33%
可编辑性二进制;需要工具才能查看JSON 可读,能在文本编辑器里做 diff
软件支持three.js、Babylon.js、model-viewer、Blender、Unity、Unreal、Godot、Windows 3D 查看器同一批加载器;外部文件必须留在正确的相对目录下
打印用途不是打印格式;UltiMaker Cura 能打开,大多数切片软件不行相同;打印需转成 STL 或 3MF
文件数量11 到多个(.gltf、.bin、图片)

来源:Khronos glTF 2.0 规范中关于文件扩展名、坐标系与单位,以及 GLB 文件格式的章节。

GLB 文件是如何由 glTF 构成的

GLB 以一个 12 字节的文件头开头:魔数 glTF、版本号(2)和总长度。之后是数据块。第一块是 JSON 块,就是 .gltf 里那份一模一样的场景描述。第二块是 BIN 块,存放顶点位置、法线、UV、索引、动画关键帧,通常还有贴图图像本身。

.gltf 把这份 JSON 存成独立文件,并用两种方式之一引用二进制数据:指向旁边的 .bin 和图片文件的相对路径,或者把字节 base64 编码后直接写进 JSON 的 data URI。规范本身也指出,base64 会让数据长度增加 33%,解码还要额外消耗处理性能。这正是 GLB 存在的主要原因。

  • GLB:文件头 + JSON 块 + BIN 块,一个文件
  • glTF:JSON 加上并排放置的 .bin 和图片
  • 内嵌式 glTF:也是一个文件,但 base64 让它胖了三分之一

GLB vs glTF 文件大小:同一个模型三种打包实测

我们从作品库里取了一个带贴图的 AI 生成模型——一位 500,000 三角面、287,963 个顶点、带三张 2048 x 2048 PNG 贴图的蒸汽朋克机器人骑士,逐一测量了每种打包方式的体积。

打包方式文件数大小
GLB126.9 MB
glTF + .bin + PNG 贴图5(.gltf、.bin、3 张 PNG)总计约 26.9 MB;单是 .gltf JSON 约 2 KB
内嵌 base64 数据的 glTF1约 35.9 MB
这些字节都花在哪几何 15.2 MB,贴图 11.7 MB

打包本身不会缩小任何东西。想让模型更小,就压缩几何(Draco 或 meshopt)、缩小或重新编码贴图,或者减少三角面数。我们的 GLB 压缩器和网格简化工具在浏览器里就能完成这些。

网页、AR 和 Blender 里的 glTF vs GLB

在网页上,GLB 是实际上的默认选择:一次请求、一条缓存记录,主流加载器都认。但在大量模型共用同一批贴图的站点上,分离式 glTF 反而更划算,因为浏览器只需下载一次公共图片;规范自带的实现说明里也讲过这个取舍。

做 AR 时,Android 的 Scene Viewer 支持 glTF 和 GLB,而 iPhone 上的 Apple Quick Look 需要 USDZ,所以两种都发一份,再把 GLB 转成 USDZ 给 Apple 设备用。在 Blender 里,文件 > 导入 > glTF 2.0 两种都能读,导出器的格式菜单提供 glTF 二进制(.glb)和 glTF 分离(.gltf + .bin + 贴图)。除非有特别理由,选二进制就对了。

要做 3D 打印,两者都不是合适的交付格式。把 GLB 转成 STL 或 3MF;贴图打不出来,但形状没问题。

  • 网页与分享:GLB
  • 多模型共用贴图:分离式 glTF
  • iPhone AR:转成 USDZ
  • 打印:转成 STL 或 3MF

GLB vs glTF:该用哪个

两者都是合规的 glTF 2.0,按工作流来选。

把模型发给别人

GLB。一个文件,传输途中不会丢东西,Windows 3D 查看器、Blender 和各种网页查看器都能打开。

嵌入网站

用几何和贴图都压缩过的 GLB。一次 HTTP 请求,实际下载体积最小。

调试出问题的材质

glTF 分离式。打开 JSON,检查 baseColorFactor、metallicFactor 或贴图索引,改完重新加载。

贴图共享的产品目录

glTF 分离式,这样一块通用的布料或木纹贴图能在几百个模型间只缓存一次。

版本管理

glTF 分离式。Git 可以对 JSON 做 diff,大二进制文件走 LFS。

避免:内嵌式 glTF

它和 GLB 一样是单文件,却大约大三分之一、解析更慢。很少有理由选它。

转换 glTF 和 GLB 而不弄坏任何东西

只要引用的文件都在,双向转换都是无损的。

推荐做法
  • 把 .gltf、.bin 和贴图图片保持在导出时的相对目录结构中
  • 在查看器里打开转换结果,确认贴图正常显示后再分享
  • 记住 glTF 的单位是米:30 毫米的手办是 0.03 个单位,在某些工具里看起来小得离谱
  • 面向网页时压缩几何和贴图;单纯重新打包省不下任何体积
避免做法
  • 只发 .gltf 文件;没有 .bin 和图片,模型会加载成空白或灰模
  • 把 .gltf 改名成 .glb;二进制文件头必须由转换器写入
  • 对大模型用内嵌 base64 的 glTF;它会给二进制数据额外增加约 33%
  • 指望切片软件打印出 GLB 里的贴图;多色打印请转 3MF

常见问题

常见问题

GLB vs glTF:哪个更好?

质量上没有谁更好,它们承载的是同一份 glTF 2.0 数据。GLB 更适合交付,因为它是单文件,也避开了内嵌式 glTF 那 33% 的 base64 开销。分离式 glTF 更适合检查和编辑,因为场景描述是可读的 JSON。要分享、上网页、在 Android 上做 AR,选 GLB。

用一句话说清 GLB 和 glTF 的区别?

.gltf 文件是 JSON 场景描述,通常旁边还有独立的 .bin 和图片文件;.glb 文件则把同一份 JSON 和全部二进制数据装进一个紧凑的二进制容器。里面的网格、材质、贴图和动画完全一致,所以两个方向互转都不会有损失。

glTF 转 GLB 会掉质量吗?

不会。转换器把 JSON 原样复制进 GLB 的 JSON 块,把缓冲区和图片移进 BIN 块,不做任何重新编码,因此几何、贴图和动画逐位一致。唯一可能丢东西的情况是缺少附带文件:如果 .gltf 引用的某张贴图不在它所在的目录里,就无法被打包进去。

我的 GLB 为什么这么大?

通常是贴图。在我们那个 50 万三角面的测试模型里,三张 2048 x 2048 的 PNG 贴图占了 26.9 MB 中的 11.7 MB,几何占另外 15.2 MB。把贴图缩小或重新编码成 JPEG,套用 Draco 或 meshopt 几何压缩,或者简化网格。我们的免费 GLB 压缩器在浏览器里就能搞定。

GLB 或 glTF 文件能 3D 打印吗?

间接可以。UltiMaker Cura 把 glTF Binary 和 glTF Embedded 列为可打开格式,但 PrusaSlicer 和 Bambu Studio 不行,而且没有切片软件能打印贴图。可靠的做法是:单色就转成 STL,多色就转成 3MF,然后再切片。我们的浏览器转换器两者都能做,且无需上传文件。

glTF 用的是什么单位?

米。glTF 2.0 规范将所有线性距离固定为米,采用右手坐标系、+Y 向上。这让不同工具间的比例可预测,不像 STL 或 OBJ,但会让从 3D 打印过来的人感到意外:一个 120 mm 的手办只有 0.12 个单位高。切片软件的转换器会帮你把米换算成毫米。

SupaVoxel 会提供哪种格式?

每个 SupaVoxel 模型都可以免费下载为 GLB,包括新账户获得的 3 个免费积分。付费方案增加 STL、OBJ、USDZ 和多色 3MF 导出、带纹理模型以及商业许可。如果你只有免费 GLB,可以在本站工具中查看、转换为 glTF 或 STL,或进行压缩。

iPhone 能打开 GLB 文件吗?

不能通过 AR Quick Look 打开,它需要 USDZ。Android 的 Scene Viewer 和大多数网页查看器使用 glTF 或 GLB。如果要发布 AR 模型,请为 Android 和网页保留 GLB,并为 iPhone 和 iPad 转换一份 USDZ 副本。我们的免费 GLB 转 USDZ 转换器可在浏览器中运行。

免费开始

GLB 和 glTF 分清了?生成模型

把照片变成 3D 模型,通常不到一分钟。使用前 3 个免费积分即可免费下载 GLB,无需信用卡;带纹理模型需付费方案。

无需信用卡 · 赠送 3 个免费积分