依賴於
3D Tiles 1.0
可選與必需
如果用到了 glTF 作為瓦片內容檔案,那麼它必須同時出現在 extensionsUsed
和 extensionsRequired
陣列中,即“必需的”。
1. 簡介
上圖中有一個瓦片引用了 house.glb
,而這個 house.glb
的模型就是一個房子,可以直接被 3D Tiles 的瓦片引用。此處 "content": "house.glb"
是簡略寫法。
這個擴充套件允許 3D Tiles 在瓦片檔案上直接使用 glTF 2.0 模型檔案。同時支援 JSON 格式的 gltf 檔案和二進位制的 glb 檔案。
使用這個擴充套件可以簡化資料的生產,主要就是利用好 glTF 的工具鏈。大多數時候,1.0 的瓦片資料可以輕易地轉為 glTF 格式。
參考 遷移指南。
2. 示例 JSON
具體的 JSON 模式定義在文末。
執行時引擎(通常是 CesiumJS)必須在載入瓦片內容之前,確定相容性問題。
比如,某些 glTF 模型檔案用到了一些 glTF 擴充套件,那麼這些額外的 glTF 擴充套件就必須寫在 Tileset 的頂級屬性 extensions
中的 3DTILES_content_gltf
物件中。
舉例:
{
"asset": {
"version": "1.0"
},
"extensionsUsed": ["3DTILES_content_gltf"],
"extensionsRequired": ["3DTILES_content_gltf"],
"extensions": {
"3DTILES_content_gltf": {
"extensionsUsed": ["EXT_mesh_gpu_instancing"],
"extensionsRequired": ["EXT_mesh_gpu_instancing"]
}
},
"geometricError": 240,
"root": {
"boundingVolume": {
"region": [
-1.3197209591796106,
0.6988424218,
-1.3196390408203893,
0.6989055782,
0,
88
]
},
"geometricError": 0,
"refine": "ADD",
"content": {
"uri": "trees.gltf"
}
}
}
可以看到,這份入口檔案的 extensions
屬性,下有一個 3DTILES_content_gltf
物件,其下又有兩個與 Tileset 類似的 extensionsUsed
和 extensionsRequired
陣列。
含義是類似的,extensionsUsed
陣列表示 glTF 用到了哪些擴充套件,extensionsRequired
陣列表示必需有這些擴充套件才可以正常使用。
上面這份資料就表示,root 瓦片的內容檔案 trees.gltf
模型,用到了 glTF 規範中的 EXT_mesh_gpu_instancing
擴充套件,而且必需要用到這個擴充套件。
附 3DTILES_content_gltf 模式定義
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "tileset.3DTILES_content_gltf.schema.json",
"title": "3DTILES_content_gltf extension",
"type": "object",
"description": "3D Tiles extension that allows a tileset to use glTF models directly as tile content.",
"allOf": [
{
"$ref": "tilesetProperty.schema.json"
}
],
"properties": {
"extensionsUsed": {
"type": "array",
"description": "An array of glTF extensions used by glTF content in the tileset.",
"items": {
"type": "string"
},
"minItems": 1
},
"extensionsRequired": {
"type": "array",
"description": "An array of glTF extensions required by glTF content in the tileset.",
"items": {
"type": "string"
},
"minItems": 1
},
"extensions": {},
"extras": {}
}
}