1.调整模型高度
1 var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({ 2 url: '../waterModel_TaiHu/tileset.json' 3 })); 4 viewer.scene.primitives.add(tileset); 5 tileset.readyPromise.then(function(tileset) { 6 var boundingSphere = tileset.boundingSphere; 7 var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center); 8 var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0); 9 var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, height); 10 var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3()); 11 tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); 12 13 //viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(0.5, -0.2, tileset.boundingSphere.radius * 1.0)); 14 });
2.旋转模型
var params = { tx: 121, //模型中心X轴坐标(经度,单位:十进制度) ty: 32, //模型中心Y轴坐标(纬度,单位:十进制度) tz: 50, //模型中心Z轴坐标(高程,单位:米) rx: 0, //X轴(经度)方向旋转角度(单位:度) ry: 0, //Y轴(纬度)方向旋转角度(单位:度) rz: 0 //Z轴(高程)方向旋转角度(单位:度) }; var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({ url: '../waterModel_TaiHu/tileset.json' })); viewer.scene.primitives.add(tileset); tileset.readyPromise.then(function(tileset) { update3dtilesMaxtrix(tileset); //viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(0.5, -0.2, tileset.boundingSphere.radius * 1.0)); }); function update3dtilesMaxtrix(tileset) { //旋转 var mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(params.rx)); var my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(params.ry)); var mz = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(params.rz)); var rotationX = Cesium.Matrix4.fromRotationTranslation(mx); var rotationY = Cesium.Matrix4.fromRotationTranslation(my); var rotationZ = Cesium.Matrix4.fromRotationTranslation(mz); //平移 var position = Cesium.Cartesian3.fromDegrees(params.tx, params.ty, params.tz); var m = Cesium.Transforms.eastNorthUpToFixedFrame(position); //旋转、平移矩阵相乘 Cesium.Matrix4.multiply(m, rotationX, m); Cesium.Matrix4.multiply(m, rotationY, m); Cesium.Matrix4.multiply(m, rotationZ, m); //赋值给tileset tileset._root.transform = m; }
3.修改模型大小尺寸
var scale = Cesium.Matrix4.fromUniformScale(0.6) Cesium.Matrix4.multiply(m, scale, m)