1. 程式人生 > >3dTiles 資料規範詳解[1] 介紹

3dTiles 資料規範詳解[1] 介紹

> 版權:轉載請帶原地址。[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