gltf格式
glTF格式本质上是一个JSON文件。
这一文件描述了整个3D场景的内容。它包含了对场景结构进行描述的场景图。
场景中的3D对象通过场景结点引用网格进行定义。
材质定义了3D对象的外观,动画定义了3D对象的变换操作(比如选择、平移操作)。
蒙皮定义了3D对象如何进行骨骼变换,相机定义了渲染程序的视锥体设置。
JSON结构
场景对象以数组的形式存储在JSON文件中。可以通过对应的数组来索引访问:
"meshes" :
[
{ ... }
{ ... }
...
],
场景中的一个结点可以通过网格索引引用上面定义的其中一个网格对象:
"nodes":
[
{ "mesh": 0, ... },
{ "mesh": 5, ... },
...
}
有两种类型的对象buffers和images可以包含外部文件链接;
读取和管理外部数据
读取和处理glTF格式文件从分析JSON结构开始,JSON结构被分析完后,就可以使用buffers和images数组来索引访问buffer和image对象。每个buffer和image对象引用了一块二进制数据。
二进制数据本质上是一个从buffer对象的URI处读取得到的内存块,没有任何层次和结构意义。
glb和gltf
GLB文件是以图形语言传输格式(glTF)保存的3D模型,它以二进制格式存储有关3D模型的信息,包括节点层级、摄像机、材质、动画和网格。GLB文件是[.GLTF]文件的二进制版本。
GLB文件扩展信息
glTF是一种高效、可扩展、可互操作的格式,用于传输和加载3D场景和模型。glTF格式的目标包括最大限度地减少文件大小、快速加载、完整的3D场景表示、运行时独立性以及伴随进一步开发的可扩展性。glTF的提出是源自于3D工业和媒体发展的过程中,对3D格式统一化的急迫需求。
GLB是glTF模型的二进制文件格式表示,它存储了glTF的组件,如JSON、BIN文件和图片。GLB避免了使用glTF格式文件变大的问题,通过压缩,GLB能更快地加载,提供完整的三维场景,且能在未来的开发中扩展。
GLB作为一个容器,用二进制格式实现glTF的内容,并规避了glTF的一些缺陷。GLB格式的规格说明有提到所有的读写的实现,供应用程序开发。