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 }
展開

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM