简介粒子系统主要用来解决由大量按一定规则运动(变化)的微小物质组成的大物质在计算机上的生成与显示的问题
经常使用粒子系统模拟的现象有火、爆炸、烟、水流、火花、落叶、云、雾、雪、尘、流星尾迹或者象发光轨迹这样的抽象视觉效果等等
粒子系统的实现:每个粒子是一个带纹理的三角形/多边形,粒子系统由多个粒子组成;粒子按一定规则运动;每个粒子有自己的属性,如位置、速度、质量、尺寸、年龄、运动轨迹斜率、颜色等;粒子系统更新循环划分为两个不同的阶段:参数更新/模拟阶段以及渲染阶段
参数更新/模拟阶段根据粒子系统信息更新每个粒子的速度、位置、尺寸、颜色等信息;渲染阶段根据粒子属性重新绘制粒子;每个粒子都有自己的生命,年龄超过最大年龄的粒子会被销毁,系统会生成新的粒子
JGE游戏引擎提供了一个粒子系统,基于该引擎的很多游戏的爆炸效果就是使用粒子系统实现的
该粒子系统从HGE游戏引擎移植而来,下面将对其做深入的剖析
粒子属性每个粒子包括如下属性:vecLocation:粒子的位置;vecVelocity:粒子速度,记录粒子下一个位置相对于当前位置的偏移(包括x和y方向);fGravity:粒子质量,决定粒子受重力影响(自由落体)的程度,值越大,粒子自由落体越远;fRadialAccel:决定粒子往四周的发散程度,值越大发射出去的越远;fTangentialAccel:决定粒子的运动轨迹的斜率,斜率越大运动轨迹弯曲程度越大,斜率越小,轨迹越趋向于直线
fSpin:fSpinDelta:fSize:粒子的大小;fSizeDelta:粒子大小的变化;colColor:粒子的颜色;colColorDelta:颜色的变化;fAge:粒子的年龄,当粒子超过死亡年龄后死亡,被系统销毁;fTerminalAge:粒子死亡年龄;粒子的速度受到fDeltaTime,fRadialAccel,fTangentialA