Android 平台上基于粒子系统的喷射型火焰模拟

2014-02-23 07:06李红波李宏浩
关键词:粒子系统喷口纹理

李红波,李宏浩,吴 渝

(重庆邮电大学网络智能研究所,重庆 400065)

0 引言

火焰模拟[1-5]是计算机仿真中非常重要的组成部分,广泛运用于游戏、电影特效、战争模拟等领域。火焰模拟中的喷射型火焰在虚拟战场仿真中具有重要的作用。它是通过高压喷射装置喷射出可燃性液体在空气中燃烧,具有温度高、压力大、射程远、液体转化成气体并燃烧等多种复杂特性,比普通燃烧型火焰更加难以模拟。Android移动平台的计算能力弱,存储空间有限,而在其上模拟喷射型火焰需兼具实时性、逼真性要求,这使得在Android移动平台下模拟喷射型火焰成为了一个巨大挑战。

近几年,火焰效果仿真研究的重点偏向于利用流体力学方程数值的方法结合粒子系统,并借助NS(navier-stokes)方程进行数值计算求解[6]。用此类方法可以比较真实地模拟火焰运动及形态变化,但需要消耗大量计算机资源,模拟速度较慢,达不到仿真实时性的要求。最近,一部分研究者主要利用了GPU(graphic processing unit)的浮点计算能力[7-10]来实现粒子系统的复杂运算。这些方法通过求解物理方程实现火焰模拟,运算速度高,但在Android移动平台下并不适合。结合粒子系统[11-12]在常态下对火焰进行仿真模拟的也有很多成果[13-15],但目前对于高压喷射状火焰模型的研究较少。

对大多数移动平台现实应用,在保证实时性和视觉真实感情况下,对计算和存储资源要求越低的火焰模拟和绘制算法很容易被更多的场合运用。为此,本文在粒子系统基础上提出一种基于燃烧学原理的喷射型火焰模拟方法,即结合喷射型火焰在多个时间段下的不同的运动形态,进行分阶段模拟仿真。利用 Opengl-ES 方法[16-17]对各个分段建立了不同纹理渲染方法,并构造了新的半四面体粒子图元。通过改进的燃烧学模型,减少了每帧产生的粒子数量,简化了计算量,提高了系统的实时性和逼真性,使其能在Android移动平台上的大规模场景仿真中得到灵活应用。

1 经典燃烧学喷射火焰模型

喷射型火焰与普通燃烧型火焰有明显的不同。它是通过火焰喷射装置,将可燃性液体向空气中高压喷射,遇到空气产生燃烧。影响喷射火焰的物理参数主要包括火焰喷射装置内压力、火焰从喷口流出速度、喷口流量、喷口温度、燃料燃烧特性、火焰在空气中扩散形态。

1.1 经典喷射火焰结构模型

喷射火燃料通过火焰喷射装置喷射到空气中,形成喷射流。喷射流在空气中雾化、气化、膨胀,压力迅速降至标准大气压力,其半径逐渐增大。

喷射火焰物理模型[18]如图1所示。图1中,喷射火在距离喷口x的地方开始燃烧,并不是在喷口x0就燃烧。根据燃烧学喷射流理论,射流分为2个区域:初始段和基本段。其中,初始段喷射火焰内轴向速度分布保持初速度,其长度常常是喷口直径的4-6倍;基本段的喷射火焰轴向速度逐渐衰减,基本段的射流速度分布具有相似性。

图1 喷射火焰物理模型Fig.1Physicalmodel of jet fire

1.2 经典喷射火焰扩散模型

有很多因素会影响火焰喷射装置喷出火焰的形态。本文考虑的最主要指标是喷雾的空间形状,包括喷射锥角、喷射距离、扩展半径等。火焰喷射扩散模型如图2所示。图2中,喷口处外包络线的2条切线之间的夹角定义为喷射锥角θ。

图2 火焰喷射扩散模型Fig.2 Diffusion model of jet fire

根据扩散燃烧学理论[18],喷射火焰轴向速度的变化公式为

(1)式中:u为喷射火焰轴向速度;u0为喷射口初速;t为喷射过程时间;μa和μf分别为空气和燃料的动力粘度;ρa和ρf分别为空气和燃料密度;d0和d分别为喷口和喷射顶端截面直径;τ为喷射燃料量时间。

最大火焰半径Rmax与最大火焰喷射距离L有关,则:

(2)式中,w为常数。

通过API喷射火焰模型分成10个等分点,求出火焰半径大小,勾勒出火焰的轮廓。

2 基于粒子系统的喷射火焰模型及渲染方式改进

经典喷射火焰物理模型分为2段:初始段和基本段。初始段与基本段的喷射火焰速度和扩散状态有很大区别,基本段中不同时段火焰速度和扩散也有一定的区别。所以,本文提出在不同阶段建立不同的基于粒子系统的喷射火焰速度和扩散模型,并采用半四面体图元和多纹理贴图方式,在不同阶段进行不同方式渲染。

2.1 喷射火焰轴向速度2段结构建模

轴向速度变化趋势如图3所示。图3中,初始段轴向速度变化不大,基本保持V0;基本段的喷射火焰轴向速度沿轴逐渐衰减,近似服从图3中所示轨迹。

图 3轴向速度变化趋势Fig.3 Variation tendency of axial velocity

所以,根据喷射火焰轴向速度的特点,可以把喷射火焰轴向速度分为2个阶段,则:

2.2 喷射火焰外形轮廓4段结构建模

通过1.2节介绍的经典火焰扩散模型,求出火焰离散计算点的半径大小,勾勒出火焰的轮廓。

喷射火焰扩散直径变化趋势如图4所示。图4中,Δdf为火焰轮廓直径的变化量,df为火焰外轮廓直径;Δdmax为单位时间粒子轮廓扩散变换最大值;Rexp为扩展半径。

图4 喷射火焰扩散直径变化趋势Fig.4 Variation tendency of diffusion diameterof jet fire

据图4所示,各阶段的火焰半径扩展率不一样。显然,这几个阶段火焰的粒子形状、尺寸并不一样。本文通过利用多纹理的方式模拟了在不同阶段的火焰粒子的外形和尺寸。

2.3 喷射火焰多纹理渲染

在粒子系统中,如果使用单一的绘制粒子来表现景物的特征,需要使用大量的粒子以及复杂的数学公式推导。然而,在Android移动平台上使用大量粒子来实现模拟效果并不实际,所以,本文考虑使用纹理贴图技术来实现。

在过去的纹理贴图中,在PC机上可以通过相对复杂的算法,利用单一纹理贴图来实现火焰模拟效果。Android移动平台的运算资源比较紧缺,单一纹理在紧缺资源条件下不能很好地反应各阶段喷射火焰运动效果。本文利用多纹理在喷射火焰的不同阶段进行渲染:在图4中,[0]阶段属于火焰喷射早期,喷射火焰速率比较快,火焰几乎没有向外扩散。图5显示了喷射火焰模拟不同阶段的纹理图。利用图5a火焰初期纹理,进行纹理渲染,表现火焰边界轮廓相对平滑,扩散面比较小的特点,粒子大小保持R。 []阶段属于火焰喷射扩散期,exp火焰边界轮廓波动较大,较多火焰焰苗涌出,利用图5b火焰中期纹理,表现边界火焰波动推进效果,粒子大小根据(6)式中的第2阶段和第3阶段算法进行尺寸变化。 [,T]阶段属于火焰喷射末期,max移动速度减慢,火焰涌现堆积,利用图5c火焰末期纹理,表现火焰后期堆积效果。粒子大小根据(6)式第4阶段算法进行尺寸变化。

图5 喷射火焰模拟不同阶段纹理图Fig.5 Simulation of jet fire with the texturemap in different stages

利用以上不同的纹理图像渲染火焰粒子,在Android平台上能够获得较好的表现效果。

2.4 半四面体粒子结构

在粒子的绘制中,一般是采用平面正方形面片作为单个粒子,如图6所示。图6a中,O点作为绘制面片中心点,其他4个点A,B,C,D作为顶点分别绘制三角形,最后形成一个平面正方形面片。

本文在不改变粒子绘制复杂程度的基础上,改变平面正方形中心点的方式,重新绘制平面正方形面片,使之成为半正四面体粒子。

