glTF文件格式

glTF(GL传输格式)是 WebGL、 OpenGL ES和OpenGL运行时的资产格式,是一个实时3D资产传输的可扩展、运行时间中立的开放标准格式,其描述了包括压缩传输和快速下载的完整场景。

glTF最早是由Khronos Group 3D Formats Working Group提出并开发的,作者将其描述为“3D格式的JPEG”。 Khronos在HTML5 DevConf 2016上宣布其为API中性性、实时运行性能的环境资产交付格式。glTF的目的创建是一种高效、可互操作的资产交付格式,可压缩3D场景的大小,并最大限度地减少WebGL运行时处理使用其他应用程序的API。 glTF还定义了3D内容工具和服务的通用发布格式。

历史

2012年3月,Khronos组织了一场聚会,讨论关于COLLADA和围绕WebGL的发展机会。 Fabrice Robinet自愿实施一个有效JSON格式的提案,引用外部二进制blob。 之后,在SIGGRAPH 2012举办的WebGL聚会期间,Brandon Jones和Fabrice Robinet展示了glTF的Demo,后来被称为WebGL TF(WebGL传输格式)。
2013年3月,Cesium采用了glTF而不是“设计另一种资产格式”。

2015年8月10日,3D Tiles,现在的OGC社区标准,建立在glTF上,为流式传输大规模异构3D地理空间数据集添加空间数据结构,元数据和声明样式。

glTF 1.0

2015年10月19日,glTF 1.0规范公布。

2016年7月,John Carmack说:
“世界长期以来一直需要一种高效,可用的3D场景标准,它位于普通图像,音频,视频和文本格式的水平。 不是创作格式,也不一定是用于超优化平台特定应用程序的格式,而是在互联网上的某些内容,能够被许多不同的应用程序直接创建和使用“

在SIGGRAPH 2016上,Oculus宣布他们采用glTF,理由是他们的ovrscene格式有相似之处。

2016年10月,Microsoft加入了Khronos的3D Formats工作组,以便在glTF上进行合作。
2016年12月,Archilogic以glTF格式导出交互式3D平面图,并在其基于Web的3D编辑器中导入任何glTF 3D数据。

glTF 2.0 

2017年3月3日,在GDC WebGL / WebVR / glTF Meetup上,微软宣布将在其产品线中使用glTF 2.0作为3D资产格式,包括Paint 3D,Viewer 3D,remix3d,Babylon,Office等。 微软,Fraunhofer和宾夕法尼亚大学的学生展示了使用WebGL,DirectX和Vulkan渲染的同样glTF 2.0资产。 此外,在聚会上,Sketchfab宣布支持glTF 2.0。

2017年3月,Google启动了针对Draco网格和点云压缩的glTF扩展。

glTF 2.0最初于2016年6月作为glTF 1.0.1(以及后来的glTF 1.1)作为bug修复版本启动,以收紧在开发glTF验证器时发现的极端情况。 同时,Fraunhofer提出的基于物理的渲染(PBR)材料扩展提案的势头也在增长。 鉴于对PBR和API中性格式的兴趣,glTF 1.1的工作扩展为glTF 2.0,包括以下新的主要功能:

  • PBR材料基于金属粗糙度着色模型。 镜面光泽度着色模型可用作扩展。

  • 稀疏存取器和变形目标,用于面部动画等技术。

  • 将glTF 1.0二进制glTF扩展的更新版本提升为核心规范。

  • 模式调整和突破角落情况或性能的变化,例如用数组替换顶级glTF对象属性,以便更快地进行基于索引的访问。

2017 年6月5日,The KhronosTM Group 在 Web3D 2017 大会发布了glTF 2.0 规范,该规范融入了来自开发者对GitHub 上预测版规范的反馈。 

glTF 2.0 的发布带来了对 glTF 1.0 意义重大的更新,成为一个实时 3D 资产传输的可扩展、运行时间中 立的开放标准格式,其描述了包括压缩传输和快速下载的完整场景。为了响应 glTF 1.0 开发者社群对主 要功能的要求,glTF 2.0 的发布为可兼容、一致的材质描述添加了基于物理渲染(PBR)。在 glTF 1.0 中,材质的定义是通过 GLSL 渲染器,也符合 WebGL,但是在导入一个 glTF 模型到 Direct3D 或者 Metal 应用是就会产生问题。通过使用 PBR,从视觉上捕捉 glTF 2.0 模型现在已经实现与任何渲染 API 的一致兼容。glTF 2.0 定义了一个简单但是高效的执行,PBR 模型提供高质量材质,同时可延伸以满足 不同类别平台和设备的功能。

“glTF 的里程碑才刚刚开始,随着不断增加的工具采用,玩家和应用将遍布整个行业”Khronos 主席兼 glTF 工作组主席 Neil Trevett 讲到,“在 2 月份我们发布了 glTF 2.0 开发者预览版并广泛征集大家的反馈建 议。我们获得来自社群的积极响应,这也在很大程度上帮助了我们最终版本规范发布的准备工作。现在 我们非常期待继续获得行业的参与,不断扩展 glTF 的功能 – 例如高级纹理和地理压缩扩展。我们相信 glTF 2.0 将推动整个行业的基于 PBR 材质在各种应用领域的发展”。

8月3日,在SIGGRAPH glTF BOF上,微软在Minecraft中展示了glTF导出,Autodesk演示了Forge中的glTF导入,Mozilla和Google在A-Frame中演示了glTF,Sketchfab在他们的平台上宣布了10万多个glTF模型。

