使用粒子系统可以模拟火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘、流星尾迹或者象发光轨迹这样的抽象视觉效果等。
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该判断主要是为了实现当粒子落地时有一个反弹的效果,但是如果生命周期较长会一直弹,设置一个变量标识是已经落地过的没什么效果。大家可以试试。
浙公网安备 33010602011771号