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