cesium tile模型旋转

img


找了网上好多例子,沿着模型中心的x轴旋转30度还是找不到方法来旋转我的模型,我觉得我已经很接近了,应该是哪里的逻辑弄错了。

让模型旋转一定度数,可以生成一个旋转矩阵,再用你模型本身的矩阵乘以旋转矩阵,得到一个旋转过后的矩阵,重新赋值给你的模型就好了

var m = tileset.modelMatrix;//获取你模型本身的矩阵
var RotateX=30;//你的旋转角度
//RotateX为旋转角度,转为弧度再参与运算
var m1 = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(RotateX)); 
//矩阵计算,用原来的矩阵乘以旋转矩阵,得到新的矩阵
m =Cesium.Matrix4.multiplyByMatrix3(m,m1,m);
//赋值
tileset.modelMatrix = m;

这个模式可以使用于所有类型的模型,因为cesium底层描述模型位置和姿态,最终都是一个四维的矩阵来描述的
如果解决了,希望采纳一下,有什么问题可以私信我


MainPosition = Cesium.Cartesian3.fromDegrees(110.32274018105146, 31.15093028478119, -420)
            modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(MainPosition, new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(-174.9), 0, 0));  
            tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
                url: Tileset_Url,
                modelMatrix: modelMatrix,
            }));

改变 toRadians 里面的值,你试下这个看看行不行