一、介绍
GLTF(GL Transmission Format)和 GLB(GL Binary)是用于在 Web 和各种应用程序中传输和加载 3D 场景和模型的开放标准格式。它们由 Khronos Group 开发,旨在提供一种高效、可扩展且易于使用的 3D 内容格式。以下是对 GLTF 和 GLB 格式的详细介绍:
1. GLTF 格式
1.1 概述
GLTF 是一种基于 JSON 的格式,用于描述 3D 场景和模型。它支持多种 3D 数据类型,包括几何体、材质、动画、相机、灯光等。GLTF 文件通常由多个部分组成,包括 JSON 文件、二进制文件和外部资源文件(如纹理图像)。
1.2 文件结构
一个典型的 GLTF 文件包含以下部分:
- JSON 文件:描述 3D 场景的结构和内容。JSON 文件包含场景、节点、网格、材质、纹理、动画等信息。
- 二进制文件:存储几何体数据(如顶点、法线、UV 坐标等)。二进制文件通常以
.bin
扩展名保存。 - 外部资源文件:存储纹理图像、外部引用等资源。外部资源文件通常以
.png
、.jpg
等格式保存。
1.3 优点
- 高效传输:GLTF 格式设计用于高效传输和加载 3D 内容,减少文件大小和加载时间。
- 可扩展性:GLTF 格式支持扩展,可以添加自定义数据和功能。
- 跨平台支持:GLTF 格式广泛支持各种平台和应用程序,包括 Web、移动设备、桌面应用程序等。
1.4 应用场景
- Web 3D 应用:GLTF 格式广泛用于 Web 3D 应用,如 Three.js、Babylon.js 等。
- 游戏开发:GLTF 格式用于游戏开发中的 3D 模型和场景的传输和加载。
- 虚拟现实和增强现实:GLTF 格式用于虚拟现实(VR)和增强现实(AR)应用中的 3D 内容传输和加载。
2. GLB 格式
2.1 概述
GLB 是 GLTF 的二进制格式版本,将 JSON 文件和二进制文件合并为一个单独的二进制文件。GLB 文件通常以 .glb
扩展名保存。
2.2 文件结构
GLB 文件包含以下部分:
- 文件头:包含文件的元数据,如文件格式版本、文件大小等。
- JSON 部分:包含 3D 场景的结构和内容,以二进制格式存储。
- 二进制数据部分:包含几何体数据(如顶点、法线、UV 坐标等),以二进制格式存储。
- 外部资源部分:包含纹理图像、外部引用等资源,以二进制格式存储。
2.3 优点
- 单一文件:GLB 格式将所有数据合并为一个单一文件,简化了文件管理和传输。
- 高效加载:GLB 格式减少了文件数量和加载时间,提高了加载效率。
- 跨平台支持:GLB 格式广泛支持各种平台和应用程序,包括 Web、移动设备、桌面应用程序等。
2.4 应用场景
- Web 3D 应用:GLB 格式广泛用于 Web 3D 应用,如 Three.js、Babylon.js 等。
- 游戏开发:GLB 格式用于游戏开发中的 3D 模型和场景的传输和加载。
- 虚拟现实和增强现实:GLB 格式用于虚拟现实(VR)和增强现实(AR)应用中的 3D 内容传输和加载。
3. GLTF 和 GLB 的比较
特性 | GLTF | GLB |
---|---|---|
文件格式 | 基于 JSON 的文本格式 | 二进制格式 |
文件结构 | 多个文件(JSON、二进制、外部资源) | 单一文件 |
文件大小 | 较大(多个文件) | 较小(单一文件) |
加载时间 | 较长(多个文件) | 较短(单一文件) |
文件管理 | 复杂(多个文件) | 简单(单一文件) |
跨平台支持 | 广泛支持 | 广泛支持 |
应用场景 | Web 3D 应用、游戏开发、VR/AR | Web 3D 应用、游戏开发、VR/AR |
二、使用
例子下载:
https://github.com/KhronosGroup/glTF-Sample-Models/tree/main/2.0
GLB只要一个二进制文件酒席,GLTF需要下载两个bin和gltf文件一起传入才能显示
在线GLTF、GLB网页查看:
https://gltf-viewer.donmccurdy.com/