概述
感觉好多人都写了,我在这就是记录一下:
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姿态,包括位置,旋转角度,高度所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复