数据转换工具采用cesiumlab1.5.17版本,转换后的3dTiles加载显示比较简单,通过Cesium.Cesium3DTileset接口指定url即可,3dTiles文件可与js前端代码放置一起,也可是远程服务器上的地址。如下:
1 //故宫
2 var palaceTileset = newCesium.Cesium3DTileset({3 url: './TestData/output/DAEPalace/tileset.json'
4 //或者url: 'http://ip:port/www/DAEPalace/tileset.json'
5 })6 viewer.scene.primitives.add(palaceTileset);
通过上述代码加载的三维模型位置和高度可能不符合预期,需要进行调整,调整代码如下:
1 var height = -30; //根据地形设置调整高度2 palaceTileset.readyPromise.then(function(argument) {3 //贴地显示
4 var cartographic =Cesium.Cartographic.fromCartesian(dayantaTileset.boundingSphere.center);5 var surface =Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, cartographic.height);6 var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, cartographic.height +height);7 var translation = Cesium.Cartesian3.subtract(offset, surface, newCesium.Cartesian3());8 palaceTileset.modelMatrix =Cesium.Matrix4.fromTranslation(translation);9 })
或者通过指定经纬高调整模型位置:
1 var longitude = 116.3908443995411;2 var latitude = 39.91600579431837;3 height = 60.38590702090875;4 var heading = 2;5 palaceTileset.readyPromise.then(function(argument) {6 //经纬度、高转笛卡尔坐标
7 var position =Cesium.Cartesian3.fromDegrees(longitude, latitude, height);8 var mat =Cesium.Transforms.eastNorthUpToFixedFrame(position);9 var rotationX =Cesium.