文章目录
Cesium实战系列文章总目录
:
传送门
1.什么是粒子系统
原文参考Cesium官方介绍
:传送门
粒子系统是一种模拟基于物理的复杂效果的图形技术。粒子系统是由小图像组成的集合,当它们在一起形成更复杂的“模糊”对象,如火,烟,烟花等。这些复杂的效果是通过设置单个粒子的初始位置、速度和时间等属性来进行控制。
粒子系统效果在电影和视频游戏中很常见。例如,为了表现飞机的损坏,使用粒子系统来表现飞机引擎的爆炸,然后使用另一个粒子系统,模拟飞机坠毁时的烟雾轨迹。
2.粒子系统基础
基本粒子系统的代码:
var particleSystem = viewer.scene.primitives.add(new Cesium.ParticleSystem({
image : '../../SampleData/smoke.png',
imageSize : new Cesium.Cartesian2(20, 20),
startScale : 1.0,
endScale : 4.0,
particleLife : 1.0,
speed : 5.0,
emitter : new Cesium.CircleEmitter(0.5),
emissionRate : 5.0,
modelMatrix : entity.computeModelMatrix(viewer.clock.startTime, new Cesium.Matrix4()),
lifetime : 16.0
}));
上述代码创建了一个粒子系统ParticleSystem
,这是一个参数化的对象,用于控制单个粒子对象Particle
随时间改变外观和行为。粒子由ParticleEmitter
发射器产生,有一个位置和类型,存在一定的时间,然后消亡。
其中一些属性是动态的,这里并没有使用单属性比例scale
,而是使用startScale
和endScale
两个属性进行设置,可以控制粒子在生命周期内,粒子大小在两者比例之间变换。startColor
与endColor
的工作原理类似。
影响视觉效果的其他方式包括最大和最小属性。对于每个具有最大和最小输入的变量,粒子上该变量的实际值将会在最大和最小值之间随机分配,并在声明周期内保持该值不变。例如,使用minimumSpeed
和maximumSpeed
作为每个粒子随机速度的边界。其他的一些属性也类似,如imageSize
,life
,particleLife
。
3.发射器
当一个粒子诞生时,它的初始位置和速度矢量由ParticleEmitter
控制。发射器每秒会产生若干粒子,由emissionRate
参数确定,初始化速度取决于发射器类型的随机速度。
3.1 盒子发射器
BoxEmitter
。初始化一个盒子中的随机采样位置的粒子,并将它们从从六个盒子面其中之一引到出来,由Cartesian3
参数描述盒子库宽度、高度和深度尺寸。
3.2 圆形发射器
CircleEmitter
,是粒子系统的默认发射器,在发射器上轴方向的圆内随机采样位置初始化粒子,其参数为浮点数半径。
3.3 锥形发射器
ConeEmitter
,初始化圆锥体尖的粒子,并以随机的角度引导它们离开圆锥体,圆锥体沿发射器的上轴定位。
3.4 球体发射器
SphereEmitter
在球体内随机采样的位置初始化粒子,并将它们从球心向外引导。
4.配置粒子系统
4.1 粒子发射率
emissionRate
用于控制每秒发射多少粒子,从而改变粒子的密度。
通过指定对象数组burst以在指定时间发射粒子爆发,可以增加粒子系统的多样性和爆炸性,这些粒子将在给定时间内在最小和最大粒子之间发射。
4.2 粒子的生命周期和系统的生命周期
默认情况下,粒子系统将永远运行,可以将loop
设置为false
,并设置粒子系统运行的lifetime
的持续时间,即可设置其生命周期。
设置particleLife
,将会为系统中的每个粒子设置生命周期,可以使用变量minimumParticleLife
和maximumParticleLife
设置。
5.造型粒子
5.1 颜色
粒子使用image
和color
设置纹理样式,可以在粒子系统的生命周期内更改以创建动态效果。
5.2 尺寸
粒子的大小由imageSize控制,若要随机初始化粒子的大小,可以通过minimumIamgeSize
和maximumImageSize
进行设置。
粒子的大小可以在其生命周期内通过startScale
和endScale
进行调节,以控制粒子随时间增长或收缩。
5.3 速度
速度可以通过speed
控制或者通过minimumSpeed
和maximumSpeed
共同控制。
6.更新回调
粒子系统可以通过更新回调进一步定制。可以将粒子设置为根据重力,风或者颜色变化等效果。
粒子系统的UpdateCallback
在模拟过程中修改粒子属性,该函数通过模拟粒子运动的时间步长,可以基于物理效果修改速度矢量及改变方向或速度。
7.定位
粒子系统中使用两个Matrix4
四维矩阵用以变换定位:
modelMatrix
:将粒子系统从模型坐标转换为世界坐标。
emitterModelMaterix
:在粒子系统的局部坐标系内变换粒子发射器。