- blog.csdn.net/qq_31709249…
- glTF的全称是GL传输格式,是一种针对GL(WebGL,OpenGL ES以及OpenGL)接口的运行时资产(asset)。
- 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]

- scene:场景入口,由node构成树结构
- node:场景层级中的一个节点,包含变换,能够有子节点。node经过指向mesh,camera,skin来描述Node的形变
- camera:定义渲染场景的视点配置
- mesh:描述场景中的几何物体,经过accessor来访问;经过扩展网格概念来定义变形目标,变形目标是可变的网格,其经过Mesh primitives中定义的targets属性实现,一般仅支持三个属性POSITION(位置位移),NORMAL(法线位移)和TANGENT(切线位移)。编
- skin:蒙皮的网格是用顶点属性定义的,影响一个顶点的关节数限制为每组4个,所以访问器必须具备VEC4类型。
- texture:glTF将纹理访问分为三种不一样的对象类型:纹理,图像和采样器。
- material:glTF使用基于物理渲染(PBR)普遍使用的材料表示一组通用参数来定义材料。
- animation:glTF经过节点变换的关键帧动画支持关节动画和蒙皮动画,关键帧数据存储在缓存中,并经过访问器在动画中引用。
- extensions:任何glTF对象均可以具备可选的extensions属性。
- "bufferView"表示数据在buffer中的子集,glTF文件中的对象不会直接访问buffer和bufferView,而是经过Accessor访问器来访问。
- buffer存储二进制数据,包含几何体、网格、动画和蒙皮等大数据文件,并经过访问器(accessor)进行检索。"byteLength"指定缓存文件的大小,"uri"属性是URI到buffer的数据,buffer数据也能够做为base64编码的数据存储在glTF文件中,并经过URI进行引用
{
"scenes" : [
{
"nodes" : [ 0 ]
}
],
"nodes" : [
{
"mesh" : 0
}
],
"meshes" : [
{
"primitives" : [ {
"attributes" : {
"POSITION" : 1
},
"indices" : 0
} ]
}
],
"buffers" : [
{
"uri" : "data:application/octet-stream;base64,AAABAAIAAAAAAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAAAAAACAPwAAAAA=",
"byteLength" : 44
}
],
"bufferViews" : [
{
"buffer" : 0,
"byteOffset" : 0,
"byteLength" : 6,
"target" : 34963
},
{
"buffer" : 0,
"byteOffset" : 8,
"byteLength" : 36,
"target" : 34962
}
],
"accessors" : [
{
"bufferView" : 0,
"byteOffset" : 0,
"componentType" : 5123,
"count" : 3,
"type" : "SCALAR",
"max" : [ 2 ],
"min" : [ 0 ]
},
{
"bufferView" : 1,
"byteOffset" : 0,
"componentType" : 5126,
"count" : 3,
"type" : "VEC3",
"max" : [ 1.0, 1.0, 0.0 ],
"min" : [ 0.0, 0.0, 0.0 ]
}
],
"asset" : {
"version" : "2.0"
}
}