CesiumCesium实验室

Cesium 3Dtitles模型平移、旋转、缩放操作

2020-03-11  本文已影响0人  魏无献

var params = {

    tx: 110.5,  //模型中心X轴坐标(经度,单位:十进制度)

    ty: 30,     //模型中心Y轴坐标(纬度,单位:十进制度)

    tz: 1120,    //模型中心Z轴坐标(高程,单位:米)

    rx: 60,     //X轴(经度)方向旋转角度(单位:度)

    ry: 30,     //Y轴(纬度)方向旋转角度(单位:度)

    rz: 0 ,      //Z轴(高程)方向旋转角度(单位:度)

    scale: 1    //缩放系数

};

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);

    //tx,ty,tz为分量

    //var position = Cesium.Cartesian3.fromArray([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);

    //缩放

    var scaleM = Cesium.Matrix4.fromUniformScale(params.scale);

    Cesium.Matrix4.multiply(m, scaleM, m);

    //赋值给tileset

    tileset._root.transform = m;

}

//高度调整

//直接调用函数,调整高度,height表示物体离地面的高度

function changeHeight(tileset, height)

    {  

            height =Number(height);

            if(isNaN(height)) return;

            var cartographic = Cesium.Cartographic.fromCartesian(tileset.boundingSphere.center);

            var  surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, cartographic.height);

           varoffset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude,height);

           vartranslation = Cesium.Cartesian3.subtract(offset, surface,newCesium.Cartesian3());

           tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);

}

来源于示例,感谢源作者的分享

上一篇下一篇

猜你喜欢

热点阅读