参考文献: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