使用粒子系统可以模拟火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘、流星尾迹或者象发光轨迹这样的抽象视觉效果等。

Cesium沙盒中提供了有烟花 雪 雨 火 爆照 烟等粒子效果。

Cesium内部封装了有四种粒子的运动轨迹,在Cesium中叫做粒子发射器,有

自己不更新粒子的运动轨迹,粒子将按照发射器默认的运动轨迹运动。Cesium 中使用ParticleSystem对象实现粒子特效,该对象的相关参数如下:

 

 

 在Cesium系统中实现喷泉效果

1.使用ConeEmitter粒子发射器。

2.使用上粒子发射器发射的粒子始终是向上运动的,要实现喷泉效果需要考虑重力的影响。使用回调在每帧重新计算速度和位置。

代码如下:

 1 function applyGravity(p, dt) {
 2              var position = p.position;
 3               var degree = GMath.cartesianToDegree(position);
 4               Cesium.Cartesian3.normalize(position, gravityScratch);
 5               if (p.age > 0 && degree.height > options.positions.height) {
 6                   Cesium.Cartesian3.multiplyByScalar(p.velocity, dt, cartesianmove);
 7                   Cesium.Cartesian3.multiplyByScalar(gravityScratch, -3.5 * dt, gravityScratch);
 8                   p.velocity = Cesium.Cartesian3.add(p.velocity, gravityScratch, p.velocity);
 9                   p.position = Cesium.Cartesian3.add(p.position, cartesianmove, p.position);
10              } else if(degree.height <= options.positions.height){
11                  Cesium.Cartesian3.multiplyByScalar(gravityScratch, 1.2 * dt, gravityScratch);
12                  p.velocity = Cesium.Cartesian3.add(p.velocity, gravityScratch, p.velocity);
13                  p.position = Cesium.Cartesian3.fromDegrees(degree.longitude, degree.latitude, options.positions.height + 0.2);
14 
15              }
16          }
degree.height <= options.positions.height该判断主要是为了实现当粒子落地时有一个反弹的效果,但是如果生命周期较长会一直弹,设置一个变量标识是已经落地过的没什么效果。大家可以试试。