cesium粒子系统介绍


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,而是使用startScaleendScale两个属性进行设置,可以控制粒子在生命周期内,粒子大小在两者比例之间变换。startColorendColor的工作原理类似。

影响视觉效果的其他方式包括最大和最小属性。对于每个具有最大和最小输入的变量,粒子上该变量的实际值将会在最大和最小值之间随机分配,并在声明周期内保持该值不变。例如,使用minimumSpeedmaximumSpeed作为每个粒子随机速度的边界。其他的一些属性也类似,如imageSizelifeparticleLife

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,将会为系统中的每个粒子设置生命周期,可以使用变量minimumParticleLifemaximumParticleLife设置。

5.造型粒子

5.1 颜色

粒子使用imagecolor设置纹理样式,可以在粒子系统的生命周期内更改以创建动态效果。

5.2 尺寸

粒子的大小由imageSize控制,若要随机初始化粒子的大小,可以通过minimumIamgeSizemaximumImageSize进行设置。

粒子的大小可以在其生命周期内通过startScaleendScale进行调节,以控制粒子随时间增长或收缩。

5.3 速度

速度可以通过speed控制或者通过minimumSpeedmaximumSpeed共同控制。

6.更新回调

粒子系统可以通过更新回调进一步定制。可以将粒子设置为根据重力,风或者颜色变化等效果。

粒子系统的UpdateCallback在模拟过程中修改粒子属性,该函数通过模拟粒子运动的时间步长,可以基于物理效果修改速度矢量及改变方向或速度。

7.定位

粒子系统中使用两个Matrix4四维矩阵用以变换定位:
modelMatrix:将粒子系统从模型坐标转换为世界坐标。
emitterModelMaterix:在粒子系统的局部坐标系内变换粒子发射器。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

右弦GISer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值