zoukankan      html  css  js  c++  java
  • gltf格式说明

    一、gltf格式说明

    1、 asset

            asset属性是每一个gltf资源的必要属性,也是区分json和gltf的关键属性。

           参数:

     

    类型

    描述

    是否必须

    copyright

    string

    版权信息

    No

    generator

    string

    生成该资源的工具

    No

    version

    string

    当前版本

    Yes

    minVersion

    string

    最下的目标版本

    No

    extensions

    object

    属性拓展

    No

    extras

    any

    附加信息

    No

           

     

     

     

     

     

     

     

     

     

     

     

     

    案例:

     

    2、 scenes

           scene是glTF的入口。一个glTF可能包含多个scene,但是大多数情况下,只包含一个。每个scene包含一个nodes数组,形成场景的root节点,nodes数组中可以存在多个node,让一个场景有多个root,但一般情况下只有一个root node。

          参数:

     

    类型

    描述

    是否必须

    nodes

    integer [1-*]

    节点的下标

    必须为根节点

    name

    string

    名字

    No

    extensions

    object

    属性拓展

    No

    extras

    any

    附加信息

    No

     

     

     

     

     

     

     

     

     

      案例:

        

    3、  Nodes形成场景图(层次)结构

          每个node可以包含一个叫children的数组,所以每个node都是一个具有层级关系的,所有的节点共同构成了场景的层级结构(类似OSG)。

          参数:

     

    类型

    描述

    是否必须

    camera

    integer

    摄像机节点,跟着摄像机矩阵。

    No

    children

    integer [1-*]

    子节点列表

    No

    skin

    integer

    蒙皮节点

    No

    matrix

    number [16]

    矩阵

    No, default: [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]

    mesh

    integer

    物体节点

    No

    rotation

    number [4]

    四元数旋转

    No, default: [0,0,0,1]

    scale

    number [3]

    缩放比

    No, default: [1,1,1]

    translation

    number [3]

    位置信息

    No, default: [0,0,0]

    weights

    number [1-*]

    mesh的权重数组

    No

    name

    string

    名字

    No

    extensions

    object

    属性拓展

    No

    extras

    any

    附加信息

    No

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    案例:

        

    4、 mesh结构

        每个mesh结构代表一个在场景中出现的真实的几何实例,mesh本身不包含任何属性,只包含一个mesh.primitive图元数组对象,作为模型的组成部分。每个图元包含一个对mesh几何数据的描述。

         图元中有一个attributes数组,描述了mesh几何对象的顶点属性。此处只有Position属性用来描述顶点位置。通过indices属性,可以知道该mesh是一个索引几何。例子中indices为1,表示使用第二个accessor来解析该mesh。  

                  

        默认情况下,mesh primitive的渲染模式为三角形。但是通过mode属性,可以指定其他渲染模式。glTF支持的渲染模式有

          

    5、 buffer、bufferview和accessor

      这三个属性提供了mesh图元的几何数据信息。

     (1) buffers:定义了一个原始的数据块

          1) buffer包含一个uri,通过这个uri,可以指向一个外部的二进制文件(.bin文件),或者也可以在json文件中直接包含二进制数据块

            

           

          2) 此外还有要给byteLength属性,定义了数据的长度

    (2) bufferviews:bufferview是buffer的“块”或“切片”,target可以是一个常量指示数据是用于顶点属性(34962,表示ARRAY_BUFFER),或者该数据被用于顶点索引(34963,表示ELEMENT_ARRAY_BUFFER)。

        

    (3) accessor通过描述数据类型和布局,来描述bufferview中的数据应如何解读。一个accessor对应一个bufferview,用来定义bufferview的数据类型、数据格式和布局。

         

            1)     bufferview字段描述该访问器是针对哪个bufferview。

            2)     bufferoffset属性,用来表明bufferview的数据从什么地方开始读取。

            3)     count属性,描述数据长度。

            4)     type属性,数据类型(标量(SCALLAR)、矢量(VEC3)还是矩阵(MAT4))。

            5)     componentType描述的是变量类型(如float)。--BYTE = 5120,UNSIGNED_BYTE = 5121,SHORT = 5122,UNSIGNED_SHORT = 5123,UNSIGNED_INT = 5125,FLOAT = 5126

            6)     min、max,每种类型的属性数据的最大最小值,在顶点position情况下,min和max属性定义了几何对象的包围盒边界,这对碰撞检测和视锥体裁剪非常有用。

    6、 materials

        

        name:材质名称

        baseColorFactor:RGBA颜色

    7、 texture

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

     

    8、 Images:

        

    9、 samplers

        

    二、数据示例:

     1 {
     2     "asset": {
     3         "version": "2.0"
     4     },
     5     "scenes": [{
     6             "nodes": [0]
     7         }
     8     ],
     9     "nodes": [{
    10             "children": [1, 2, 3],
    11             "name": "rootNode"
    12         }, {
    13             "name": "M5",
    14             "extras": {
    15                 "elementGuid": "006b92a5-80f6-4bdc-b1de-f09bb713e4c5"
    16             },
    17             "mesh": 0
    18         }, {
    19             "name": "F2-外墙-空心砖-240mm",
    20             "extras": {
    21                 "elementGuid": "00d5d5cb-1968-4d80-ae22-da15c6176eef"
    22             },
    23             "mesh": 1
    24         }
    25     ],
    26     "meshes": [{
    27             "primitives": [{
    28                     "mode": 4,
    29                     "indices": 1,
    30                     "material": 0,
    31                     "attributes": {
    32                         "POSITION": 0
    33                     }
    34                 }
    35             ]
    36         }, {
    37             "primitives": [{
    38                     "mode": 4,
    39                     "indices": 3,
    40                     "material": 1,
    41                     "attributes": {
    42                         "POSITION": 2
    43                     }
    44                 }
    45             ]
    46         }
    47     ],
    48     "buffers": [{
    49             "byteLength": 18624,
    50             "uri": "\B91DCCD0-9768-4EF9-BD8C-158BF461A7ED.bin"
    51         }, {
    52             "byteLength": 3264,
    53             "uri": "\7CCD787D-F469-4515-9016-C7D1AE4CA3D2.bin"
    54         }
    55     ],
    56     "bufferViews": [{
    57             "buffer": 0,
    58             "byteLength": 13968,
    59             "byteOffset": 0,
    60             "target": 34962
    61         }, {
    62             "buffer": 0,
    63             "byteLength": 4656,
    64             "byteOffset": 13968,
    65             "target": 34963
    66         }, {
    67             "buffer": 1,
    68             "byteLength": 2448,
    69             "byteOffset": 0,
    70             "target": 34962
    71         }, {
    72             "buffer": 1,
    73             "byteLength": 816,
    74             "byteOffset": 2448,
    75             "target": 34963
    76         }
    77     ],
    78     "materials": [{
    79             "name": "木材-刨花板",
    80             "pbrMetallicRoughness": {
    81                 "metallicFactor": 0.0,
    82                 "roughnessFactor": 1.0,
    83                 "baseColorFactor": [0.85490197, 0.6784314, 0.14509805, 1.0]
    84             },
    85             "alphaMode": "BLEND"
    86         }, {
    87             "name": "米黄色涂料",
    88             "pbrMetallicRoughness": {
    89                 "metallicFactor": 0.0,
    90                 "roughnessFactor": 1.0,
    91                 "baseColorFactor": [0.2784314, 0.28627452, 0.2901961, 1.0]
    92             },
    93             "alphaMode": "BLEND"
    94         }
    95     ]
    96 }
    展开
  • 相关阅读:
    上涨、下跌、震荡,我只做下跌 (有钱人赚钱太有心机!
    股票操作指南
    股票要素与心理学研究
    时序图组成
    软件描述的静态与动态
    用dedecms做网站时,空间服务器选择IIS还是apache???
    dedecms 图集标签{dede:productimagelist} {dede:field name='imgurls'}&nbs
    dede内容页调用图片集下所有图片方法!
    dede文章插入分页符不起作用,编辑器中出现分页符,导致文章显示不全
    dede织梦怎么修改description的字数
  • 原文地址:https://www.cnblogs.com/duoduo-727/p/14480340.html
Copyright © 2011-2022 走看看