glTF JSON (.gltf)
ISO/IEC 标准GL 传输格式 (glTF) 是一个开源标准、免版税的 JSON 规范,用于通过 WebGL、WebGPU、游戏引擎和本地应用程序高效传输和加载 3D 场景与模型。
将 GLTF 转换为 GLB
免费的浏览器端 GLTF 转 GLB 转换器。在您的设备上即时转换文件。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 glTF 文件:
字节级文件头签名 (Magic Bytes)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 glTF 文件:
十六进制签名 (偏移量 0):
7B 0A 20 20 22 61 73 73 65 74 22ASCII 表示形式: {\n "asset"
标准化: ISO/IEC 12113:2022 / Khronos Open Standard
技术规格
| 容器架构 | Human-readable JSON document describing scene graph, nodes, meshes, accessors, materials, and animations, referencing external buffers |
| 压缩方式 | External textures (PNG, JPEG, WebP) and optional Draco geometry compression |
| 字节序 | UTF-8 JSON text (referencing Little-Endian .bin buffers) |
| 色彩空间 | sRGB base color, Linear roughness/metallic |
| 通道与结构 | Scene hierarchy, nodes, cameras, PBR materials, skinning skeletons, and morph targets |
| 最大尺寸 | Unbounded coordinate space and triangle count |
| 透明度 | Alpha mode BLEND, MASK with cutoff threshold, or volumetric transmission |
| 流式传输与渐进式加载 | Asynchronous loading: scene JSON loads instantly while heavy binary buffers stream in background |
技术对比矩阵:glTF 对比同类产品
| 技术属性 | glTF (当前) | GLB | OBJ | FBX |
|---|---|---|---|---|
| 文件架构 | JSON 场景文本 + 关联的 .bin / 纹理 | 单个自包含的二进制文件 | 纯文本顶点和面 + .mtl | 专有的二进制/ASCII 容器 |
| PBR 材质标准 | 标准化的金属-粗糙度 PBR | 标准化的金属-粗糙度 PBR | 传统的 Phong/Lambert 材质 | 自定义专有材质 |
| 动画支持 | 骨骼蒙皮与变形目标 | 骨骼蒙皮与变形目标 | 无(仅静态几何体) | 复杂的动画与骨骼 |
| 运行时性能 | 针对 WebGL 和实时引擎进行了优化 | 针对 WebGL 和实时引擎进行了优化 | 需要缓慢的解析和重建 | 需要复杂的桌面 SDK 解析 |
常见损坏模式与十六进制恢复指南
3D 引擎错误:"加载缓冲区失败:未找到 URI"。
根本原因: 关联的 .bin 二进制文件或纹理图像未与 .gltf 文件一起上传。
恢复方法: 将所有关联文件打包在一起,或使用 File2File 直接将其转换为单个 GLB 文件。
安全分析与解析器攻击向量
glTF JSON 文件引用了外部 URI(数据 URI 或远程 URL),这可能会触发服务器端请求伪造 (SSRF) 或路径遍历。
已知攻击向量
- 通过相对缓冲区 URI 进行路径遍历(例如 'uri: ../../../etc/passwd')。
- 在服务器端 3D 缩略图生成器中通过远程网络缓冲区获取触发 SSRF。
- 通过格式错误的递归节点层级循环导致拒绝服务。
防御性最佳实践:
历史渊源与里程碑
核心优势与特点
- 人类可读的 JSON 结构允许进行程序化编辑、管道脚本编写和可视化检查。
- 模块化设计:将轻量级场景元数据与重型二进制几何数据 (.bin) 及纹理分离。
- 基于物理的渲染 (PBR) 材质定义确保 3D 资产在所有渲染引擎中呈现完全相同的视觉效果。
技术局限与劣势
- 多文件复杂性:共享模型需要将 .gltf、.bin 和图像纹理打包成压缩包或合并在一起。
- 由于有多个 HTTP 请求,初始网络加载速度比单文件 GLB 略慢。
- 如果关联的纹理文件被重命名或移动,相对路径依赖关系可能会失效。
趣味技术冷知识
- glTF 被正式昵称为"3D 领域的 JPEG",因为它专注于运行时传输和显示,而不是内容创作。
- 该格式由 Tony Parisi 联合创立,他曾于 1994 年共同创建了 VRML(虚拟现实建模语言)。
- 美国宇航局 (NASA) 提供探测器、卫星和宇航员的 3D 模型,供公众以 glTF 格式免费下载。
常见技术问题
为什么我的 glTF 文件缺少颜色或形状?
.gltf 文件仅包含 JSON 场景指令。它依赖配套的 .bin 文件来处理 3D 形状,并依赖 .png/.jpg 文件来处理颜色。请确保所有配套文件都在同一个文件夹中。
如何将 glTF 文件转换为单个 GLB 文件?
将您的 .gltf 及其配套的 .bin 和纹理文件上传到 File2File.app,即可立即将它们合并为一个自包含的 .glb 文件。
哪些程序支持 glTF?
Blender、Three.js、Babylon.js、Unity、Unreal Engine、Godot 和 Windows 3D Viewer 开箱即用支持 glTF。