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)