最近因为工作原因,对于Cesium的粒子系统进行了研究(除了雨雪效果)。发现新手想要用好粒子效果还是有一定的难度的,因此希望通过这篇文章能够尽可能的帮助到大家。
首先向大家介绍一下Cesium粒子系统中的参数。
show:粒子系统是否显示,若显示则发射、更新粒子
updateCallback:回调函数,参数是(particle,dt),分别是单个粒子的属性和两次发射之间的时间间隔(单位:s)
image:粒子系统发射的粒子图片,可以是canvas、image路径(base64还没有试过)
emitter:粒子发射器的种类,有[BoxEmitter][CircleEmitter][ConeEmitter][SphereEmitter]四种可选.
[CircleEmitter]:是一个圆形的发射器,粒子初始位于圆面上,初始速度方向平行于modelMatrix Z轴的方向
[SphereEmitter]:是球形的发射器,粒子初始位于球体中,初始速度向着球体外四面扩散
modelMatrix:粒子系统的矩阵,控制着粒子系统的位置以及部分粒子发射器的朝向
emitterModelMatrix:这个可以作为上一个粒子系统相对位置的偏移,至于旋转,考虑到计算量,就直接抛给modelMatrix来进行吧
emissionRate:粒子发射器的发射速率,单位:次/s
bursts:控制粒子发射器爆发的数组
[time]:发射的时间(相对于lifetime),单位:s
[minimum]:一次爆发,最少发射的粒子数量
[maximum]:一次爆发,最大发射的粒子数量
lifetime:粒子系统的生命周期,主要是用来控制bursts的发射周期
scale:粒子的比例(相对于imageSize的倍数),若不设置startScale、endScale,则后两者相等
startScale:粒子的初始比例
endScale:粒子在结束时的比例
color:粒子的颜色(需要与image进行混合才能得到最后显示的效果),若初始和结束颜色不同,则通过在rgba进行线性插值得到最后的结果
startColor:粒子的初始颜色
endColor:粒子的结束颜色
imageSize:图片的大小Cartesian2(imageSize, imageSize),单位(pixel) ,粒子的大小是在最大和最小的图片大小之间通过随机得到,下同
minimumImageSize: Cartesian2(minimumImageSize, minimumImageSize)
maximumImageSize: Cartesian2(maximumImageSize, maximumImageSize)
speed:粒子的初速度,方向见emitter
minimumSpeed:粒子可能的最小初速度
maximumSpeed:粒子可能的最大初速度
particleLife:单个粒子存在的时间
minimumParticleLife:粒子可能存在的最长时间
maximumParticleLife:粒子可能存在的最短时间
关于lifetime和bursts的介绍,我们以沙盒中提供的Particle System作为介绍
bursts: [
new Cesium.ParticleBurst({
time: 5.0,
minimum: 10,
maximum: 100,
}),
new Cesium.ParticleBurst({
time: 10.0,
minimum: 50,
maximum: 100,
}),
new Cesium.ParticleBurst({
time: 15.0,
minimum: 200,
maximum: 300,
}),
],
lifetime: 16.0
在这里,粒子的生命周期为16s,而粒子会在5s、10s、15s时分别进行一次粒子大爆发;随后到了16s,粒子的生命周期重新刷新为0s,在新的生命周期中,粒子会继续在5s、10s、15s爆发
接下来会为大家介绍沙盒中Particle System FireWorks和Particle System Tails的原理
网友评论