进一步学习 Cesium 和 3D Tiles 数据相关
接此;
https://blog.csdn.net/bcbobo21cn/article/details/112464630
如下一段代碼;也能加載出3D Tiles數(shù)據(jù);此段代碼和前文的有些相似;
<script> var viewer = new Cesium.Viewer('cesiumContainer');var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({url: './SampleData/Cesium3DTiles/Classification/Photogrammetry/tileset.json'}));tileset.readyPromise.then(function(tileset) {viewer.scene.primitives.add(tileset);viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(0.5, -0.2, tileset.boundingSphere.radius * 1.0));}).otherwise(function(error) {console.log(error);}); </script>標(biāo)準(zhǔn)的加載代碼是如下,
var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({url: url, //數(shù)據(jù)路徑maximumScreenSpaceError: 2, //最大的屏幕空間誤差maximumNumberOfLoadedTiles: 1000, //最大加載瓦片個(gè)數(shù)modelMatrix: m //形狀矩陣 }));? ? 下面來學(xué)習(xí)相關(guān)參數(shù)和3D Tiles數(shù)據(jù)格式的相關(guān)內(nèi)容;
第一個(gè)參數(shù)url,已經(jīng)了解;
第三個(gè)參數(shù)是,最大加載瓦片個(gè)數(shù);
? ? 地圖瓦片的概念,
瓦片地圖
? ? 瓦片地圖金字塔模型是一種多分辨率層次模型,從瓦片金字塔的底層到頂層,分辨率越來越低,但表示的地理范圍不變。
? ? 進(jìn)行分塊,從地圖圖片的左上角開始,從左至右、從上到下進(jìn)行切割,分割成相同大小(比如256x256像素)的正方形地圖瓦片,形成第0層瓦片矩陣;
? ? 在第0層地圖圖片的基礎(chǔ)上,按每2x2像素合成為一個(gè)像素的方法生成第1層地圖圖片,并對(duì)其進(jìn)行分塊,分割成與下一層相同大小的正方形地圖瓦片,形成第1層瓦片矩陣;
? ? 采用同樣的方法生成第2層瓦片矩陣;…;如此下去,直到第N一1層,構(gòu)成整個(gè)瓦片金字塔。
這里maximumNumberOfLoadedTiles應(yīng)該指發(fā)布出來的一幅圖片被切成小圖片的個(gè)數(shù);
根據(jù)cesium教程,單個(gè)瓦片的位置信息是寫到了數(shù)據(jù)中的,即.b3dm和對(duì)應(yīng)的json文件中;
打開這兩個(gè)文件看下;我確實(shí)找不到瓦片的位置信息是哪些,很多東西;
下面來學(xué)習(xí)3D Tiles 數(shù)據(jù)格式相關(guān)內(nèi)容;
3dTiles 數(shù)據(jù)規(guī)范概述
? ? 三維數(shù)據(jù)(三維模型)是三維可視化重要的一環(huán);三維數(shù)據(jù)眾多,行業(yè)跨界廣。有各種三維數(shù)據(jù)格式;
? ? three.js的各種加載器實(shí)現(xiàn)了大部分通用三維格式的加載,屏蔽了格式不同的數(shù)據(jù)結(jié)構(gòu)差異;
? ? 場(chǎng)景一大,模型文件體積變大,解析所耗費(fèi)的時(shí)間越來越長(zhǎng);
? ? 產(chǎn)生了三維圖形界的通用格式:glTF;它面向終點(diǎn),它按照?qǐng)D形編程所需的格式來存儲(chǔ)數(shù)據(jù),借以二進(jìn)制編碼提高傳輸速度;
? ? 它面向終點(diǎn),就意味著可編輯性差,因?yàn)殇秩拘阅艿奶岣郀奚丝删庉嬓?#xff0c;它不再像3ds、dae甚至是max、skp一樣容易編輯和轉(zhuǎn)換;
? ? 大多數(shù)三維軟件提供了glTF格式的轉(zhuǎn)換,或多一步,或一步到位;
? ? cesium.js 號(hào)稱是 webgl 封裝的三維地理庫(kù),是支持 gltf 模型的加載的;
? ? 面對(duì)大規(guī)模精細(xì)三維數(shù)據(jù)的加載,還要照顧到GIS的各種坐標(biāo)系統(tǒng)、分析計(jì)算,gltf這種單個(gè)模型的方案顯得力不從心;
? ? 然后,Cesium 團(tuán)隊(duì)借鑒傳統(tǒng)2DGIS的地圖規(guī)范——WMTS,借鑒圖形學(xué)中的層次細(xì)節(jié)模型,打造出大規(guī)模的三維數(shù)據(jù)標(biāo)準(zhǔn)—— 3d-Tiles,中文譯名:三維瓦片;
? ? 它在模型上利用了 gltf 渲染快的特點(diǎn),對(duì)大規(guī)模的三維數(shù)據(jù)進(jìn)行組織,包括層次細(xì)節(jié)模型、模型的屬性數(shù)據(jù)、模型的層級(jí)數(shù)據(jù)等;
? ? 3dTiles 是一種規(guī)范,在規(guī)范的指導(dǎo)下,各種資源文件可以是獨(dú)立存在于硬盤中的目錄、文件,也可以以二進(jìn)制形式寫入數(shù)據(jù)庫(kù)中;
? ? glTF 也是一種規(guī)范,它的數(shù)據(jù)文件不一定就是后綴名為 .gltf 的文件,也不一定只有一個(gè)文件(glTF 的文件還可以是二進(jìn)制文件、紋理貼圖文件等);
? ? 3dTiles還有一個(gè)特點(diǎn):那就是不記錄模型數(shù)據(jù),只記錄各級(jí)“Tile”的邏輯關(guān)系,以及“Tile”自己的屬性信息;
tileset.json文件 - 1
? ? 3dTiles數(shù)據(jù)的入口文件是一個(gè)名叫 tileset.json 的文件,而通常來說,這個(gè)json必須存在以下幾個(gè)頂級(jí)對(duì)象:
? ? asset
? ? root
? ? geometricError
? ? geometricError,只知道這個(gè)數(shù)值的大小能控制 LOD 的顯示隱藏,且這個(gè)數(shù)值父級(jí)瓦片一定比子級(jí)瓦片大;
? ? asset 對(duì)象,記錄了整個(gè)數(shù)據(jù)集的聲明和歸屬數(shù)據(jù),類似于數(shù)據(jù)聲明,能在此寫入 version、tilesetVersion ?等屬性;
? ? root 對(duì)象,即這個(gè)數(shù)據(jù)集的根瓦片,每個(gè)3dTiles數(shù)據(jù)集必須有一個(gè) root 對(duì)象;
? ? 至于 tileset.json 中其他的頂級(jí)對(duì)象,可查閱官方文檔;
總結(jié)
以上是生活随笔為你收集整理的进一步学习 Cesium 和 3D Tiles 数据相关的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC CAsyncSocket类基本使
- 下一篇: 在PowerShell中创建对象并添加属