glTF JSON (.gltf)
ISO/IEC 标准GL 传输格式(glTF)是一种开放、免版税的 JSON 规范,供 WebGL、WebGPU、游戏引擎和原生应用程序高效传输和加载 3D 场景与模型。
将 GLTF 转换为 GLB
免费的浏览器端 GLTF 转 GLB 转换器。在您的设备上即时转换文件。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 glTF 文件:
字节级文件头签名 (魔数)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 glTF 文件:
十六进制签名 (偏移量 0):
7B 0A 20 20 22 61 73 73 65 74 22ASCII 表示形式: {\n "asset"
标准化: ISO/IEC 12113:2022 / Khronos 开放标准
技术规格
| 容器架构 | 可读的 JSON 文档,用于描述场景图、节点、网格、访问器、材质和动画,并引用外部缓冲区 |
| 压缩方式 | 外部纹理(PNG、JPEG、WebP)及可选的 Draco 几何压缩 |
| 字节序 | UTF-8 JSON 文本(引用小端序 .bin 缓冲区) |
| 色彩空间 | sRGB 基础色, 线性粗糙度/金属度 |
| 通道与结构 | 场景层级、节点、摄像机、PBR 材质、蒙皮骨骼和变形目标 |
| 最大尺寸 | 坐标空间和三角形数量不限 |
| 透明度 | 支持 Alpha 模式 BLEND、带阈值的 MASK,或体积透射 |
| 流式传输与渐进式加载 | 支持异步加载:场景 JSON 可立即加载,较大的二进制缓冲区则在后台流式传输 |
技术对比矩阵:glTF 对比同类产品
| 技术属性 | glTF (当前) | GLB | OBJ | FBX |
|---|---|---|---|---|
| 文件架构 | JSON 场景文本 + 关联的 .bin / 纹理 | 单个完整独立的二进制文件 | 纯文本顶点和面 + .mtl | 专有的二进制/ASCII 容器 |
| PBR 材质标准 | 标准化的金属-粗糙度 PBR | 标准化的金属-粗糙度 PBR | 传统的 Phong/Lambert 材质 | 自定义专有材质 |
| 动画支持 | 骨骼蒙皮与变形目标 | 骨骼蒙皮与变形目标 | 无(仅静态几何体) | 复杂的动画与骨骼 |
| 运行时性能 | 针对 WebGL 和实时引擎进行了优化 | 针对 WebGL 和实时引擎进行了优化 | 需要缓慢的解析和重建 | 需要复杂的桌面 SDK 解析 |
常见损坏模式与十六进制恢复指南
3D 引擎错误:"加载缓冲区失败:未找到 URI"。
根本原因: 关联的 .bin 二进制文件或纹理图像未与 .gltf 文件一起上传。
恢复方法: 将所有关联文件打包在一起,或使用 File2File.app 直接将其转换为单个 GLB 文件。
安全分析与解析器攻击向量
glTF JSON 文件引用了外部 URI(数据 URI 或远程 URL),这可能会触发服务器端请求伪造 (SSRF) 或路径遍历。
已知攻击向量
- 通过相对缓冲区 URI 进行路径遍历(例如 'uri: ../../../etc/passwd')。
- 服务器端 3D 缩略图生成器远程获取缓冲区时,可能遭受 SSRF 攻击。
- 通过格式错误的递归节点层级循环导致拒绝服务。
防御性最佳实践: 禁止远程 URL,并在加载前规范化所有本地缓冲区 URI 路径。
历史渊源与里程碑
2022glTF 2.0 正式获批为国际标准,成为 ISO/IEC 12113:2022 标准。
2017科纳斯组织 (Khronos Group) 发布 glTF 2.0,将基于物理的渲染 (PBR) 作为核心功能进行标准化。
2015glTF 1.0 在 SIGGRAPH 大会上宣布,由 Fabrice Robinet、Neil Trevett 和 Tony Parisi 共同构思。
核心优势与特点
- 人类可读的 JSON 结构允许进行程序化编辑、流水线脚本编写和可视化检查。
- 模块化设计:将轻量级场景元数据与体积较大的二进制几何数据 (.bin) 及纹理分离。
- PBR 材质有助于提高一致性,但结果取决于渲染器、光照和设置。
技术局限与劣势
- 多文件复杂性:共享模型需要将 .gltf、.bin 和图像纹理压缩打包或合并在一起。
- 由于有多个 HTTP 请求,初始网络加载速度比单文件 GLB 略慢。
- 如果关联的纹理文件被重命名或移动,相对路径依赖关系可能会失效。
趣味技术冷知识
- glTF 被正式昵称为"3D 领域的 JPEG",因为它专注于运行时传输和显示,而不是内容创作。
- 该格式由 Tony Parisi 联合创立,他曾于 1994 年共同创建了 VRML(虚拟现实建模语言)。
- 美国宇航局 (NASA) 提供探测器、卫星和宇航员的 3D 模型,供公众以 glTF 格式免费下载。
常见技术问题
为什么我的 glTF 文件缺少颜色或形状?
.gltf 文件只包含 JSON 场景说明,3D 几何数据存放在配套的 .bin 文件中,颜色纹理则存放在 .png/.jpg 文件中。请确保所有配套文件都位于同一文件夹。
如何将 glTF 文件转换为单个 GLB 文件?
将 .gltf 文件及其配套的 .bin 和纹理文件上传到 File2File.app,即可立即将它们合并为一个完整独立的 .glb 文件。
哪些程序支持 glTF?
Blender、Three.js、Babylon.js、Unity、Unreal Engine、Godot 和 Windows 3D Viewer 开箱即支持 glTF。