首次使用Cesium加载3D数据不成功
接此;
https://blog.csdn.net/bcbobo21cn/article/details/110454547
?
參閱相關教程;Cesium加載3D數據是通過3D Tiles進行;
3D Tiles是cesium小組定義的一種數據集;格式公開;
?
先看一下有沒有在線示例3D Tiles,有的話使用其url來做一個示例;
看cesium網,cesium中文網;需要注冊;
看示例,示例帶有示例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) {//經緯度、高轉笛卡爾坐標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數據的url來new一個Cesium3DTileset類對象;
然后把此對象添加到viewer.scene上面;
可以通過指定經緯高調整模型位置:
? ? 由經緯度和height得到一個position;
? ? 由position得到一個mat,矩陣;
? ? fromRotationTranslation是坐標轉換方式;
? ? Cesium.Matrix4.multiply(mat, rotationX, mat), 矩陣轉換以后獲得一個新的mat;
? ? palaceTileset._root.transform = mat,mat賦給數據集的transform參數;
運行一下;然后定位到加載的經緯度,114.33,30.35;沒有3D數據出來;只有此經緯度的底圖;
調整不同的參數;height,heading;3D數據還是沒出來;
不同的時候錯誤如下;
?
? ? 從錯誤來看是加載的某些參數不對;
它的3D數據是如下;一個json文件,一個b3dm文件;如果自己有一個3d型的話需要自己轉換;有時間再繼續;
?
總結
以上是生活随笔為你收集整理的首次使用Cesium加载3D数据不成功的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sqlite命令行查看数据显示列头、ja
- 下一篇: cesium首次加载gltf模型成功