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

发布于:2021-12-05 02:15:33

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;
? ? ? ? }

相关推荐

最新更新

猜你喜欢