您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 基于粒子系统的实时火焰绘制方法研究
基于粒子系统的实时火焰绘制方法研究摘要:设计了粒子系统火焰模型,详细讨论了模型中粒子的属性及其变化。为了提高系统运行效率,采用四边形面片代替点光源粒子,结合纹理映射、Billboarding和alpha混合技术,使得火焰模型在实际应用中能满足实时性要求,同时保持较好的逼真效果。关键词:粒子系统;纹理映射;公告板;alpha混合Researchofreal-timefirerendingmethodbasedonparticlesystemAbstract:Afiremodelbasedonparticlesystemisproposed.Particle’sattributesandtheirevolvementsarediscussed.Severalmethodsareusedtopromotetheefficiencyofsystem,suchasadoptingquadrangletosubstitutingparticleofpointlightsource,applyingtexturemappingtechnique,utilizingBillboardingandalphaamalgamationtechnology.Themodelcanmeetreal-timeandrealityrequirementinpracticalapplication.Keywords:particlesystem;texturemapping;Billboarding;alphaamalgamation火焰、云雾、浪花、雨雪等自然景物的模拟一直是计算机图形学领域的研究热点和难点。这些物体都具有不断运动变化的特征,形状变化没有固定规律,很难用传统的造型方法来表现。粒子系统是迄今为止用于描述不规则物体最成熟的理论之一。其基本思想是通过一定数量的粒子组成的粒子群体来表示不规则物体,然后通过控制粒子的运动变化来模拟不规则物体的运动变化特征。传统粒子系统包含成千上万个粒子,需要大量的计算时间,难以满足实时性要求。为了解决仿真中的实时性问题,本文设计了粒子系统火焰模型,模型中采用四边形面片代替点光源粒子,结合纹理映射、Billboarding和alpha混合技术来实现火焰特效。实验证明,采用该模型模拟的火焰效果真实且能在普通的PC机上满足实时性要求。1基于粒子系统的火焰模型1.1火焰的分析火焰具有如下的显示细节和特点:(1)具有持续性。(2)形状的变化。火焰会有特殊的显示效果,如摇曳等;(3)颜色的变化。火焰从焰心到外焰颜色呈现从亮白色到黄色、红色的变化。1.2火焰粒子系统模型1.2.1火焰粒子系统的初始状态初始时刻火焰粒子系统状态包括粒子的数量、位置、运动速度及加速度、颜色、大小、形状以及生存期。(1)初始粒子数量要在给定屏幕显示区域内产生一定数量的火焰粒子,初始数量的定义很关键,它决定了火焰的密度和规模,数目过小无法满足真实感要求;数目过大要占用系统大量的时间,实时性受到影响。本文设计的粒子系统中粒子数量可根据要模拟的火焰规模由用户指定。(2)初始位置粒子的初始位置)(0fPos由粒子的产生区域决定,同时,产生区域也决定粒子的初始运动方向。产生区域为矩形或圆形时,粒子以一定的喷射角离开所在的平面向外运动。产生区域为球形时,粒子从球的中心沿球径向外运动。通常产生区域位于某一平面(如xoz平面),火焰沿该面向上燃烧。区域中心粒子密集,边界稀疏,且呈正态分布[3]。由于采用正态分布为新粒子的初始位置赋值不是根据火焰的物理性质得出,从而不过分要求物理上和数学上的精确性,所以为了进一步加快系统的运行速度,本文采用简化的方法计算新粒子的初始位置:xVarArearandxfPosX)()(00(1)yVarArearandyfPosY)()(00(2)zVarArearandzfPosZ)()(00(3)其中000,,zyx为火焰燃烧的中心位置,xVarArea、yVarArea、zVarArea分别表示粒子产生区域在zyx,,方向的变化范围。)(rand为[-1,1]上均匀分布的随机函数。(3)初始速度和加速度每个粒子都有一个随机产生的初始速度和加速度,粒子的初始速度和加速度是实现动态火焰必不可少的因素。InitialSpeed=MeanSpeed+Rand()×VarSpeed(4)InitialAcceleration=MeanAcceleration+Rand()×VarAcceleration(5)其中,MeanSpeed,VarSpeed,MeanAcceleration,VarAcceleration是粒子系统中四个参数,分别表示平均速度、速度变化范围、平均加速度、加速度变化范围。其中Rand()为-1到+1之间的随机函数。(4)初始颜色和透明度火焰粒子的颜色采用RGBA模型,其中A代表粒子的透明度,用于表现粒子颜色渐渐消退,最终与背景融为一体的效果。InitialColor(R,G,B)=MeanColor(R,G,B)+Rand()×VarColor(R,G,B)(6)InitialAlpha=255(7)MeanColor是基本色,VarColor是颜色的变化范围。粒子的透明度初始值InitialAlpha设为255,即不透明。(5)初始形状和大小每一个火焰粒子产生时即被设有一定的形状和大小,火焰粒子的初始形状为四边形面片,在火焰燃烧过程中粒子形状保持不变,其大小可控。1.2.2火焰系统的变化在利用粒子系统方法模拟火焰过程中,每一个“活跃”的粒子在其生存期间都要显示出动态的效果,这就意味着不仅粒子的位置和速度是变化的,而且它们的显示属性(尺寸、颜色)也是变化的。(1)粒子的运动在粒子诞生时,被赋予了初始位置和初始速度,随着时间的推移,粒子将到达新的位置,得到新的速度。假设第if帧与第1if帧的时间间隔为t,火焰粒子的位移矢量为)(ts,粒子的速度矢量和加速度矢量分别为)(tv和)(ta,则火焰粒子的运动方程为:ttatvttvttvtstts)()()()()()((8)火焰在垂直方向上受到重力和热浮力的共同作用,有一个运动速度,通过建立速度场),(tpv来存储粒子垂直方向的运动速度,本文用湍流函数建立速度场),(tpv,湍流函数既保证粒子有一定的运动速度,又保证了一定的随机性。t时刻粒子Y轴运动速度为:)9(02)2(),()(0kiiiypnoisetpvtv湍流函数由一系列三维噪声函数叠加而成,其中,p表示粒子中心位置),,(zyx,k是满足不等式sizepixelk121的最小整数,sizepixel为象素边长。通过选取满足上述条件的求和上限值k,可以避免采样湍流函数时的走样现象。粒子Y轴速度确保火焰向上运动,在水平方向上,主要是风力影响火焰粒子的运动。风向在微观上有一定的任意性,本文把风场分解为X方向和Z方向,分别用一个随机过程来模拟这一任意性。从而使火焰粒子产生飘忽不定的运动。(2)粒子属性的变化颜色是火焰显示中重要的属性之一。在现实中,火焰的颜色依赖于燃烧的化学元素,通过控制各种元素的比例,即可得到五彩缤纷的效果。而在对火焰进行计算机模拟时,则用R(红)、G(绿)、B(蓝)三个变量来描述每个粒子的基本颜色特征。单个粒子的颜色在生命周期内由亮度较高的黄色渐变为红色,然后变为和背景相近的颜色而消亡,这种颜色过渡平滑,增强了真实感。在同一个位置上可能同时要对几个粒子进行渲染,所以要对这些粒子进行混色。设置混色函数,采用GL_SRC_ALPHA(源),GL_ONE_MINUS_SRC_ALPHA(目标)的方法,即,目标色为源颜色与源alpha相乘加上当前颜色乘以(255-源alpha),所以:目标色=源色×源alpha+当前色×(255-alpha)/255(10)alpha为透明度,根据需要设定。在粒子系统中,火焰的中心位置产生的粒子较多,经过多个粒子的混色,在焰心部分火焰为亮白色,外焰部分粒子数逐渐减少,变为亮黄色,最后边缘部分变为红色、黑色。这样的混色过程也符合火焰的颜色变化特性。火焰粒子消亡有两种情形:一种是生命到了尽头,另一种是当粒子的颜色低于某个限定值,两种情况之一出现时,粒子就会死亡,并被删除。2火焰特效建模本文采用了以下一些实现特效和加快实时显示速度的方法。(1)粒子的四边形化经典粒子系统理论模拟火焰等不规则物体时,每个粒子都被视为点光源,并根据光照模型计算画面上每一像素的光亮度值。采用这种方法绘制一帧画面需要大量的粒子,一旦粒子的总数达到一定的数目,系统的运行速度将会受到限制。本系统采用四边形面片代替点光源绘制粒子。这样一个面片可以代替几百个粒子,大大提高了系统的运行速度。(2)Billboarding技术的应用用四边形面片代替粒子有一个缺点,就是随着观察者视点的移动,有时会正好处在面片的侧面,这时观察者看到的会是一层层像纸片状的东西。为了避免这种现象的出现,本文采用了Billboarding技术。Billboarding技术使二维纹理或者面元经过旋转后总是朝向观察者,它的思想是:首先把一幅静态图像作纹理映射到简单的几何平面上,然后根据视点的位置变换平移或旋转该平面,使视点始终与该平面正交。设空间四边形的中心},,{pppzyxC,视点位置},,{vvvzyxV,假定四边形的初始法向量与Z轴重合,即}1,0,0{n,则四边形与观察者之间的方向矢量},,{vpvpvpzzyyxxsight,四边形的法线要想与sight重合,即:粒子面片正对视点,则四边形必须做适当的旋转,下面以OpenGL坐标系和VC++语言给出旋转轴和旋转角度的计算方法:nsightNormalizeAxis)((11)))(sin(AxisLengthaAngle(12)其中,Axis是旋转轴,Angle是旋转角度,Normalize是矢量单位化函数,Length是取模函数。旋转后四边形的法向量为VCDistVCn,/,从而保证四边形正对视点V,如图1所示。图1Billboarding技术原理这种方法比用大量粒子节约了很多计算时间和存储空间。(3)alpha混合技术在纹理贴图方面的应用为了模拟火焰的效果每个四边形都贴上纹理,但四边形由于有分明的棱角,不能表现一些边界模糊的景象。为了消去四边形的明显边界,应用了OpenGL的alpha混合技术,再加上纹理和颜色的调节,能模拟出一些特殊效果。使用alpha混合技术时需要一个alpha通道,alpha通道指的是一个图像,这个图像上的数据并不是表示该处的颜色,而是表示透明度(0表示完全透明,255表示完全不透明)。alpha通道不能独立的显示出来,它必须与某一幅图像进行混合,即alpha混合。文中用photoshop将粒子的纹理图像制作成黑白位图映射到四边形上,同时将纹理图像作为alpha通道(见图2)与其它粒子和背景混合。alpha通道中黑色是0,白色是255,进行alpha混合的时候,做如下运算。目标色=背景与其它粒子的混合色×(255-alpha)/255+源色×alpha(13)图2粒子的纹理(alpha通道)在使用alpha混合功能以前,要开启混合方式,取消深度测试,以避免各粒子的互相遮挡,在OpenGL的混合效果下,各个粒子相互作用和影响,加上颜色的变化,能产生与基于传统方法实现的粒子系统同样的效果,但实时效果更好。3结论根据设计的粒子系统火焰模型,在VC++6.0集成开发环境下,采用OpenGL图形工具包实现了火焰模拟。图3是火焰模拟效果。实验结果表明,用该模型实现的火焰效果具有较强的真实感,且能在普通的PC机上满足实时性要求。本文作者创新点:在粒子系统模型中采用四边形面片代替点光源粒子,结合纹理映射、Billboarding和alpha混合技术实现了火焰模型,使得火焰模型在实际应用中能满足实时性要求,同时保持较好的逼真效果。图3火焰模拟效果图参考文献:[1
本文标题:基于粒子系统的实时火焰绘制方法研究
链接地址:https://www.777doc.com/doc-2576209 .html