首次使用Cesium加载3D数据不成功
接此;
https://blog.csdn.net/bcbobo21cn/article/details/110454547
?
參閱相關(guān)教程;Cesium加載3D數(shù)據(jù)是通過(guò)3D Tiles進(jìn)行;
3D Tiles是cesium小組定義的一種數(shù)據(jù)集;格式公開(kāi);
?
先看一下有沒(méi)有在線示例3D Tiles,有的話使用其url來(lái)做一個(gè)示例;
看cesium網(wǎng),cesium中文網(wǎng);需要注冊(cè);
看示例,示例帶有示例3D Tiles文件;
?
基本的加載代碼如下;
<script>var viewer = new Cesium.Viewer("cesiumContainer");var palaceTileset = new Cesium.Cesium3DTileset({ url: './SampleData/Cesium3DTiles/Classification/Photogrammetry/tileset.json' //或者url: 'http://ip:port/www/DAEPalace/tileset.json' });var longitude = 114.33; var latitude = 30.35; height = 150; var heading = 2; palaceTileset.readyPromise.then(function(argument) {//經(jīng)緯度、高轉(zhuǎn)笛卡爾坐標(biāo)var position = Cesium.Cartesian3.fromDegrees(longitude, latitude, height);var mat = Cesium.Transforms.eastNorthUpToFixedFrame(position);var rotationX = Cesium.Matrix4.fromRotationTranslation(Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(heading)));Cesium.Matrix4.multiply(mat, rotationX, mat);palaceTileset._root.transform = mat; })viewer.scene.primitives.add(palaceTileset); </script>使用json數(shù)據(jù)的url來(lái)new一個(gè)Cesium3DTileset類對(duì)象;
然后把此對(duì)象添加到viewer.scene上面;
可以通過(guò)指定經(jīng)緯高調(diào)整模型位置:
? ? 由經(jīng)緯度和height得到一個(gè)position;
? ? 由position得到一個(gè)mat,矩陣;
? ? fromRotationTranslation是坐標(biāo)轉(zhuǎn)換方式;
? ? Cesium.Matrix4.multiply(mat, rotationX, mat), 矩陣轉(zhuǎn)換以后獲得一個(gè)新的mat;
? ? palaceTileset._root.transform = mat,mat賦給數(shù)據(jù)集的transform參數(shù);
運(yùn)行一下;然后定位到加載的經(jīng)緯度,114.33,30.35;沒(méi)有3D數(shù)據(jù)出來(lái);只有此經(jīng)緯度的底圖;
調(diào)整不同的參數(shù);height,heading;3D數(shù)據(jù)還是沒(méi)出來(lái);
不同的時(shí)候錯(cuò)誤如下;
?
? ? 從錯(cuò)誤來(lái)看是加載的某些參數(shù)不對(duì);
它的3D數(shù)據(jù)是如下;一個(gè)json文件,一個(gè)b3dm文件;如果自己有一個(gè)3d型的話需要自己轉(zhuǎn)換;有時(shí)間再繼續(xù);
?
總結(jié)
以上是生活随笔為你收集整理的首次使用Cesium加载3D数据不成功的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: sqlite命令行查看数据显示列头、ja
- 下一篇: cesium首次加载gltf模型成功