700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Cesium变换3DTiles的位置(平移旋转缩放)

Cesium变换3DTiles的位置(平移旋转缩放)

时间:2023-10-17 14:58:28

相关推荐

Cesium变换3DTiles的位置(平移旋转缩放)

function add3DTilesetDataTrans(url) {

//viewer1.scene.globe.depthTestAgainstTerrain = true;//地形遮挡

//viewer1.scene.globe.depthTestAgainstTerrain = false;//去掉地形遮挡

tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({

url: url,

//maximumScreenSpaceError: 20, //最大的屏幕空间误差

//maximumNumberOfLoadedTiles: 10, //最大加载瓦片个数

}));

tileset.readyPromise.then(function () {

}).then(function () {

if (tileset._root.transform == undefined) {

console.log("瓦片未变换");

}

tileset._root.transform = update3dtilesMaxtrix(params);

viewer.zoomTo(tileset);

});

};

function remove3DTilesetData(dataConfig) {

var url = dataConfig;

var primitives = viewer.scene.primitives;

for (var i = 0; i < primitives.length; i++) {

if (primitives._primitives[i]._url == url) {

viewer.scene.primitives.remove(primitives._primitives[i]);

}

}

}

function add3DTilesetData(dataConfig) {

//viewer1.scene.globe.depthTestAgainstTerrain = true;//地形遮挡

//viewer1.scene.globe.depthTestAgainstTerrain = false;//去掉地形遮挡

var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({

url: dataConfig,

//maximumScreenSpaceError: 20, //最大的屏幕空间误差

//maximumNumberOfLoadedTiles: 10, //最大加载瓦片个数

}));

tileset.readyPromise.then(function () {

});

};

let params = {

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

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

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

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

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

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

};

function update3dtilesMaxtrix(params) {

//旋转

let mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(params.rx));

let my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(params.ry));

let mz = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(params.rz));

let rotationX = Cesium.Matrix4.fromRotationTranslation(mx);

let rotationY = Cesium.Matrix4.fromRotationTranslation(my);

let rotationZ = Cesium.Matrix4.fromRotationTranslation(mz);

//平移

let position = Cesium.Cartesian3.fromDegrees(params.tx, params.ty, params.tz);

let m = Cesium.Transforms.eastNorthUpToFixedFrame(position);

let scale = Cesium.Matrix4.fromUniformScale(0.85);

// //缩放

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

//旋转、平移矩阵相乘

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

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

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

//赋值给tileset

return m;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。