图6b中,使O点坐标面向屏幕向外凸出,接着继续以 O'点为中心,A',B',C',D'为顶点,分别绘制三角形,最后,形成一个有体积的半四面体结构。假设O'到面A'B'C'D'的距离为 h,A'B'C'D'边长为a,经过多次试验得到,对于喷射火焰的特点,h∈[1.5a,2.5a]是最合适的选择。

图6 传统粒子和半四面体粒子Fig.6 Tradition particle and half tetrahedron particle

采用半四面体结构纹理渲染时,是以O'为中心,分别纹理渲染△O'A'B',△O'B'D',△O'C'D',△O'A'C'。由于开启背面剪裁,只渲染这4个三角形的单面,节省了系统开销,四边形A'B'C'D'没有渲染。同时,由于采用了布告板(billboard)技术,A'B'C'D'永远被放置于面向屏幕的背面,不会被人眼看见,这样也节省了系统开销。

通过半四面体结构及利用纹理渲染方式,可以使纹理与粒子混合。由于是在立体四面体表面进行纹理混合,并通过透视机制的设定,使得在实际喷射火焰绘制中可以看见火焰焰苗有随机拉伸的显示效果。这符合在实际火焰喷射中火焰焰苗动态延伸,并且最后与其他焰苗融合或者最后消失的特点。

2.5 粒子旋转分析

在喷射火焰粒子的运动过程中,单个火焰粒子以随机角度旋转会增强喷射火焰动态效果的表现力。粒子可以围绕X轴、Y轴、Z轴或者围绕某一个方向向量进行旋转,但通过实际实验来看,还是通过围绕Z轴来旋转更加适合表现火焰的喷射特点。

当前旋转角度为

(7)式中:A表示上一时刻粒子旋转角度;Δt表示粒子生命周期时间间隔因子。这样每一步会随机沿Z轴转动一个角度,大大增强了火焰粒子的表现能力,在实验中提高了喷射火焰效果的随机扰动性。

3 实验过程与仿真分析

实验平台为PC机一台、小米手机一部,其中,电脑 CPU 为 Intel Core(TM)i3-2120 3.30 Hz,内存4 GB,显卡NVIDIA GeForce GTX 550 Ti;小米手机屏幕480×854 像素,Android OS 4.0,处理器1 741MHz,内存1 GB,OpenGl-ES 2.0。

3.1 喷射火焰主要参数设置

依据前面叙述,得出本文对喷射火焰设置的主要参数为喷口轴向起点位置x0;喷口直径dc;扩展半径处xa=4.5dc;火焰扩展半径处火焰轮廓角度θ;喷射火焰的生命周期长度L;喷射物密度与扩展处喷射流蒸汽密度之比Sp=ρ0/ρ;喷口处初速度V0;火焰外轮廓直径d。此外,θ的初始值设置,由于本文只考虑对喷口直径设置一个变化参数dc,所以,对于其他参数暂不考虑,根据席特凯(Sitkei)对孔式喷口喷射夹角给出的一个经验公式,可简化为

3.2 参数更新

粒子系统随着每一帧的增加,动态的更新参数,这样可以表现出喷射火焰的运动效果。在喷射火焰粒子系统中,不同参数的更新不同,如表1所示。

表1 粒子系统参数更新列表Tab.1 Update list of the parameters in particle system

3.3 喷射火焰粒子系统流程图

图7给出了本文的系统流程图。在粒子系统开始的预处理期,依据3.1节介绍的参数值进行初始化,然后,把所需的粒子加入粒子列表;在粒子生命周期内,依据表1的参数更新方式,以Δt的速度更新粒子列表里需要动态更新的参数,超过粒子生命周期的粒子,加入粒子删除列表,并循环扫描从粒子列表中删除粒子,通过纹理方式绘制粒子及运动状态。

图7 喷射火焰粒子系统流程图Fig.7 Particle system flowchart of the jet fire

3.4 仿真分析

利用传统粒子系统方法进行喷射火焰绘制,必须在短时间内集聚大量的粒子来表现火焰的运动状态,所以,每秒生成的粒子数必须比较大。并且,由于使用单一纹理粒子图元,对于喷射火焰内部纵横交错的火焰形态,以及外部波浪起伏的火焰焰苗,就达不到很好的表现效果。

