Cesium性能优化

使用性能分析工具,例如 Chrome DevTools,分析性能瓶颈,针对性地进行优化。

调试渲染过程:使用Cesium的调试工具,如scene.debugShowFramesPerSecond、Inspector,来帮助定位性能瓶颈。

复制代码
viewer.scene.debugShowFramesPerSecond = true;

技巧一、在批量添加或修改实体时,可以使用viewer.entities.suspendEvents()和viewer.entities.resumeEvents()方法来提高性能。这两个方法分别用于暂停和恢复 Cesium 实体集合的事件处理。

开发者可以在批量更新之前调用 viewer.entities.suspendEvents() 来暂停事件处理,然后在更新完成后调用 viewer.entities.resumeEvents() 来恢复事件处理。

复制代码
// 暂停事件处理
viewer.entities.suspendEvents();
// 执行批量更新
for (let i = 0; i < 1000; i++) {
  viewer.entities.add({
    position: Cesium.Cartesian3.fromDegrees(Math.random() * 360 - 180, Math.random() * 180 - 90),
    point: {
      pixelSize: 10,
      color: Cesium.Color.RED,
    },
  });
}
// 恢复事件处理
viewer.entities.resumeEvents();

技巧二:调整相机远近裁剪平面

适当设置far和near值可以减少不必要的渲染工作,特别是在大规模场景中尤为重要。

复制代码
viewer.scene.camera.frustum.far = 5000000; // 根据实际需求调整
viewer.scene.camera.frustum.near = 0.01;

技巧三:减少地形检测带来的计算量

复制代码
 viewer.scene.globe.depthTestAgainstTerrain 设为 false

技巧四:使用最新版本的 Cesium,新版本通常包含性能优化。

技巧五:调整场景设置:降低场景的渲染质量,例如减少阴影、光照效果等。

技巧六:可视范围裁剪

对静态大数据启用视锥体裁剪:

复制代码
const pointPrimitives = new Cesium.PointPrimitiveCollection({
  show: true,
  modelMatrix: Cesium.Matrix4.IDENTITY,
  debugShowBoundingVolume: false,
  cull: true // 启用裁剪
});
相关推荐
gis_rc2 天前
python下shp转3dtiles
python·3d·cesium·3dtiles·数字孪生模型
grasperp3 天前
3DTiles数据切片工具,支持LAS、OBJ、FBX 3DTiles怎么切片?3DTiles切片
cesium·3dtiles·三维gis·3dtiles切片·数据切片
duansamve5 天前
Cesium中实现在地图上移动/旋转点、线、面
cesium
冥界摄政王6 天前
CesiumJS学习第四章 替换指定3D建筑模型
3d·vue·html·webgl·js·cesium
冥界摄政王8 天前
Cesium学习第二章 camera 相机
node.js·html·vue3·js·cesium
冥界摄政王9 天前
Cesium学习第一章 安装下载 基于vue3引入Cesium项目开发
vue·vue3·html5·webgl·cesium
你们瞎搞11 天前
Cesium加载20GB航测影像.tif
前端·cesium·gdal·地图切片
闲云一鹤12 天前
Cesium 使用 Turf 实现坐标点移动(偏移)
前端·gis·cesium
二狗哈12 天前
Cesium快速入门34:3dTile高级样式设置
前端·javascript·算法·3d·webgl·cesium·地图可视化
二狗哈13 天前
Cesium快速入门33:tile3d设置样式
3d·状态模式·webgl·cesium·地图可视化