什么是 GLB 文件?
GLB 文件是 glTF 2.0 的二进制形式:一个文件就装下了 3D 模型的网格、材质、纹理和动画。Khronos Group 于 2017 年发布 glTF 2.0,2022 年它成为国际标准 ISO/IEC 12113。正因如此,无论是 Blender 导出的、AI 模型生成器做出来的,还是 3D 扫描应用生成的 .glb,都能在这个 GLB 查看器、网页和大多数游戏引擎中打开。
.glb 查看器只需要读取文件并把它绘制出来。编辑、更换纹理和导出为其他格式,是 3D 编辑软件的工作。
GLB 与 glTF:一个文件,还是一个文件夹
同一个模型可以用两种方式保存。.gltf 文件是人可以直接阅读的 JSON,它指向若干独立文件:一个存放几何数据的 .bin 文件,以及每张纹理各一个图片文件。.glb 则把 JSON、二进制数据和图片打包进单个文件,发邮件、上传和保管都更方便。
GLB 内部结构:文件头、JSON 块和二进制块
12 字节的文件头
每个 GLB 都以字母 glTF 开头,后面是版本号和文件总长度。查看器首先检查这几个字节,所以能告诉你某个“GLB”其实是 FBX 或 glTF 1.0 文件。
JSON 块
接下来是一段描述场景的 JSON:网格、材质、纹理、动画,以及每个部分有多少顶点。模型报告就从这里读取,所以在任何内容绘制出来之前,各项数字就已经显示出来了。
二进制块
最后是二进制数据:顶点位置、法线、动画关键帧,通常还有纹理图片本身,以 PNG、JPEG、WebP 或 KTX2 格式存储。
3 步查看 GLB 文件
打开 GLB 文件
点击“打开 3D 文件”,或把 .glb 拖到 GLB 查看器上。打开 .gltf 时,请连同它的 .bin 和纹理文件一起选择,或直接拖入整个文件夹。手头没有模型?可以试试三个示例中的任意一个。电脑上可打开最大 200 MB 的文件,手机上最大 50 MB,因为手机的内存更容易耗尽。
旋转、缩放和平移
拖动可旋转视角,滚动滚轮或双指捏合可缩放,按住右键拖动或双指拖动可平移。“重置视角”让镜头回到初始位置,“自动旋转”让模型缓缓转动,“线框”则显示模型底层的网格结构。
查看报告并导出
查看器旁边的面板列出模型的大小、三角形、纹理和动画。相机按钮可保存 PNG 截图,“纹理”标签页可按原始格式保存每一张图片。
打开 .glb,或连同附带文件一起打开 .gltf。
旋转、缩放和平移,仔细查看模型。
查看模型报告,导出图片。
这个 GLB 查看器能告诉你什么
打开模型只完成了一半工作。另一半是弄清楚它能否胜任目标用途:网页、手机、AR 应用还是游戏。这个 GLB 查看器会读出回答这个问题所需的各项数字。
顶点、三角形和网格
三角形数量是衡量模型绘制负担最直观的指标。网页用的商品模型通常在几万个以内;一尊扫描得到的雕像可能多达数百万个,在手机上会卡顿。被多个部分共用的顶点只计算一次,所以这个数字与文件中实际存储的一致。
纹理:大部分字节的去处
多数人以为是复杂的几何体让 GLB 变大,其实很少如此。“信息”标签页里有一条比例条,把文件拆分为纹理、几何体、动画和其他部分;对大多数静态模型来说,纹理占了绝大部分。示例里的牛油果(Avocado)只有 682 个三角形,文件却有 7.73 MB,几乎全是三张 2048 × 2048 的图片。
我们用本查看器自带的解析器,测量了 Khronos glTF Sample Assets 中的 13 个 GLB 文件。纹理占文件大小的中位数为 95%。只有带动画的角色和一辆有 10.9 万个三角形的玩具车以几何体为主。完整数据见下表。
动画和变形目标
带动画的文件会列出每个片段及其时长。你可以选择片段、暂停、拖动时间轴,或把速度降到四分之一,逐帧检查走路循环。用于角色和面部表情的蒙皮与变形目标,也会在报告中计数。
支持解码的压缩扩展
很多 GLB 都经过压缩,查看器如果无法解码,就什么也显示不出来。本查看器支持以下常见扩展:
- Draco(
KHR_draco_mesh_compression)能大幅压缩几何体,但模型在绘制前必须先经过解码。 - meshopt(
EXT_meshopt_compression)压缩几何体和动画,解码速度非常快。 - KTX2(
KHR_texture_basisu)让纹理保持 GPU 可直接使用的格式,占用更少显存。 - WebP(
EXT_texture_webp)让纹理文件更小,浏览器可以原生解码。
每个解码器只在文件声明了对应扩展时才会下载,所以普通 GLB 完全不必为此多付代价。
实测:GLB 文件里装的都是什么
| 模型 | 文件大小 | 纹理 | 几何体 | 动画 | 三角形 |
|---|---|---|---|---|---|
| Avocado | 7.73 MB | 99.7% | 0.3% | — | 682 |
| BarramundiFish | 11.91 MB | 99.0% | 1.0% | — | 3,864 |
| WaterBottle | 8.55 MB | 98.3% | 1.7% | — | 4,510 |
| BoomBox | 10.12 MB | 98.0% | 2.0% | — | 6,036 |
| Lantern | 9.12 MB | 97.5% | 2.4% | — | 5,394 |
| AntiqueCamera | 16.73 MB | 95.4% | 4.6% | — | 20,066 |
| Corset | 12.87 MB | 95.1% | 4.9% | — | 18,324 |
| DamagedHelmet | 3.60 MB | 85.1% | 14.8% | — | 15,452 |
| SheenChair | 3.93 MB | 72.2% | 27.6% | — | 39,936 |
| CesiumMan | 0.42 MB | 35.8% | 48.2% | 9.4% | 4,672 |
| ToyCar | 5.17 MB | 32.3% | 67.6% | — | 108,936 |
| Fox | 0.16 MB | 16.4% | 46.7% | 26.9% | 576 |
| BrainStem | 3.05 MB | 0% | 62.9% | 34.3% | 61,666 |
查看带外部纹理的 glTF 文件
单独一个 .gltf 文件只是一份 JSON 描述。几何数据存放在它旁边的 .bin 文件中,纹理则是一个个图片文件,通常放在 textures 文件夹里。请把它们一次性全部交给这个 glTF 查看器:在文件对话框中一起选中,或者把整个文件夹拖到查看器上。
查看器会按 .gltf 中写明的路径逐一匹配文件,因此文件夹结构会得到遵循。如果缺少 .bin 文件,它会告诉你确切的文件名,而不是悄无声息地失败。如果缺少某张纹理,模型照样会打开,并列出缺失的文件,让你知道该去找哪些。
GLB 文件打不开的原因(及解决方法)
模型加载不出来时,原因几乎总是以下五种之一。这个 GLB 查看器会直接指出原因,而不是只给你一片空白。
它其实不是 GLB
有人会把 FBX、OBJ 和 STL 文件改名为 .glb,指望这样就能打开。这样做没用:文件内容仍然是另一种格式。查看器会读取开头几个字节,告诉你文件的真实格式,你就可以在 Blender 或制作它的程序里重新导出为 GLB。
模型发黑、发灰或缺少纹理
如果 .gltf 的图片文件没有一起提供,模型表面就会显示为纯灰色或纯白色。模型看起来发黑,通常是缺少光照:在“场景”标签页中打开“影棚光照”,或调高曝光。
模型太小、太大或侧躺着
glTF 以米为单位,+Y 轴朝上。以毫米为单位导出的模型会大出 1000 倍,按其他向上轴建模的模型则会侧躺着。查看器会自动为每个模型取景,保证它始终在视野内;比例或坐标轴的问题请在导出时修正。
它是 glTF 1.0 文件
2017 年以前导出的文件可能是 glTF 1.0,现在的工具已经不再读取这种格式。Cesium 的开源工具 gltf-pipeline 可以把其中大多数升级为 glTF 2.0。
手机上页面变慢或崩溃
手机的浏览器和图形芯片共用一小块内存。一个带 8K 纹理的 120 MB 扫描模型就可能把它全部占满,所以手机上的上限是 50 MB。大文件请在电脑上打开,或者先缩小纹理。
为什么模型看起来和在 Blender 里不一样
GLB 查看器以实时方式绘制,每秒渲染许多帧,采用基于物理的渲染,并用影棚环境提供反射。Blender 的 Cycles 渲染器则会追踪光线,每张图要花几秒到几分钟,能呈现柔和的阴影,以及在表面之间来回反弹的光线。材质是一样的,光照却不一样。
颜色也可能有偏差。本查看器使用 Khronos PBR Neutral 色调映射,它专为准确还原商品颜色而设计;其他工具则可能套用胶片风格的效果。如果模型看起来太暗或太亮,请在“场景”标签页中调整曝光,而不是去修改它的材质。
把 3D 模型截图保存为 PNG
相机按钮会把你看到的画面原样保存为 PNG 图片。可以选择查看器尺寸的 1×、2× 或 4×,在高分辨率屏幕上也能得到清晰的图片;勾选“透明背景”即可去掉影棚背景。柔和的地面阴影会保留下来,模型放在任何颜色的页面上都显得自然。
因此,这个 GLB 查看器也是把 GLB 快速转成 PNG 的好办法,可用于商品页、文档、缩略图或作品集。想让图片更小,可以 压缩 PNG 或 转换为 WebP,再按网站要求的精确尺寸 调整图片尺寸。
用在线 GLB 查看器打开 GLB 文件安全吗?
用这个查看器,是安全的。文件在你的浏览器标签页内读取和渲染,从不上传,也不会保存与它有关的任何信息。即使 .gltf 指向其他网站上的纹理地址,查看器也不允许去获取它们,所以打开模型时不会替它发出任何请求。
唯一额外下载的是查看器自身的组件:3D 引擎,以及压缩文件需要时才加载的 Draco 或 KTX2 解码器。它们都是程序代码,每个人拿到的都一样,不包含你的任何内容。打开模型时,你可以在浏览器开发者工具的“网络”面板中亲自核实。
GLB 查看器方案对比
| 本 GLB 查看器 | Blender | 游戏引擎 | 手机应用 | |
|---|---|---|---|---|
| 需要安装 | 否 | 是,免费 | 是,体积大 | 是 |
| 能打开 GLB 和 glTF | 是 | 是 | 是,需借助导入插件 | 视应用而定 |
| 按纹理和几何体拆分体积 | 是 | 否 | 否 | 少见 |
| 编辑、更换纹理、导出 | 否 | 是 | 是 | 否 |
| 文件留在你的设备上 | 是 | 是 | 是 | 视应用而定 |
| 可在手机上使用 | 是,最大 50 MB | 否 | 否 | 是 |