图8a、图8b分别给出了在700个粒子和400个粒子的情况下用传统方法模拟的火焰效果。

根据喷射火焰的燃烧学特点,对火焰进行多纹理分段显示模型改进,在火焰喷射初期利用长条形粒子纹理图,这样降低了粒子每帧的生成数,增加了生成所需粒子总数的帧数,但由于同时增加了帧速率,因此,并不降低生成完整喷射火焰时间。而且,在火焰喷射中期,利用纹理增大、旋转、速度等变化充实有效地改善喷射火焰模拟效果。通过大量实验结果表明,减少一定数量的粒子总数,并不影响火焰模拟效果,因此,大大降低了粒子系统资源消耗。如图8c所示,火焰表现出更多火焰的层叠性。在图8c所示的粒子系统基础上,不增加系统开销的情况下,利用半四面体结构的粒子图元效果如图8d所示。

图8 不同方法下的喷射火焰模拟Fig.8 Simulations of jet fire with differentmethods

图8a—图8b中,利用传统粒子方法,在降低粒子数量的情况下,喷射火焰表现效果大大降低。传统方式利用随机喷射算法,不能准确反映喷射火焰的燃烧学特点。

图8c中,通过改进喷射火焰的燃烧学算法,并利用分阶段多纹理喷射火焰的方式,能够更准确反映喷射火焰在喷射不同时期的喷射特点。

图8d中,利用本文提出的半四面体粒子图元,增强了火焰内部的火焰交错感以及边缘火焰波动性。不同渲染方式性能对比如表2所示。

表2 不同渲染方式性能对比Tab.2 Contrast of performance with differentmethods of rendering

表2中,利用单一纹理和平面正方形图元粒子,通过传统的随机粒子生成算法来模拟火焰。粒子总数为700时,平均帧数为25帧/s,每帧生成的粒子数为40个,完成700个绘制时间为0.7 s;当粒子总数为400时,平均帧数为30帧/s,每帧生成的粒子数为24个,完成400个绘制时间为0.55 s;利用表1中后面2种粒子绘制方式,通过基于燃烧学的喷射火焰粒子生成算法进行模拟,当粒子总数为400时,平均帧数为35帧/s,每帧生成的粒子数为20个,完成400个绘制时间为0.57 s。

通过表2可见,降低平均每帧生成粒子数及利用较准确的喷射火焰粒子生成算法,不明显延长生成所需粒子总数的时间,并可大大增强喷射火焰的表现力。

4 结论和展望

本文针对喷射型火焰特点进行研究,结合粒子系统,在Android移动平台上实现了喷射火焰特效的实时模拟,其结果能够满足实效性和逼真性。根据本文所提出的多纹理分阶段渲染,以及使用立体粒子图元所增强的动态表现性,同样可以应用于其他火焰特效的模拟,如爆炸、烛火、燃烧物体等,也可以应用于诸如龙卷风、喷泉、礼花、花朵绽放等具有类似于从小至大演变过程的物体。

本文的后续研究将从2个方面进行:一方面是对于动态物体表层粒子碰撞的研究;另一方面是对于相似演变过程的物体,总结一个相对通用的演变算法,适用于类似的演变状态。同时,对于多纹理多形态的粒子,通过优化算法,能够形成组合显示,达到单一粒子所不能达到的动态效果。

[1]HONG JM,SHINAR T,FEDKIW R.Wrinkled flames and cellular patterns[J].Ransactions on Graphics(TOG),2007,26(3):1188-1198.

[2]PARSONSA R A,MELLW E,MCCAULEY P.Linking 3Dspatialmodels of fuels and fire:Effects of spatial heterogeneityon fire behavior[J].Ecological Modelling,2011,222(3):679-691.

[3]NGUYEN D Q,FEDKIW R,JENSEN H W.Physically based modeling and animation of fire[J].ACM Transaction on Graphics(TOG)-Proceeding of ACM SIGGRAPH,2002,21(3):721-728.

[4]PEGORARO V,PARKER SG.Physically-based realistic fire rendering[C]//Proceedings of the Second Eurographics conference on Natural Phenomena.Switzerland:Eurographics Association Aire-la-Ville,2006:51-59.

[5]ROGER V H,MATTHEW R S,TIMOTHY JB,et al.VFire:Immersive wildfire simulation and visualization[J].Computer Graphics,2010,34(6):655-664.

