DamagedHelmet 是一个经常用于 3D Hello world 测试的 gltf 模型,如下图所示:
glTF 数据结构
DamagedHelmet.json:
整个 gltf JSON 顶层被分为了 asset, scene, scenes, nodes, materials, meshes, textures, images, accessors, bufferViews, samplers, buffers 等字段,是这个 3D 模型的数据实体分类。
asset
gltf 资产元信息。
- 指:由 blender 导出,版本为 2.0 的 gltf 文件。
scene
一个 glTF 文件中可能存储了多个场景。 scene 属性指示加载资产时应显示的默认场景。
"scene": 0:默认场景定义在scenes[0]处。"nodes": [0]:场景树从nodes[0]开始。
nodes
"mesh": 0: 此 node 附加了一个 mesh,位于meshes[0]处。"rotation": [...]: 此 node 的旋转量,用四元数 xyzw 表示。
meshes
"primitives": 基元数组,每个基元定义要渲染的几何体。"attributes.POSITION": 0: 顶点位置数据的访问器索引,指向accessors[0],必须是VEC3类型。"attributes.NORMAL": 1: 顶点法线数据的访问器索引,指向accessors[1],必须是VEC3类型。"attributes.TEXCOORD_0": 2: UV 数据的访问器索引,指向accessors[2],必须是VEC2类型。"indices": 3: 顶点索引数据的访问器索引(不是顶点索引!!!),指向accessors[3],必须是SCALAR类型。"material": 0: 材质编号,指向materials[0]。
materials
emissiveFactor: 自发光通道强度emissiveTexture.index:0: 自发光贴图索引,指向textures[0]normalTexture.index:1: 法线贴图索引,指向textures[1]occlusionTexture.index:2: 遮挡贴图索引,指向textures[2]pbrMetallicRoughness: PBR 金属流参数baseColorTexture: 基础色贴图metallicRoughnessTexture: 金属度贴图
textures
sampler: 纹理采样模式。source: 指向的图片的索引,例如source:0 -> images[0]
accessors
将类型化视图转换为包含原始二进制数据的缓冲区视图。
bufferView: bufferViews 索引componentType: 访问器元件数据类型(这是一个枚举值)type: 元素数据类型count: 元素个数,例如VEC3的个数
componentType 枚举值
5120BYTE5121UNSIGNED_BYTE5122SHORT5123UNSIGNED_SHORT5125UNSIGNED_INT5126FLOAT
type 枚举值
"SCALAR""VEC2""VEC3""VEC4""MAT2""MAT3""MAT4"
Texture sampler
用于过滤和包装模式的纹理采样器属性。
- magFilter: 放大过滤器
9728NEAREST9729LINEAR
- minFilter: 缩小过滤器
9728NEAREST9729LINEAR9984NEAREST_MIPMAP_NEAREST9985LINEAR_MIPMAP_NEAREST9986NEAREST_MIPMAP_LINEAR9987LINEAR_MIPMAP_LINEAR
- wrapS: S (U) wrapping mode
33071CLAMP_TO_EDGE33648MIRRORED_REPEAT10497REPEAT
- wrapT: T (V) wrapping mode
33071CLAMP_TO_EDGE33648MIRRORED_REPEAT10497REPEAT