2017年9月6日,Binomial宣布计划将其跨平台纹理压缩格式作为开放标准。
2017年9月7日,Blender计划用Blender发布glTF出口商插件。
2017年9月,Apple Watch Series 3网站使用了glTF。
2018年2月20日,Facebook宣布使用glTF 2.0在其平台上对3D帖子进行beta测试,演示了Lego 3D模型。
自2013年以来,NORAD Tracks Santa的Santa和Reindeer模型使用了glTF。
Unity和集成的多引擎查看器/验证器正在进行导入和导出工作。
2018年3月11日,Cairo Buddy系统团队同意支持glTF。
在2018年6月19日,Oculus向Oculus Home添加了glTF 2.0支持,版本为1.27。
在2018年9月28日,谷歌宣布在他们的ARCore平台上支持gITF。

GLB 

GLB文件格式是glTF的二进制形式,包括纹理而不是将它们作为外部图像引用。 .glb文件需要在Facebook 3D帖子中加载。

glTF路线图 

关于glTF规范,扩展和生态系统的后续步骤的讨论于2017年7月30日在GitHub上开始。

批评

 

glTF受到资深引擎开发人员Eric Lengyel的批评,与先前现有的3D交换格式(如COLLADA格式和他自己的Open Game Engine Exchange格式)相比,它缺乏灵活性和糟糕的设计。他指出,glTF在场景结构,材质应用,蒙皮和光照方面缺乏许多功能,以及无法指定物理单位或全局向上方向向量。他进一步声称glTF中的动画支持不足以准确地再现在大多数流行的建模软件(包括Blender,Autodesk 3ds Max和Autodesk Maya)中创建的动画,因为要求时间对于三次样条插值是线性的。

Godot Engine的首席开发人员Juan Linietsky对glTF 1.0提出了严厉的批评。然而,他一直主张将glTF 2.0作为游戏引擎的标准资产交换格式。他回应了Lengyel与协议和分歧的特征比较。他声称,在许多情况下,降低功能实际上是一个优势,消除了歧义,使进口商更容易实施。

软件生态

glTF加载器在开源WebGL引擎中,包括Three.js,BabylonJS,Cesium,PEX,xeogl和A-Frame。
COLLADA,FBX和OBJ提供开源glTF转换器。 Assimp可以导入和导出glTF。
glTF文件也可以直接从各种3D编辑器导出,例如Blender,Vectary,Autodesk 3ds Max(使用Verge3D导出器),Autodesk Maya,Modo,Microsoft Paint 3D,Substance Painter等。

开源glTF实用程序库可用于编程语言,包括JavaScript,Node.js,C ++,C#,Java,Go,Rust,Haxe,Ada和TypeScript。
开源glTF验证器可以验证3D模型是否符合glTF规范。
glTF GitHub仓库中保留了完整的生态系统列表。
许多引擎开发者已经开始向 glTF 2.0 转换,已获得更好的性能、兼容性和质量,包括 BabylonJS、 three.js、Cesium、Sketchfab、 xeogl 和 instant3Dhub 引擎。glTF 2.0 可获得了来自业界企业的支持, 例如 Adobe、Google、Marmoset、Microsoft、NVIDIA、Oculus、UX3D 以及各个大学包括宾夕法尼亚 大学和罗马 大学。Khronos、glTF 工作和开发者社群共同创建了工具和示例代码生态系统,包括一些示例模型,从简单的框架到复杂含有 PBR 材质、皮肤和图形变换目标的模型,这些都将 帮助引擎开发者更好地执行 glTF 2.0。另外还有一个 ,
glTF 2.0
glTF 2.0 发布 – 2017 年 6 月 5 日
验证工具
可以让导出器开发者确定其生成了正确的 glTF 2.0 模型,并让引擎开发者知道他们使用的 2.0 模型是经过验证的。

glTF 2.0 的业界支持

“glTF 2.0 通过一个 API 中立 PBR 材质和图形变换目标的标准推动整个产业发展,同时,glTF 始终坚持 其本质,作为一个简单格式可以高效简便地执行”, Cesium 首席图像架构师 Patrick Cozzi

“感谢 glTF 2.0 带有的可表示、兼容和 PBR 待用材质,我们现在可以从我们的 InstantUV 软件简便地导 出优化资产到各种渲染器”,Fraunhofer IGD 公司 InstantUV 项目领导 Max Limper

“glTF 2.0是3D展示的一个重要里程碑,这从基础层面解放了下一代创新。glTF 2.0开源、可交互操作、 跨平台的本质使其成为微软的 3D for Everyone 和 Window 混合现实项目的基础元素,也将帮助实现各种 全新的创新、共享和使用 3D 和混合现实的方式” 微软 Windows 体验部合作伙伴软件工程师 Forest Gouin

“glTF 是一个传输 3D 图像资产的通用格式—就像用于 2D 图片的 JPEG 和视频的 MPEG,” glTF 规范联合编辑兼 Unity Technology VR/AR 战略官 Tony Parisi,“glTF 2.0 完全是一个图像 API,其独立于 操作系统,打开了在应用、跨桌面、网页共享 3D 以及虚拟和增强现实的的无限可能”。 

“在我们为客户提供标准化 3D 资产相关的解决方案时,glTF 2.0 是我们选择的格式” ——UX3D 联合创始人 Norbert Nopper。