我是靠谱客的博主 还单身手链,最近开发中收集的这篇文章主要介绍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;
        }

最后

以上就是还单身手链为你收集整理的cesium更改3dtiles姿态,包括位置,旋转角度,高度的全部内容,希望文章能够帮你解决cesium更改3dtiles姿态,包括位置,旋转角度,高度所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部