3dTiles 資料規範詳解[1] 介紹
阿新 • • 發佈:2020-06-15
> 版權:轉載請帶原地址。[https://www.cnblogs.com/onsummer/p/12799366.html](https://www.cnblogs.com/onsummer/p/12799366.html) @秋意正寒
# Web中的三維
html5和webgl技術使得瀏覽器三維變成了可能。
巧婦難為無米之炊,三維資料(三維模型)是三維視覺化重要的一環,事實上就是:三維資料眾多,行業跨界廣。
參考資料:http://www.bgteach.com/article/132
![](https://img2020.cnblogs.com/blog/1097074/202005/1097074-20200523014528531-891935063.png)
three.js的各種載入器實現了大部分通用三維格式的載入,遮蔽了格式不同的資料結構差異。
![](https://img2020.cnblogs.com/blog/1097074/202006/1097074-20200614234738740-368168816.png)
然而,這樣還是不能滿足日益增長的效果需求,比如場景一大,模型檔案體積變大,解析所耗費的時間越來越長。
webgl,包括所有gpu有關的圖形渲染程式設計,幾乎只認這樣的三維資料:頂點、頂點顏色、頂點法線、著色語言...
![](https://img2020.cnblogs.com/blog/1097074/202006/1097074-20200614234905265-267856252.png)
所以,三維圖形界的通用格式:glTF應運而生,它面向終點,它按照圖形程式設計所需的格式來儲存資料,藉以二進位制編碼提高傳輸速度。
![](https://img2020.cnblogs.com/blog/1097074/202006/1097074-20200614235321205-234922799.png)
它不再使用面向物件的思維儲存三維模型、貼圖紋理,而是按顯示卡的思維儲存,存的是頂點、法線、頂點顏色等最基礎的資訊,只不過組織結構上進行了精心的設計。
它面向終點,就意味著可編輯性差,因為渲染效能的提高犧牲了可編輯性,它不再像3ds、dae甚至是max、skp一樣容易編輯和轉換。
事實上,大多數三維軟體提供了glTF格式的轉換,或多一步,或一步到位。
# 地理真三維
早年,地理的三維還處於地形三維上,即數字高程模型(DEM)提供地表的高度拉伸。柵格高程資料、等高線、不規則三角網等均是數字高程模型的具體案例。
下圖是不規則三角網,也即所謂的三角面片(圖形渲染中很常見):
![](https://img2020.cnblogs.com/blog/1097074/202006/1097074-20200615000036354-1862054883.png)
隨著學科的融合、計算機技術和硬體的更新換代,使得有模型、有細節的真三維融入到GIS中成為了可能,或者說,計算機技術和硬體的升級,給GIS以更廣闊的視角觀察世界。
cesium.js 號稱是 webgl 封裝的三維地理庫,是支援 gltf 模型的載入的。
![](https://img2020.cnblogs.com/blog/1097074/202006/1097074-20200615000610677-1693800618.png)
面對大規模精細三維資料的載入,還要照顧到GIS的各種座標系統、分析計算,gltf這種單個模型的方案顯得力不從心。
![](https://img2020.cnblogs.com/blog/1097074/202006/1097074-20200615002413716-1925312818.png)
2016年,Cesium 團隊借鑑傳統2DGIS的地圖規範——WMTS,借鑑圖形學中的層次細節模型,打造出大規模的三維資料標準—— `3d-Tiles`,中文譯名:三維瓦片。
它在模型上利用了 gltf 渲染快的特點,對大規模的三維資料進行組織,包括層次細節模型、模型的屬性資料、模型的層級資料等。
# 3dTiles的設計思想
`3dTiles` 繼承了 `gltf` 的優點:貼合圖形渲染 API 的邏輯,討 GPU 喜愛,`webgl` 對其內部組織起來的三維模型資料,不需要轉換,可以直接渲染(glTF 的功勞)。
關於 glTF 是如何嵌入到 3dTiles 中的,開篇不談,後續精講。
> 我們區分一組概念:規範和實現。
3dTiles 是一種規範,在規範的指導下,各種資原始檔可以是獨立存在於硬碟中的目錄、檔案,也可以以二進位制形式寫入資料庫中。目前,3dTiles 的官方實現只有 “雜湊檔案”,也就是檔案、資料夾的形式儲存在硬碟中,有關如何儲存到資料庫中的討論,官方仍在進行中(截至發部落格)。
glTF 也是一種規範,它的資料檔案不一定就是字尾名為 `.gltf` 的檔案,也不一定只有一個檔案(glTF 的檔案還可以是二進位制檔案、紋理貼圖檔案等,扯遠了哈)。
在本文,會嚴格指明是資料還是資料標準,如果我說的是 “XXX檔案(例如 Bird.glb 檔案)” ,那就是在指特定的檔案。
3dTiles還有一個特點:那就是不記錄模型資料,只記錄各級“Tile”的邏輯關係,以及“Tile”自己的屬性資訊。所謂的模型資料,是指三維模型的頂點、貼圖材質、法線、顏色等資訊。邏輯關係是指,各級Tile是如何在空間中保持連續的,LOD是如何組織的。屬性資訊就很簡單啦,門有門的生產商,窗戶有窗戶的使用年限等,往大了說,建築還有它自己的壽命、法人、施工單位等屬性資訊。
3dTiles的特點總結如下:
- 三維模型使用了 glTF 規範,繼承它的渲染高效能
- 除了嵌入的 glTF,3dTiles 自己 **只記錄各級Tile的空間邏輯關係(如何構成整個3dtiles)和屬性資訊,以及模型與屬性如何掛接在一起的資訊**
我覺得你還是雲裡霧裡的,下一節將展示3dTiles具體資料,說說3dTiles的組織結構,說說3dTiles中的"Tile",也就是“三維瓦片資料”中的“瓦片”是什麼。
----
3dTiles系列部落格最終目錄:
[01 引入與部落格目錄:3dTiles 資料規範詳解](https://www.cnblogs.com/onsummer/p/12799366.html)
[02 Tileset與Tile]()
[03 FeatureTable與BatchTable:瓦片核心要義與模型屬性掛接]()
[04.1 B3dm 型別]()
[04.2 I3dm 型別]()
[04.3 Pnts 型別]()
[04.4 Cmpt 型別]()
[04.5 未釋出的瓦片規範]()
[05 3dTiles強大的擴充套件能力]()
[06 優缺點]()
[07 與I3S