苏小红哈尔滨工业大学计算机科学与技术学院哈尔滨工业大学计算机学院苏小红2粒子系统(1/34)ParticleSystemW.T.Reeves1983年提出模拟不规则模糊物体的最重要、最成功的一种图形生成算法最初引入是为了模拟火焰跳动的火焰被看作是一个喷出许多粒子的火山1985年,Reeves和Blau进一步发展了粒子系统并维妙维肖的模拟了小草随风摇曳的景象哈尔滨工业大学计算机学院苏小红3粒子系统(2/34)应用动态模糊自然景物模拟擅长描述不规则、结构随时间而变化的对象,表现不规则物体的随机动态特性自然现象,密集场景,真实的物理过程如跳动的火焰、烟雾、下雨、行云、远处随风摇曳的树林和草丛等电视电影的特技制作已成功地应用于著名动画软件Alias|Wavefront、Softimage中主要优点是数据库放大的功能Reeves声称用三个基本的描述,可生成由百万个粒子构成的森林景色哈尔滨工业大学计算机学院苏小红4粒子系统(3/34)基本思想造型和动画是一个有机的整体单个随时间变化的粒子(Particle)作为景物造型的基本元素景物被定义为由成千上万个不规则的、随机分布的粒子组成由一组粒子构成的系统每个粒子有一个生命周期包括出生、成长、死亡等几个阶段,不断有新的粒子加入,并有旧的粒子消失每个粒子都有一组随机取值的属性初始位置、速度、运动方向、初始大小、形状、颜色、透明度等本质是随机模型采用随机过程的方法,实现粒子在“出生”、“生长”、“死亡”三个阶段的不确定性哈尔滨工业大学计算机学院苏小红6粒子系统(5/34)控制粒子的生成通过随机过程来控制通过控制每一帧(每个时间间隔内)新增的粒子数和死亡的粒子数,来控制粒子系统中粒子的数量该值将直接影响要模拟对象的密度一般方法先确定每个粒子的变化范围变化范围由给定的平均期望值和最大方差来确定然后在该范围内随机地确定它的值哈尔滨工业大学计算机学院苏小红7粒子系统(6/34)控制每帧的粒子数的两种方法1.通过指定每帧画面新粒子平均数MeanParticles以及最大变化范围VarParticles控制粒子数,第j帧中生成的粒子数2.新产生的粒子数取决于物体的屏幕尺寸。通过指定屏幕窗口单位面积上的新粒子平均数MeanParticles以及最大变化范围VarParticles,根据物体覆盖的屏幕尺寸WindowArea当前窗口中需要生成的粒子f是当前帧,f0是粒子系统开始的第一帧,InitialMeanParticles指第一帧粒子的平均数,DeltaMeanParticles是相应的变化率esVarParticlrandlesMeanparticesNumParticlj()WindowAreaesVarParticlrandlesMeanparticesNumParticlW)()()((0ffarticlesDeltaMeanpnparticlesInitialMealesMeanpartic哈尔滨工业大学计算机学院苏小红8粒子系统(7/34)指定粒子的属性在自然景观模拟中,粒子的各个属性取值必须满足待描述自然现象的物理特征粒子的基本属性包括:(1)初始位置;〔2)初始运动速度、加速度和方向;(3)初始颜色;(4)初始透明度;〔5)初始形状大小;(6)生命周期。哈尔滨工业大学计算机学院苏小红9粒子系统(8/34)粒子的运动与变化粒子的运动由一定的规则控制,可与任何描述物体运动和特征的模型结合例如Newton运动定律在生长过程中,粒子的属性被随机地改变粒子的大小和形状随时间变化在不同的阶段粒子具有不同的形态和属性(位置和速度)粒子形状可以是小球、椭球、立方体或其它形状其它性质如粒子透明度、颜色和移动等都随机地变化粒子系统(9/34)粒子的消失当粒子某一属性达到其制定的阈值时该粒子将从粒子系统中消失同时释放其占有的资源粒子系统(10/34)雨景模拟不考虑风力场的作用和复杂物理因素的影响在运动过程中,每个雨点粒子的速度保持均匀或保持固定加速度采用位移映射技术采用位移映射图或者移位绘制器来描述曲面的几何细节仅在绘制时,几何细节才会被添加可自适应地根据具体位置选择可见几何细节的精细程度,以减小场景绘制的几何复杂度粒子系统(11/34)雨景模拟1.粒子数量的控制每一帧生成的新粒子数量基本保持稳定,或有很小的随机变化常量N0表示每一帧生成的基本粒子数2.粒子的基本形态通过位移映射技术将雨点纹理图像映射到特定的粒子区间内esVarParticlrandNesNumParticlj()0粒子系统(12/34)雨景模拟3.雨点粒子的数据结构4.雨点粒子的运动模型预设一个有限空间,雨滴从一个有限的高度开始匀速(或匀加速度)降落,到达某一高度(高度阈值)后雨滴粒子的生命周期结束structRainParticle{floatlifeCycle;//粒子的生命周期floatvelocity;//粒子运动的速度,只考虑垂直速度intx,y,z;//粒子位置};粒子系统(13/34)雨景模拟5.算法描述ForeachnewframeStep1:生成一定数量的新粒子,对各个属性赋初值;Step2:根据雨点粒子的运动规律,更新场景中所有粒子的速度、位置和生命周期;Step3:在每个新的位置绘制基本图元,并进行位移映射;Step4:删除已经死亡的粒子,释放其占用的资源。End(a)N0=100(b)N0=1000粒子系统(14/34)雪景模拟不仅考虑降雪过程的模拟还模拟积雪的效果考虑风力场的作用在运动过程中,每个雪花粒子以均匀速度或保持固定加速度向下降落,同时保持匀速的旋转粒子系统(15/34)雪景模拟1.粒子数量的控制每一帧生成的新粒子数量基本保持稳定,或有很小的随机变化常量N0表示每一帧生成的基本粒子数2.粒子的基本形态通过位移映射技术随机将任意纹理图像映射到特定的雪花粒子区间内esVarParticlrandNesNumParticlj()0粒子系统(16/34)雪景模拟3.雪花粒子的数据结构4.雪花粒子的运动模型预设一个有限空间,雪花从一个有限的高度开始匀速(或匀加速度)降落,同时保持一定速度的旋转,到达某一高度(高度阈值)后雪花粒子的生命周期结束structSnowarticle{floatlifeCycle;//粒子的生命周期floatx,y,z;//粒子位置floatxrot,yrot,zrot;//粒子的旋转角度floatDropSpeed;//粒子的降落速度floatAngleSpeed;//粒子的旋转速度intTextureIndex;//粒子对应的纹理索引};粒子系统(17/34)雪景模拟5.算法描述ForeachnewframeStep1:生成一定数量的新粒子,对各个属性赋初值;Step2:根据雪花粒子的运动规律,更新场景中所有粒子的速度、位置和生命周期;Step3:在每个新的位置绘制基本图元,并进行位移映射;Step4:删除已经死亡的粒子,释放其占用的资源。End粒子系统(18/34)雪景模拟粒子系统(19/34)喷泉模拟1.喷泉粒子的运动分析近似物理模型喷泉水柱初始在竖直方向做向上的减速运动在重力及空气阻力的合力作用下粒子上升到最高点,速度为零而后类自由落体运动合成后粒子运动轨迹类似于抛物线喷泉粒子运动轨迹粒子系统(20/34)喷泉模拟2.喷泉粒子的属性设置粒子速度粒子位置粒子类型(判断是否应该消亡)淡化值(刻画朦胧的雾化效果)在运动过程中随着时间推移,粒子不断淡化,直至消失粒子生命期判断粒子是否应该消亡不仅仅由其生命期决定在未到达其生命期极限时,还要时刻检测粒子当前状态是否达到淡化阈值如果满足了淡化阈值的限制,同样将粒子从系统中删除粒子系统(21/34)喷泉模拟3.喷泉粒子属性的更新假设喷泉水柱由系统中坐标原点发出粒子的发射源也定义在坐标原点每一时刻粒子从粒子源不断发射设定新发射的粒子具有水平方向的速度当喷泉发射多股水柱时,其俯视示意图为喷泉发射方向示意图N/2角度α是每股喷泉间隔角度,在计算喷泉速度和方向变化时要用到。在这里可取平均值,即如果喷泉柱数为N,则粒子系统(22/34)喷泉模拟3.喷泉粒子属性的更新粒子速度计算公式粒子位置坐标计算公式mftvvtmfgvvmftvvzzyyxx///tvPPtvPPtvPPzzzyyyxxxg=9.8,重力加速度f表示阻力阻力与粒子速度方向相反上升过程中阻力与重力方向相同,f0下降过程中阻力与重力方向相反,f0粒子系统(23/34)喷泉模拟3.喷泉粒子属性的更新如果不考虑阻力,粒子在x和z方向作匀速直线运动,在竖直方向做加速运动,加速度仅仅是重力加速度时速度和位置坐标计算公式zzyyxxvvtgvvvvtvPgtvPtvPzzyyxx2021粒子系统(24/34)喷泉模拟4.喷泉粒子的显示将系统中满足显示条件的粒子绘制出来如果当前喷泉粒子生命期大于零,则此显示粒子可能需要,否则直接从粒子链表中删除如果当前粒子生命期大于零,但是淡化值达到了规定的阈值,那么说明此粒子已经淡化到不可见,同样可以不显示,也从系统中删除只显示还具有生命期且淡化值仍能保证其可见的粒子粒子系统(25/34)喷泉模拟喷泉粒子形状点元粒子在当前时刻粒子的位置处以一定的颜色绘制出点,粒子位置变化,点的显示位置也跟随变化,体现出粒子运动轨迹,粒子淡化效果在颜色中体现多边形粒子以当前时刻粒子位置作为中心绘制多边形,并将能体现水花效果的纹理映射到多边形上,粒子位置变化,多边形位置也跟随变化,体现出粒子运动轨迹球体粒子以粒子位置作为球心,以最接近水珠的颜色(如青色),进行小球体的绘制,粒子淡化效果在颜色中体现线元粒子计算出当前粒子的位置,然后根据粒子运动公式得到下一时刻粒子的位置,两点之间连线得到的线段作为粒子轨迹图元,线元长度为两位置之间距离,线元沿着粒子运动轨迹进行移动用线元来表示喷泉粒子其实是将喷泉粒子小距离的运动轨迹变化来体现全部的运动,这样进行渲染的粒子运动看起来更加具有连续性粒子系统(26/34)喷泉模拟粒子系统(27/34)瀑布模拟1.瀑布粒子运动分析近似物理模型水流以随机确定的初速度从瀑布源头开始做向下的抛物线运动粒子在下落过程中,或者因障碍物的撞击改变运动方向,或者因生命期及淡化值达到规定阈值而消亡瀑布粒子运动轨迹粒子系统(28/34)瀑布模拟2.瀑布粒子属性设置及更新粒子速度粒子位置粒子类型(判断是否应该消亡)淡化值(刻画朦胧的雾化效果)粒子生命期具体实现时瀑布粒子的结构体与喷泉粒子很相似,只是由于规模不同,在粒子结构设计上略有不同粒子系统(29/34)瀑布模拟在粒子结构定义中设置了一个指向“child”的指针:瀑布源头在同一时刻生成大量粒子,这些粒子组成一个链表链表中的每一个粒子又是另一个链表的头,在下一时刻粒子在重力场的作用下发生位移与此同时粒子源又在生成新的粒子,新粒子插入为链表头不断循环,直到某粒子因生命周期结束被删除这样,瀑布粒子就随着时间的推移形成了一个二维网格粒子系统(30/34)瀑布模拟瀑布粒子形状线元作为粒子图元,线元长度为粒子在一个时间步长内的位移线元长度由粒子在两个时间点的位置决定,沿着粒子的运动轨迹前进,可以减少部分计算开销粒子系统(31/34)气态流体模拟云彩(a)层云(b)卷云(c)积云粒子系统(32/34)气态流体模拟烟雾(a)有源烟雾(b)无源烟雾粒子系统(33/34)气态流体模拟火焰(a)有源火焰(b)无源火焰导弹尾焰、尾迹模拟粒子系