1、加载模型
async function appendTitles(){
const tileset = await Cesium.Cesium3DTileset.fromUrl(
'https://*********/tileset.json',{
maximumCacheOverflowBytes: 536870912000000, //缓存空间大小,如果你的模型数据很大,就需要调整此项,此项不满足是 新版本的模型加载会闪烁(但是有提示),老版本直接不出来(无报错)。
cacheBytes:536870912, //这里是缓存支援 相当于1.69版本的maximumMemoryUsage 内存分配变小有利于倾斜摄影数据回收,
maximumScreenSpaceError:8,
cullRequestsWhileMovingMultiplier:10,
dynamicScreenSpaceError:true,//在数据完全加载之后才会清晰房屋
dynamicScreenSpaceErrorFactor:16,
dynamicScreenSpaceErrorHeightFalloff:0.3,
loadSiblings:true
}
)
viewer.scene.primitives.add(tileset);
}
2.调整模型高度
在加载倾斜模型时,部分会被藏于地下,那么可以通过代码调整模型的高度
/调整模型位置
let height = 1.2; //改变3Dtiles高度
let boundingSphere = tileset.boundingSphere;
let cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);
let surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
let offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, height);
let translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
3、旋转到模型位置
viewer.flyTo(tileset); ///这里使用viewer.zoomTo() 也是可以的
4、加载报错 primitives.isDestroyed is not function
我是用的是vue3 + vite + ts ,使用箭头函数执行的时候,报错 primitives.isDestroyed is not function。这样写就会报错,按照第一步的是可以的。
const appendTitles =()=>{
const tileset = Cesium.Cesium3DTileset.fromUrl(
'https://*********/tileset.json',{
maximumCacheOverflowBytes: 536870912000000,
cacheBytes:536870912, //这里是缓存支援 相当于1.69版本的maximumMemoryUsage 内存分配变小有利于倾斜摄影数据回收,
maximumScreenSpaceError:8,
cullRequestsWhileMovingMultiplier:10,
dynamicScreenSpaceError:true,//在数据完全加载之后才会清晰房屋
dynamicScreenSpaceErrorFactor:16,
dynamicScreenSpaceErrorHeightFalloff:0.3,
loadSiblings:true
}
)
}