在 Chrome 浏览器中加载 Cesium 1.95 时因 GLB 模型和图片资源过多导致内存溢出,可通过以下系统性方案解决。优化需结合数据精简、加载策略、内存管理和渲染优化多维度进行:
一、模型与资源优化(根源减负)
1、模型简化
- 顶点/面数压缩:使用 Blender、3ds Max 等工具的 Decimate 修饰器减少多边形数量(目标:单模型面数 ≤ 5 万)。
- LOD(多细节层次):为每个模型生成高、中、低精度的版本,根据相机距离动态切换(Cesium 通过 Cesium3DTileset 自动支持)。
- 纹理压缩:将 PNG/JPG 转为 GPU 友好格式(如 ASTC、ETC2),降低显存占用并加速解码 。
2、格式转换
- GLB → 3D Tiles:使用 Cesium-ion或 gltf-pipeline 工具将大规模 GLB 模型转换为 3D Tiles 格式,实现分块加载与视锥体裁剪。
- 纹理复用:合并重复材质,减少独立纹理文件数量。
二、加载策略优化(动态调度)
1、分批与按需加载
分块加载:将大模型拆分为地理区块,仅加载可视区域内的模型(示例代码):
const tileset = new Cesium.Cesium3DTileset({ url: "tileset.json" });
viewer.scene.primitives.add(tileset);
tileset.show = false; // 初始隐藏,待就绪后显示
动态预加载:结合 viewer.camera.changed 事件监听视角变化,预加载邻近区域模型。
2、懒加载与卸载
实体动态管理:非可视区域内的模型立即卸载:
viewer.scene.prim


被折叠的 条评论
为什么被折叠?



