外观
模型加载与性能优化
约 1409 字大约 5 分钟
2026-10-28
模型加载慢有哪些优化手段
回复优化分三个层面,按效果排序:数据层最有效,用 CesiumLab 处理时优化压缩与数据结构;传输层用 nginx 开启 gzip 压缩;JS 层通过参数在效果与效率之间取平衡。关键参数参考:
maximumScreenSpaceError: 16, // 数值加大则成像变模糊,换取速度
maximumMemoryUsage: 1024, // 建议显存大小的 50% 左右,利于倾斜数据回收
skipLevelOfDetail: true, // 跳过部分级别,网络好且数据量小时可设 false 提升质量
loadSiblings: true,
cullRequestsWhileMoving: true,
cullRequestsWhileMovingMultiplier: 10, // 数值越小剔除越快
preferLeaves: true, // 需配合 skipLevelOfDetail 为 true
progressiveResolutionHeightFraction: 0.5,
dynamicScreenSpaceError: true, // 全部加载完成后再清晰化
preloadWhenHidden: true, // show 为 false 时也预加载需要说明的是,skipLevelOfDetail: true 会带来加载过程中闪烁、个别面片异常的问题,源于两级 LOD 数据差异;设为 false 则过渡更平滑,但达到清晰所需时间更长,且一旦某个 tile 请求失败会长期不清晰。网络条件好、数据量小的项目建议设为 false。
模型加载时一块一块出现
回复原因是数据缺少顶层,需重建顶层或重新生成数据。倾斜摄影模型为何不停重新加载
回复添加两个缓存参数即可:cacheBytes: 1073741824, // 1024MB
maximumCacheOverflowBytes: 2147483648, // 2048MB相机拉远时模型模糊、拉近后清晰如何处理
回复设置dynamicScreenSpaceError。模型内存持续增长直至页面崩溃
回复这是 Cesium 本地 LOD 机制决定的。真正的解法是数据轻量化算法,属数据处理工具范畴,前端目前没有动态释放内存的手段。项目侧应控制单次加载的模型总量。加载几十 GB 的模型需要多大带宽
回复3 Mbps 明显不足,建议 7 至 10 Mbps,同时需评估并发访问人数。带宽需求与并发数、模型总量正相关。大量数据加载时页面卡住数秒
回复可尝试官方的 WebWorker 示例(billboard-worker),目标是压缩主线程的阻塞时间。能否为模型构件添加菜单控制显隐
回复可以,需自行实现,参考 layer-tileset/manager/edit 示例。如何遍历模型取出所有 feature 及其属性
回复tiles3dLayer2.readyPromise.then(function () {
tiles3dLayer2.tileset.tileVisible.addEventListener((tile) => {
const content = tile.content
const featuresLength = content.featuresLength
for (let i = 0; i < featuresLength; i++) {
const feature = content.getFeature(i)
const attr = tiles3dLayer2._getFeatureProperties(feature)
}
})
})如何按属性查询构件并定位高亮
回复三步组合:先获取构件,再切换视角(map.flyTo),最后高亮(highlight)。如何禁止模型的点击事件
回复在对应图层的配置中删除或修改相关事件参数。如何获取模型的中心点坐标
回复不能直接调用 layer.center,应添加模型加载完成事件,在事件回调中获取。浏览过的倾斜切片如何避免重复加载
加载倾斜时,视角浏览过的倾斜切片下次再回到该视角时,还需要重新加载

视角浏览过的倾斜切片下次再回到该视角时,不需要重新加载
回复浏览过的切片再次回到视角时是否重新加载,与模型本身大小、显卡显存以及瓦片缓存相关参数(cacheBytes、maximumCacheOverflowBytes、maxMemory 等)有关,希望尽量保留缓存时将这些参数设置大一些。
官方用小体量模型(如 max-fsdzm)实测不存在重复加载问题;模型过大超出缓存上限时仍会重新请求。
标绘小模型加载缓慢
本地标绘工具选择小模型标绘时,模型长时间不显示,清空缓存后加载依旧很慢;已换多条网络测试,卡顿一致,疑似与网络无关。
回复这个问题大概率是模型被限速导致的。您可以参考这个链接里的文章,把本地模型发布为服务来验证。具体操作如下: 1、模型位置如图所示,先按链接步骤将本地模型发布为服务; 2、然后修改标绘工具中的代码,把模型链接改为您自己的本地服务地址,再试一次; 3、如果此时能正常标绘出来,基本可以确认就是模型被限速的问题。
确认后,建议购买一套模型部署到本地使用。操作步骤就是刚发给您的那个链接,可以先拿示例数据测一下,确认流程跑通再正式部署。
http://mars3d.cn/docs/data/server/#_1-1-准备数据

大疆智图输出的 b3dm 3DTiles 位置错位与无法放大的排查
基于 Mars3D 官方案例,加载大疆智图输出的 b3dm 格式三维模型(3DTiles),出现两类问题:
1、三维模型与底图存在明显位置错位;
2、地图放大到指定级别后,无法继续放大。
回复1、位置错位:调整 tileset 的高度(position.alt)后错位不明显,属于数据高程基准问题,需按数据实际高程配置。 
2、无法继续放大:数据缺少更细节的文件导致无法加载出更深层级,在原生 Cesium 中加载同样无法继续放大,需要重新导出文件。 
