近年来,在网站和应用程序上查看 3D 内容的机会迅速增加。 无论是在三维空间中传达产品吸引力的电子商务网站,还是在虚拟空间中交互的元宇宙,还是将信息叠加在现实世界中的增强现实 (AR),3D 技术都在发展我们的数字体验,使其更加丰富和直观。
在幕后,3D 内容的传播由一种名为“glTF”的文件格式支持。 glTF是一种标准格式,旨在在包括网络在内的各种平台上高效传输和显示3D模型,堪称“3D世界的JPEG”。 在本文中,我们将对glTF的基本概念进行全面而易于理解的解释,从与经常被混淆的glb的区别,它与其他3D文件格式的比较,具体的优缺点,以及如何实际创建和显示它。 阅读本文后,您将清楚地了解为什么 glTF 对于现代 3D 工作流程至关重要以及如何利用它。 目录
-
什么是glTF?
glTF 是一种高效的 3D 资产传输格式。 最大的特点是它解决了传统 3D 文件格式面临的问题,并且特别针对在 Web 环境中的使用进行了优化。 让我们从几个方面仔细看看它的核心作用和背景。 3D 模型的标准文件格式 在数字内容领域,有广泛使用的“标准格式”,例如图像的 JPEG 和 PNG、音频的 MP3 和视频的 MP4。 由于这些格式,我们可以毫无问题地在不同设备和软件之间交换数据。 glTF 的开发旨在成为该 3D 模型的标准格式。 过去,在3D行业,每个制作软件(DCC工具)都有自己的文件格式,在不同工具之间交换数据时,需要经过FBX、OBJ等“中间格式”。 然而,这些中间格式最初是用于编辑目的的,因此它们往往包含大量不必要的数据并且文件大小较大。 此外,格式解释因软件而异,经常出现导入和导出时外观变化(显示塌陷)等问题。 glTF是一种“运行时格式”,它仅以紧凑的通用形式存储“最终显示(渲染)”所需的信息,以解决这些问题它被设计为。 从创建 3D 模型的 DCC 工具到实际显示的游戏引擎、Web 浏览器和 AR 应用程序,这可以在保持一致的外观的同时实现流畅的数据链接。 由于这种通用性和效率,glTF被称为“3D的JPEG”。 专门用于在网络上显示 3D 数据 glTF 设计理念的核心是一个明确的目的:优化 Web 的使用。 Web 浏览器不仅在 PC 上使用,还在智能手机和平板电脑等各种设备上使用,而且通信环境并不总是很快。 为了在如此严格的环境中舒适地体验丰富的 3D 内容,文件格式本身必须是特定于 Web 的。 glTF 通过以下功能实现了在 Web 上的快速显示。
-
轻量级文件大小:以二进制格式有效地存储几何数据(例如顶点信息),或利用 Draco Mesh Compression 等扩展名在不影响模型质量的情况下显着减小文件大小。
-
快速加载(解析):glTF 的结构基于 JSON(JavaScript 对象表示法)。 它与 Web 技术具有非常高的亲和力,旨在最大限度地减少浏览器在解释数据时的处理负载。 由于呈现不包含不必要的数据,因此应用程序可以立即将其接收到的数据转换为绘图过程。
-
与 WebGL 的高亲和力:在现代 Web 浏览器中绘制 3D 图形时,使用了名为“WebGL”的 API。 WebGL 是一种直接利用 GPU(图形处理单元)的强大功能来执行高速渲染的机制。 glTF 旨在确保其数据结构与 WebGL 思想紧密结合,从而允许将材质和纹理信息高效地传输到 GPU。 这使您可以提供流畅的 3D 体验,而不会给 CPU 带来额外的负载。
由 Khronos Group 开发的开放标准 glTF 的可靠性和未来潜力得益于制定组织 Khronos 集团的存在。 Khronos Group 是一个非营利性联盟,致力于促进各种图形和计算 API 的标准化。 该组织包括 IT 和图形行业的许多领先公司,包括 Apple、Google、Microsoft、NVIDIA、AMD、Adobe 和 Epic Games。 Khronos 集团的标准规格包括:
-
OpenGL:桌面 3D 图形 API 的标准
-
Vulkan:一个较低级别、高性能的图形 API,将接替 OpenGL
-
WebGL:用于 Web 浏览器的 3D 图形 API
-
OpenCL:用于并行计算的 API
-
因此,glTF 由 Khronos 集团管理,该集团在制定支撑行业支柱的多项标准方面有着良好的记录,这意味着 glTF 是一个真正开放和公平的标准,独立于任何特定公司或产品。 作为开放标准具有以下主要好处:
-
免版税:任何人都可以免费使用规范来开发和销售兼容产品。
-
避免供应商锁定:不存在因特定公司的方便而更改规范或停止支持的风险。
-
透明度和可扩展性:所有规范都是公开的,因此可以轻松讨论实现问题并随着未来技术的发展添加扩展。
这种强大的后盾和开放性是许多公司和开发者愿意采用 glTF 的主要原因,整个生态系统正在迅速扩展。 如何阅读 glTF glTF的正式名称是“GL Transmission Format”。 “GL”是指Khronos集团开发的图形库(OpenGL和WebGL),“传输格式”是指它是一种用于传输(传输和接收)的格式。 至于如何阅读,最常见的是按原样阅读字母表并将其发音为“Zyltyev”。 名称本身清楚地描述了这种格式的核心作用,即“一种用于高效传输图形数据的格式”。 glTF 2 文件格式和 glb 之间的区别 使用 glTF 时需要了解的一件重要事情是存在两种文件格式:.gltf 和 .glb。 这两者都是 glTF 规范的一部分,但它们有不同的数据存储方式,并且每个都有自己合适的应用。 总之,在大多数情况下,建议使用 .glb 格式,例如用于 Web 交付。 .gltf:处理 JSON 格式的数据 .gltf格式是glTF的基本形式,其实质是JSON(JavaScript Object Notation)文件。 JSON是一种基于文本的数据描述语言,易于人类读写,广泛应用于Web API等应用中。 .gltf 文件主要包含有关“场景结构”的信息,例如:
-
场景信息:整个3D空间的构图。 场景从哪个节点(对象)开始,等等。
-
节点层次结构:对象的父子关系。 例如,定义一个结构,其中机器人的“手臂”是“机身”的子节点。
-
网格信息:每个对象使用哪些几何数据(顶点的集合)?
-
材质定义:定义对象表面纹理(例如颜色、金属丰度、粗糙度等)的 PBR 参数。
-
纹理信息:对材质中使用的图像文件(如.png或.jpg)的引用。
-
动漫信息:有关物体移动和角色骨骼动漫的数据。
重要的是,.gltf 文件本身不包含大文件大小的数据,例如定义 3D 模型形状的顶点数据(几何体)或粘贴到表面上的图像(纹理)。 这些数据存储为单独的外部文件。
-
几何数据:存储在扩展名为 的二进制文件中。.bin
-
纹理图像:作为图像文件,例如 . gltf 文件,或在指定的路径中。.png.jpg
你什么意思。 当您以 gltf 格式保存 3D 模型时,它通常由多个文件组成,例如“”和“”。model.gltfmodel.bintexture.png 这种格式的优点是可以直接在文本编辑器中打开和读取 JSON 部分,从而可以轻松查看和调试数据结构并进行简单的手动修改。 另一方面,由于它分为多个文件,因此易于管理,并且从Web服务器加载时对每个文件发出HTTP请求,这在传输效率方面是不利的。 .glb:处理二进制格式的数据 .glb该格式是为解决上述格式的文件管理和传输效率问题而设计的格式。 它的名字的意思是“GL Binary”,顾名思义,它将所有数据打包到一个二进制文件中。.gltf 具体说来。 在 glb 文件中,您会找到以下所有内容:
-
.gltf文件中描述的 JSON 结构数据
-
.bin二进制数据,例如存储在文件中的几何图形
-
纹理图像数据
所有这些都根据预定的规则合并到一个文件中。 这种“全包”格式具有巨大的好处。.glb 最大的优点是文件合二为一,非常易于管理和分发。 只需一次拖放即可将其附加到电子邮件、上传到服务器或将其嵌入到应用程序中。 此外,在 Web 上,需要对服务器的单个 HTTP 请求非常重要,因为它是一个文件。 与生成多个请求的 .gltf 格式相比,这减少了网络开销并显着减少了 3D 模型加载时间。 另一方面,缺点是整个文件都是二进制格式,人类很难直接在文本编辑器中打开它来阅读和编辑内容。 要检查和编辑 glb 文件的内容,您需要专用的查看器或 3DCG 软件。 我应该使用哪种格式 现在您已经了解了 .gltf 和 .glb 的特点,让我们考虑选择哪种格式。 下表总结了两者之间的差异。
|
项目 |
.gltf 域名 |
.glb 域名 |
|---|---|---|
|
文件结构 |
分为 JSON 文件和外部文件(.bin、.png 等) |
将所有数据存储在一个二进制文件中 |
|
可读性 |
高(JSON部分可以用文本编辑) |
低(二进制格式) |
|
文件管理 |
复杂(多个文件) |
简单(单文件) |
|
Web 传输效率 |
低(可能需要多个请求) |
高(需要单个请求) |
|
主要应用 |
开发、调试和分析数据结构 |
Web 交付,嵌入到应用程序中 |
|
建议 |
具体开发场景 |
大多数用例 |
从下表可以清楚地看出,如果你想把它嵌入到你的最终应用程序中或在网络上分发它,.glb 格式是压倒性的优势。易于管理和高传输效率在实践中是非常显着的优势。 另一方面,在某些情况下,.glTF 格式可能很有用。例如,情况如下。
-
在开发调试过程中:如果导出的glTF数据结构有问题,或者想要直接检查JSON的内容。
-
版本控制:在 Git 等版本控制系统中管理 3D 资产时,基于文本的 .gltf 文件比二进制 .glbs 更易于管理,因为它们更容易查看更改的差异。
-
手动调整:您想要以编程方式或手动重写某些参数的特殊情况。
总之,最有效和推荐的工作流程是在生产和开发阶段根据需要使用 .gltf,但以 .glb 格式将最终可交付成果导出给用户。 glTF 与其他主要 3D 文件格式的比较 要了解 glTF 的真正价值,重要的是要清楚地了解 3D 行业中广泛使用的其他主要文件格式之间的差异,尤其是 FBX 和 OBJ。 glTF 取代和补充了这些格式所发挥的一些作用,同时在“发行”领域树立了新标准,特别是。