一、概述
-
glTF的全称是GL传输格式,是一种针对GL(WebGL,OpenGL ES以及OpenGL)接口的运行时资产(asset)。在3D内容的传输和加载中,glTF通过提供一种高效,易扩展,可协作的格式,填补了3D建模工具和现代GL应用之间的空白。
-
glTF资产是JSON文件,另外还支持外部数据。具体而言,glTF资产表示为:
- JSON格式的文件(.gltf ),其中包含完整的场景描述:节点层次结构,材质,照相机以及网格,动画和其他构造的描述符信息
- 包含几何和动画数据以及其他基于缓冲区的数据的二进制文件(.bin )
- 用于纹理的图像文件(.jpg ,.png )
-
glTF资产包含零个或多个场景,
scene.nodes数组中所有的节点都必须是根节点。 -
节点层次结构使用
children属性来定义,如"childredn":[1,2,3,4] -
节点通过
matrix属性和rotation、scale、translation属性来定义空间变换。ratation属性是单位四元数值(x,y,z,w),如"rotation":[0,0,0,1];scale和translatiion属性是单位三元数值,如"scale":[1,1,1]、"translation":[-17,-11,2] -
buffer存储二进制数据,包含几何体、网格、动画和蒙皮等大数据文件,并通过访问器(accessor)进行检索。"byteLength"指定缓存文件的大小,"uri"属性是URI到buffer的数据,buffer数据也可以作为base64编码的数据存储在glTF文件中,并通过URI进行引用。 -
"bufferView"表示数据在buffer中的子集,glTF文件中的对象不会直接访问buffer和bufferView,而是通过Accessor访问器来访问。
二、基础结构
1)scene:场景入口,由node构成树结构
2)node:场景层级中的一个节点,包含变换,可以有子节点。node通过指向mesh,camera,skin来描述Node的形变

3)camera:定义渲染场景的视点配置
4)mesh:描述场景中的几何物体,通过accessor来访问;通过扩展网格概念来定义变形目标,变形目标是可变的网格,其通过Mesh primitives中定义的targets属性实现,通常仅支持三个属性POSITION(位置位移),NORMAL(法线位移)和TANGENT(切线位移)。
5)skin:蒙皮的网格是用顶点属性定义的,影响一个顶点的关节数限制为每组4个,因此访问器必须具有VEC4类型。
所有的关节值必须在皮肤的关节范围内,未使用的关节值应设置未零。
用于控制蒙皮网格的关节层次结构是glTF节点层次结构,每个节点都指定为关节。
6)texture:glTF将纹理访问分为三种不同的对象类型:纹理,图像和采样器。
7)material:glTF使用基于物理渲染(PBR)广泛使用的材料表示一组通用参数来定义材料。
8)camera:摄影机定义了从视图到剪辑坐标的投影矩阵,投影分为透视图和正射投影。摄像机包含在节点中,因此可以进行转换。
摄像机存储在资产的cameras中,每个摄像机都定义了一个type属性,该属性指定投影的类型(透视或正交)。
9)animation:glTF通过节点变换的关键帧动画支持关节动画和蒙皮动画,关键帧数据存储在缓存中,并通过访问器在动画中引用。
动画储存在资产的animations中,每个动画定义了通道和采样器,这些采样器使用关键帧数据和插值方法指定访问器
10)extensions:任何glTF对象都可以具有可选的extensions属性。
三、与3D Tiles的联系
-
glTF是与API无关的3D资产运行时资产交付格式;3D Tiles是在glTF的基础上,加入了分层LOD的结构后得到的产品,专门为大量地理3D数据流式传输和海量渲染而设计的一种格式,是目前大火的开源WebGL框架Cesium的御用格式。
-
批处理3D模型(
b3dm)和实例3D模型(i3dm)格式基于glTF建立,glTF是为有效传输3D内容而设计的开放规范。这些格式的图块内容在二进制主体中嵌入了glTF资源,其中包含模型几何和纹理信息。点云格式未嵌入glTF。 -
glTF使用URI来引用缓冲区和图像资源。
-
数据类型分为两类:type和componentType。
type属性用来表明数据元素是标量(SCALLAR)、矢量(VEC3)还是矩阵(MAT4)componentType属性用来表明数据类型,如512为FLOAT类型
glTF是一种针对GL接口的运行时3D资产格式,用于高效、可扩展的内容传输。它包括JSON文件、二进制数据和纹理图像。资产由场景、节点、网格、材质、摄像机、动画等组成,支持基于物理渲染的材料表示和关节蒙皮动画。glTF是3D Tiles的基础,后者是为大量地理3D数据流式传输设计的格式,常用于Cesium框架。
693