[6]LENTINE M,AANJANEYA M,FEDKIW R.Mass and momentum conservation for fluid simulation [C]//ACM,Proceedings of the 2011 ACM SIGGRAPH/Eurographics Symposium on Computer Animation.New York:ACM Press,2011:91-100.

[7]HORVATH C,GEIGER W.Directable,high-resolution simulation of fire on the GPU[J].ACM Transaction on Graphics(TOG)-Proceeding of ACM SIGGRAPH,2009,28(3):1-8.

[8]刘贤梅,王伟,薛继伟.基于GPU加速的油田井口事故火焰实时仿真[J].长江大学学报:自然科学版,2011,8(2):73-75.

LIU Xianmei,WANGWei,XUE Jiwei.Real-time Simulation ofWellhead Accident Flame Based on GPU Acceleration[J].Journal of Yangtze University:Natural Science Edition,2011,8(2):73-75.

[9]李建明,吴云龙,迟忠先,等.基于流体模型和GPU加速的火焰实时仿真[J].系统仿真学报,2007,19(19):4382-4385.

LIJianming,WU Yunlong,CHIZhongxian,et al.Realtime Fire Simulation Based on Fluid Model and GPU Accelerated[J].Journal of System Simulation,2007,19(19):4382-4385.

[10]任庆东,杨晓丹,刘贤梅,等.基于GPU和物理模型的油田井喷着火仿真[J].计算机仿真,2012,29(7):264-268.

REN Qingdong,YANG Xiaodan,LIU Xianmei,et al.Oilfield Blowout Fire Simulation Based on GPU and Physical Model[J].Computer Simulation,2012,29(7):264-268.

[11]REEVESW T.Particle systems-a technique formodeling a class of fuzzy objects Computer Graphics[J].ACM Transactions on Graphics,1983,17(3):359-376.

[12]NANA Q,LIXIN M,GUANHUA S,et al.An improved particle swarm optimization for reactive power optimization[C]//Information Technology and Artificial Intelligence Conference(ITAIC),2011 6th IEEE Joint International.Chongqing,China:IEEE Press,2011,2:362-365.

[13]刘群,向明辉,刘磊.真实感火焰模拟[J].小型微型计算机系统,2011,32(03):563-566.

LIU Qun,XIANGMinghui,LIU Lei.Simulation of Realistic Flame[J].Journal of Chinese Computer Systems,2011,32(03):563-566.

[14]梁伟,刘群,吴渝.飞机尾翼空中失火的场景模拟[J].计算机工程与应用,2010,46(9):163-165.

LIANGWei,LIU Qun,WU Yu.Simulation of scene of empennage burning in air[J].Computer Engineering and Applications,2010,46(9):163-165.

[15]李威,杨峰,程咏梅,等.Vega Prime结合OpenGL的导弹尾焰实时模拟[J].计算机工程与应用,2012,48(29):220-224.

LIWei,YANG Feng,CHENG Yongmei,et al.Realtime simulation of missile efflux plasma based on Vega Prime & OpenGL[J].Computer Engineering and Applications,2012,48(29):220-224.

[16]LIPOWSKIJK.Debugging,objectand state Management with OpenGL 1.x and 2.x[J].LectureWotes in Computer Science,2009,5337:441-450

[17]Molofee J(NeHe).NeHe OpenGL Tutorial[EB/OL][2013-03-01].http://nehe.gamedev.net.2007.

[18]林其钊.燃烧学[M].安徽:中国科学技术大学,2005.

LIN Qizhao.Ceombustion science[M].AnHui:University of Science and Technology of China,2005.

(编辑:刘 勇)

猜你喜欢
粒子系统喷口纹理
喷口形状对喷水推进器性能的影响
飞参数据在某型飞机喷口工作监控中的应用
利用GPU加速的粒子系统全球流场可视化系统设计与实现
基于BM3D的复杂纹理区域图像去噪
使用纹理叠加添加艺术画特效
小蜘蛛
UE 4粒子系统与外部数据通信研究
TEXTURE ON TEXTURE质地上的纹理
高速冲床喷口压力及位置对工件出模影响分析
消除凹凸纹理有妙招!