1.注意问题
- cesium支持unsigned short - 5123,但可能不支持unsigned int - 5125
- 需要将经纬度坐标转换为笛卡尔坐标,否则模型可能会出现在cesium地球体地下,看不到模型
var viewer = new Cesium.Viewer("cesiumContainer"); var pos = Cesium.Cartesian3.fromDegrees(120.0, 33.0, 50); //经纬都是弧度制,高度单位为米 var mat = Cesium.Transforms.eastNorthUpToFixedFrame(pos); console.log(mat);
- 出了第二步可以调整位置外,还可以用代码的方式调整子模型位置,见如下代码
- z-up y-up问题
2.合模
博主上传了3个3dTiles模型,分别对应assetId为:1131266、1131313、1131335,
window.startup = function (Cesium) {
'use strict';
//Sandcastle_Begin
// Grant CesiumJS access to your ion assets
Cesium.Ion.defaultAccessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiYjdhZTc3Mi05NjIyLTQwM2QtOTYxYy03MGY0YmExZmRmYWMiLCJpZCI6NDM0NTgsImlhdCI6MTYxMjY2NDQ1Mn0.XFGydCj1ZdU_BW4hiqA3V8Eqb0XMUaROUnyKZDYFaE4";
const viewer = new Cesium.Viewer("cesiumContainer");
const tileset = viewer.scene.primitives.add(
new Cesium.Cesium3DTileset({
url: Cesium.IonResource.fromAssetId(1131266),
})
);
const tileset2 = viewer.scene.primitives.add(
new Cesium.Cesium3DTileset({
url: Cesium.IonResource.fromAssetId(1131313),
})
);
const tileset3 = viewer.scene.primitives.add(
new Cesium.Cesium3DTileset({
url: Cesium.IonResource.fromAssetId(1131335),
})
);
console.log(Cesium.Cartesian3.fromDegrees( 70, 20, 0));
(async () => {
try {
await tileset.readyPromise.then(function(){
let position = Cesium.Cartesian3.fromDegrees(116, 39, 13.113547746);
tileset._root.transform = Cesium.Transforms.eastNorthUpToFixedFrame(position);
});
await tileset2.readyPromise.then(function(){
let position = Cesium.Cartesian3.fromDegrees(116, 39, 13.113547746);
tileset2._root.transform = Cesium.Transforms.eastNorthUpToFixedFrame(position);
});
await tileset3.readyPromise.then(function(){
let position = Cesium.Cartesian3.fromDegrees(116, 39, 13.113547746);
tileset3._root.transform = Cesium.Transforms.eastNorthUpToFixedFrame(position);
});
await viewer.zoomTo(tileset);
await viewer.zoomTo(tileset2);
await viewer.zoomTo(tileset3);
// Apply the default style if it exists
var extras = tileset.asset.extras;
if (
Cesium.defined(extras) &&
Cesium.defined(extras.ion) &&
Cesium.defined(extras.ion.defaultStyle)
) {
tileset.style = new Cesium.Cesium3DTileStyle(extras.ion.defaultStyle);
}
} catch (error) {
console.log(error);
}
})();
//Sandcastle_End
Sandcastle.finishedLoading();
};
if (typeof Cesium !== 'undefined') {
window.startupCalled = true;
window.startup(Cesium);
}
3.效果