glTF 在线查看器

打开 .gltf 文件及其 .bin 缓冲区和纹理,检查 Blender 导出结果并播放动画。免费,无需上传。

打开 .gltf、.bin 和纹理文件

这个 glTF 查看器在浏览器中打开 glTF 2.0 模型,包括分成多个文件的那种:一个 .gltf(JSON)文件、一个或多个 .bin 缓冲区文件,再加一个纹理图片文件夹。把这些文件一起选中,或一起拖到页面上,场景就会带着材质和动画加载出来。文件不会上传。

它适合在把 Blender 等软件的导出结果交给前端或 Three.js 开发之前先检查一遍,也适合查看下载来的模型,或者弄清楚一个 glTF 为什么和预期不一样。

多文件 glTF 由哪几部分组成

glTF 是 Khronos Group(OpenGL 和 Vulkan 的制定者)发布的开放标准。2.0 版于 2017 年发布,2022 年成为 ISO/IEC 12113 国际标准。它为高效传输 3D 内容而设计,常被称为“3D 领域的 JPEG”。

以分离文件形式保存时,一个 glTF 模型由几个互相引用的文件组成:

如果你的模型是单个二进制文件,可以看GLB 在线查看器,那里讲了 GLB 里打包了什么。

.gltf
描述场景的 JSON 文件:节点、网格、材质、动画、蒙皮、相机。它本身不含大块数据,只有引用。
.bin
二进制缓冲区,存放顶点坐标、法线、UV、索引、蒙皮权重和动画关键帧。.gltf 在 buffers 列表的 uri 字段里指向它。
纹理
通常是 PNG 或 JPEG,在 images 列表里引用。包括基础色、金属度/粗糙度、法线、环境光遮蔽和自发光贴图。

glTF 打不开或没有贴图

只打开 .gltf 时,查看器找不到它引用的缓冲区和纹理。请同时选中 .gltf、所有 .bin 和所有图片。查看器按文件名匹配引用,图片原来放在 textures 子文件夹里也没关系,只要在选择范围内就行。

缺少 .bin 时,模型无法打开,查看器会列出它在找的文件名。缺少纹理不会阻止模型加载,只是对应的表面没有贴图。想知道一个模型需要哪些文件,用文本编辑器打开 .gltf,搜索 uri,每个值就是一个必需的文件。

有些 .gltf 把所有数据以 base64 data URI 的形式内嵌在 JSON 里,没有单独的文件。这种文件可以单独打开,但体积比同样数据的二进制存储大三分之一左右。

排查 Blender 导出的 glTF

Blender 自带的导出器提供 glTF Separate(.gltf + .bin + 纹理)和 glTF Binary(.glb)两种格式。调试阶段分离格式更方便,因为 JSON 可以直接阅读。把导出结果拖到这里,可以快速检查下面几项。

材质发白或发平:导出器只转换原理化 BSDF(Principled BSDF)和少数简单节点组合。程序化纹理和复杂节点树不会被导出,需要先烘焙成图片纹理。

模型侧躺或大小不对:Blender 是 Z 轴向上,glTF 是 Y 轴向上,导出选项里的“+Y 向上”(+Y Up)负责转换,一般应保持开启。glTF 的单位是米,可以在信息面板里核对包围盒尺寸。

动画缺失或不对:查看动画片段列表。每个 Blender 动作(Action),或者每条 NLA 轨道(取决于导出设置),会成为一个独立的片段。列表为空说明没有导出动画。

面数过多:信息面板会统计三角面和顶点数,可以看出表面细分等修改器在导出时是否被应用。

这个查看器回答的是“能不能加载、看起来对不对”。要检查文件是否严格符合规范,请使用 Khronos 官方的 glTF Validator。

扩展支持情况

glTF 通过命名扩展增加功能,文件的 extensionsUsed 和 extensionsRequired 数组里列出了用到的扩展。如果 extensionsRequired 里有查看器不支持的扩展,模型就无法打开。

要把 .gltf 及其所有文件打包成一个文件,可以用glTF 转 GLB。

KHR_draco_mesh_compression
支持。用 Draco 压缩的几何体,在浏览器本地解码。
EXT_meshopt_compression
支持。用 meshoptimizer 压缩的几何体和动画。
KHR_texture_basisu
不支持。列在 extensionsRequired 里时(通常如此)模型无法打开;只列在 extensionsUsed 里时模型能打开,但不显示这些纹理。
glTF 1.0
不支持。2017 年以前的文件需要先升级到 glTF 2.0。

常见问题

glTF 打开后没有贴图或加载失败怎么办?

.gltf 引用了单独的 .bin 和图片文件,打开时要把它们一起选中。在 .gltf 里搜索 uri,可以看到它具体需要哪些文件。

glTF 和 GLB 有什么区别?

两者存的数据相同。.gltf 是 JSON 文本,引用外部的二进制和图片文件;.glb 把 JSON、缓冲区和图片打包成一个二进制文件。glTF 便于查看和修改,GLB 便于分享。

能打开 Draco 压缩的 glTF 吗?

能。Draco 和 Meshopt 压缩的 glTF 都支持。两种都在浏览器本地解码,模型留在你的设备上。

用 glTF 查看器时模型会被上传吗?

不会。文件由浏览器在本地读取和渲染。

这个查看器能校验 glTF 文件吗?

它显示模型能否加载、外观如何,以及网格、材质、纹理和动画的数量,但不会逐条检查规范。严格校验请用 Khronos glTF Validator。

能打开 glTF 1.0 文件吗?

不能,只支持 glTF 2.0。glTF 1.0 使用另一套材质系统,现在已经很少有软件导出。

为什么同一个 glTF 在 Blender 里和这里看起来不一样?

多数是材质的原因。glTF 使用金属度/粗糙度 PBR 模型,Blender 只导出能映射到这个模型的部分;不同软件的灯光也不同。检查 Blender 材质是否是带图片纹理的原理化 BSDF。

相关工具