參考文獻:github:https://github.com/PrincessGod/objTo3d-tiles
https://blog.csdn.net/taiyang1987912/article/details/84339865
1、先下載安裝node.js,再安裝boj23dtiles,在cmd中輸入==>npm install -g obj23dtiles
2、新建一個json,設置obj的坐標等信息,經緯度采用弧度制,高程按地形高程輸入,最多保留小數點后五位,內容如下
{
"longitude": -1.31968,
"latitude": 0.698874,
"transHeight": 1142.59807,
"region": true, // Using region bounding volume.
"box": false, // Using box bounding volume.
"sphere": false // Using sphere bounding volume.
//"minHeight": 0.0, // BoundingVolume minimum height in meters.
//"maxHeight": 40.0, // BoundingVolume maximum height in meters.
//"tileWidth": 200.0, // Tile horizontal(cross longitude) length in meters.
//"tileHeight": 200.0, // Tile virtical(cross latitude) length in meters.
//"geometricError": 200.0, // Tile geometric error in meters.
}
3、cd至程序執行的目錄下,./代表當前目錄,前面的路徑為obj路徑,后面的路徑為json路徑,生成tileset.json及b3dm文件
obj23dtiles -i ./east/east.obj --tileset -p ./east/eastoptions.json
4、將生成的文件導入至cesium目錄下,然后加入以下代碼對3dtile數據進行加載
var tileset = new Cesium.Cesium3DTileset({ url: "model/out8/tileset.json", shadows:Cesium.ShadowMode.DISABLED,//去除陰影 }); // viewer.scene.primitives.add(tileset); viewer.zoomTo(tileset)
5、模型偏移
var cartographic=Cesium.Cartographic.fromCartesian(tileset.boundingSphere.center); var old_cart=Cesium.Cartesian3.fromRadians(cartographic.longitude,cartographic.latitude,cartographic.height); var new_cart=Cesium.Cartesian3.fromRadians(cartographic.longitude,cartographic.latitude,cartographic.height+100); var translation=Cesium.Cartesian3.subtract(new_cart,old_cart,new Cesium.Cartesian3()); tileset.modelMatrix=Cesium.Matrix4.fromTranslation(translation);
ps:程序也支持gltf、glb、i3dm
-----------------------------cesium高程讀取-------------------------
https://www.cnblogs.com/implementer/p/10953676.html