版權:轉載請帶原地址。https://www.cnblogs.com/onsummer/p/12799366.html @四季留歌
3dTiles系列博客最終目錄:
-
06 優缺點以及與I3S比較 Comming soon
Web中的三維
html5和webgl技術使得瀏覽器三維變成了可能。
巧婦難為無米之炊,三維數據(三維模型)是三維可視化重要的一環,事實上就是:三維數據眾多,行業跨界廣。
參考資料:http://www.bgteach.com/article/132
three.js的各種加載器實現了大部分通用三維格式的加載,屏蔽了格式不同的數據結構差異。
然而,這樣還是不能滿足日益增長的效果需求,比如場景一大,模型文件體積變大,解析所耗費的時間越來越長。
webgl,包括所有gpu有關的圖形渲染編程,幾乎只認這樣的三維數據:頂點、頂點顏色、頂點法線、着色語言...
所以,三維圖形界的通用格式:glTF應運而生,它面向終點,它按照圖形編程所需的格式來存儲數據,借以二進制編碼提高傳輸速度。
它不再使用面向對象的思維存儲三維模型、貼圖紋理,而是按顯卡的思維存儲,存的是頂點、法線、頂點顏色等最基礎的信息,只不過組織結構上進行了精心的設計。
它面向終點,就意味着可編輯性差,因為渲染性能的提高犧牲了可編輯性,它不再像3ds、dae甚至是max、skp一樣容易編輯和轉換。
事實上,大多數三維軟件提供了glTF格式的轉換,或多一步,或一步到位。
地理真三維
早年,地理的三維還處於地形三維上,即數字高程模型(DEM)提供地表的高度拉伸。柵格高程數據、等高線、不規則三角網等均是數字高程模型的具體案例。
下圖是不規則三角網,也即所謂的三角面片(圖形渲染中很常見):
隨着學科的融合、計算機技術和硬件的更新換代,使得有模型、有細節的真三維融入到GIS中成為了可能,或者說,計算機技術和硬件的升級,給GIS以更廣闊的視角觀察世界。
cesium.js 號稱是 webgl 封裝的三維地理庫,是支持 gltf 模型的加載的。
面對大規模精細三維數據的加載,還要照顧到GIS的各種坐標系統、分析計算,gltf這種單個模型的方案顯得力不從心。
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",也就是“三維瓦片數據”中的“瓦片”是什么。