cesium更改3dtiles姿态,包括位置,旋转角度,高度

感觉好多人都写了,我在这就是记录一下:

 var boundingSphere = new Cesium.BoundingSphere(Cesium.Cartesian3.fromDegrees(120,37,0.0), 0);//外接圆
        var viewer = new Cesium.Viewer("cesiumContainer", {
        terrainProvider: Cesium.createWorldTerrain(),
        
        });
       
        viewer.scene.globe.depthTestAgainstTerrain = true;//地形遮挡
         var palaceTileset = new Cesium.Cesium3DTileset({
         url: "../../static/total/tileset.json"
        })
        
        var longitude = 120;
        var latitude =36;
        var heading = 0;
        var height = 0;  //根据地形设置调整高度
        var _this=this;
        palaceTileset.readyPromise.then(function(argument) {
            _this.update3dtilesMaxtrix(argument);
        })
        viewer.scene.primitives.add(palaceTileset); //添加模型
        
        
        viewer.zoomTo(palaceTileset);//缩放至模型

 

 

其中:

update3dtilesMaxtrix:function(tileset) {
            var params = {
                tx: 121,  //模型中心X轴坐标(经度,单位:十进制度)
                ty: 32,    //模型中心Y轴坐标(纬度,单位:十进制度)
                tz: -600,    //模型中心Z轴坐标(高度,单位:米)
                rx: -10,    //X轴(经度)方向旋转角度(单位:度)圆心应该是在地心,改动其中一个值的时候,不止变化了该变量,比如改动ry,模型的高度也有了显著上升
                ry: 10,    //Y轴(纬度)方向旋转角度(单位:度)
                rz: 0      //Z轴(高程)方向旋转角度(单位:度)
            };
            //旋转
            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;
        }

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值