首页 / 浏览问题 / WebGIS / 问题详情
添加火焰等动态效果在地图上不显示
32EXP 2024年10月09日
使用官网给的例子将火焰烟花烟雾等动态效果添加上去地图上不显示 ,viewer.scene.primitives._primitives数组里面有这个对象,但是在地图上不显示!

1个回答

您好

1、您这边是怎么加上去的呢?代码怎么写的呢?使用的官网哪个例子呢?

2、确保你设置的火焰或烟雾的位置坐标在可视范围内,并且高度适合于当前地图的地形

3、查看浏览器的控制台,检查是否有任何错误信息或警告

希望可以帮助您
1,345EXP 2024年10月09日
const initFireTool = () => {
  const viewer = getEarthHelper().viewer;
  fireTool = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Point, Cesium.ClampMode.Ground);
  // 监听火焰点是否绘制完成 绘制完成后开始添加粒子
  fireTool.drawEvt.addEventListener((res: any) => {
    setCanvasCursor();
    movableBox.hide();
    res.object.show = false;
    const fireEntry = viewer.entities.add({ position: res.object.position });
    const particlePrimitive = new Cesium.ParticleSystem({
      image: fire,
      startColor: new Cesium.Color(1, 1, 1, 1),
      endColor: new Cesium.Color(0.5, 0, 0, 0),
      startScale: viewModel.startScale,
      endScale: viewModel.endScale,
      minimumParticleLife: viewModel.minimumParticleLife,
      maximumParticleLife: viewModel.maximumParticleLife,
      minimumSpeed: viewModel.minimumSpeed,
      maximumSpeed: viewModel.maximumSpeed,
      imageSize: new Cesium.Cartesian2(viewModel.particleSize, viewModel.particleSize),
      emissionRate: viewModel.emissionRate,
      lifetime: 6.0,
      // 循环是否开启
      loop: true,
      emitter: new Cesium.ConeEmitter(Cesium.Math.toRadians(45.0)),
      sizeInMeters: true,
    });
    particleSystem = viewer.scene.primitives.add(particlePrimitive);
    primitivesCollection.push(particlePrimitive);
    viewer.scene.preUpdate.addEventListener((scene: any, time: any) => {
      particleSystem.modelMatrix = computeModelMatrix(fireEntry, time);
      particleSystem.emitterModelMatrix = computeEmitterModelMatrix();
    });
  });
};

fireTool.activate(); //开始图上选点
火焰是在可见范围内的,且高于地形,浏览器没有任何报错或警告

您好,您排查下这些问题

1、确保粒子系统的 modelMatrix 和 emitterModelMatrix 正确计算。可以打印它们的值,确保指向了有效的位置。
2、确保 fireEntry 的位置与地球坐标系统一致。可以打印其位置以进行验证。

3、确保粒子系统的 show 属性设置为 true
4、确认粒子系统的参数设置合理,例如 emissionRate、lifetime、startColor、endColor 等。可以尝试增加 emissionRate,以便生成更多粒子来观察效果。
...