gltf的格式解释

gltf的格式解释

accessors
  accessor对象用于描述数据的结构和层次意义。它描述了bufferView所引用数据的解释方式。
 
asset

bufferViews
  一个bufferView对象引用了一个buffer对象的一部分数据。据位置从偏移值byteOffset(0)开始,byteLength长度为6字节。

buffers
  buffer对象描述了一个没有任何结构和层次意义的数据块。它包含了一个uri属性,用于引用外部文件作为数据,或是直接使用数据URI作为数据内容。


extensionsRequired
extensionsUsed
images
  一个image对象可以引用一个外部图像文件来作为要渲染的3D对象的纹理。
  uri通常指向一个PNG或JPG文件。这些格式的图像文件可以显著减小图像数据的体积,便于互联网传播。image对象也可以引用存储在buffer中的图像数据。
  通常,buffer和image对象的uri指向了一个包含实际数据的文件,但也可以直接在uri中通过数据URI直接包含数据。
  
material 
    包含了定义3D对象外观的参数。它通常引用了用于3D对象渲染的texture对象。
texture 

   定义了一个sampler对象和一个image对象。sampler对象定义了image对象在3D对象上的张贴方式。

meshes  
   mesh对象用于表示场景中出现的3D对象实际的几何数据。mesh对象本身不包含任何属性,只包含了一个primitives对象数组,用于描述整个网格所使用的几何数据。每个primitive对象描述了一部分mesh对象的几何数据。
   primitive对象包含了一个attribute对象数组,存储了mesh对象的几何数据信息。attribute的POSITION属性,用于描述mesh对象的顶点位置信息;
   primitive对象的indices属性描述了用于渲染的顶点索引数据,默认情况下,连续3个顶点索引构成一个三角形。
   
nodes 节点

scene 场景

scenes

---关系1
  scene ->node -> mesh
  
  材质贴图相关关系:
  meshes -> material -> textures-> image、sampler.  
  
    将纹理张贴在mesh对象上,需要纹理坐标信息、纹理。
  
  (1)纹理坐标
    meshes.primitives.attributes.TEXCOORD_0
  
  (2)纹理
    meshes.primitives.material -> materials;

    materials.pbrMetallicRoughness.baseColorTexture.index  ->textures;
    
    textures.source -->images,textures.sampler -->samplers;
  
  例子:
   "meshes" : [ {
    "primitives" : [ {
      "attributes" : {
        "POSITION" : 1,
        "TEXCOORD_0" : 2
      },
      "indices" : 0,
      "material" : 0
    } ]
  } ]
  
  将纹理张贴在mesh对象上,还需要纹理坐标信息,纹理坐标由mesh对象包含的primitive对象提供。默认情况下,使用的是TEXCOORD_0纹理坐标,如果需要使用多个纹理坐标,可以使用 texCoord 属性指明使用的是哪一纹理坐标。
   "baseColorTexture" : {
      "index" : 0,
      "texCoord": 2  
    },
  
   "materials" : [ {
    "pbrMetallicRoughness" : {
      "baseColorTexture" : {
        "index" : 0
      },
      "metallicFactor" : 0.0,
      "roughnessFactor" : 1.0
    }
  } ]
  
  这里的material对象只包含了一个pbrMetallicRoughness对象,这一对象指定了基于metallic-roughness模型的材质属性(没有显式指定的材质属性会使用属性的默认值)。
 
  baseColorFactor 属性包含了红,绿,蓝和alpha成分,构成了材质了基本颜色(这里设置的是亮橘色)。
  
  metallicFactor 属性用于指定材质的反射情况与金属的相似度,这里我们设置相似度为0.5。
  
  roughnessFactor 属性用于指定材质粗糙度,这里我们设置粗糙度为0.1。
  
   "textures" : [ {
    "sampler" : 0,
    "source" : 0
  } ],
  
  texture对象通过索引引用了一个sampler对象和一个image对象。image对象包含了一个uri,引用了一个外部图像文件。
  
  
  "images" : [ {
    "uri" : "testTexture.png"
  } ],
  "samplers" : [ {
    "magFilter" : 9729,
    "minFilter" : 9987,
    "wrapS" : 33648,
    "wrapT" : 33648
  } ]
  magFilter 放大过滤器
  minFilter 缩小过滤器
  wrapS s的卷绕模式
  wrapT t的卷绕模式
  
  
--关系2
 meshes.primitives.attributes.POSITION 的数字对应accessor, accessors中的bufferView--bufferViews--buffers

  mesh primitive属性通过属性字典的形式定义了模型的几何数据。这些属性的属性值对应这一个accessor。
  如下面的例子所示,此mesh有两个属性,一个POSITION,一个NORMAL,POSITION对应着第一个accessor,NORMAL对应着第二个accessor

  "meshes" : [
    {
      "primitives" : [ {
        "attributes" : {
          "POSITION" : 1,
          "NORMAL" : 2
        },
        "indices" : 0
      } ]
    }
  ]

-- https://zhuanlan.zhihu.com/p/65264050

你可能感兴趣的:(gltf的格式解释)