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