火焰模拟方法(精选9篇)
火焰模拟方法 篇1
对于山、水、云、火焰等自然界中丰富多彩的景物来说,其具有实时的多边性和无规则性。它们的外观形状极不规则、没有光滑的表明,这使得经典的欧几里得几何学对其描述就显得无能为力。
火焰、云、水等流体状态的模拟是计算机图形图像的一个重要问题,以更少的运算和内存空间,更加逼真的模拟它们的状态,一直是人们努力的目标。本文中,我们将对火焰的模拟做简单的介绍,从不同的角度比较现今常用的火焰模拟方法。
1 火焰模拟方法的分类
随着计算机图形学技术的发展,火焰燃烧在计算机动画、影视制作和媒体广告等场景中得到广泛应用。人们很早就开始了计算机火焰燃烧的模拟。
总体来说,计算机火焰模拟的方法大体分为3种类型:基于粒子系统的火焰模拟、基于数学物理模型的火焰模拟和基于纹理的火焰模拟。
1.1 基于数学物理模型的火焰模拟方法
基于数学物理模型的火焰模拟方法起源较早。其传统的思想是把火焰看成一种特殊的流体或特殊的物理过程,通过求解Navier-Stokes方程实现对火焰发展变化的控制。该方法中一个基本核心是流体动力学方程,然而其连续性求解对于计算机动画来说难以承受。因此采用离散的方法来求解复杂的NS微分方程。其中比较具有代表性的方法就是Lattice-Boltzmann方法。
和其他方法相比较,基于数学物理模型的火焰模拟方法计算的依据比较科学合理;火焰运动变化的控制理论比较完备,计算结果基本符合真实燃烧的物理本性和其运动变化的特征。
1.2 基于纹理的火焰模拟方法
基于纹理技术的火焰模拟是人们从视觉角度出发所采用的简化快速算法,是在整体和局部伤采用纹理贴图的方法进行火焰的模拟。该方法可节省大量的计算机资源,加快了计算机模拟的速度。
纹理技术模拟的核心是如何合成构建该方法应用的场合与方式、如何挑选具有代表性的纹理图片、以及如何管理和调配众多纹理图片的模拟属性。
1.3 基于粒子系统的火焰模拟方法
基于粒子系统的火焰模拟方法几乎已经成为最为成熟、最能经得起时间考验的重要模拟思想之一。主要思想是:把火焰等不规则外形的物体看作是由无数的微小颗粒所组成的。每一个粒子都有其固有的属性。随着模拟的进行,其属性值不断发生变化,粒子经历从产生、发展变化到消亡的全过程。
除了上面描述的模拟方法,还有一些火焰模拟的模型是几种方法相互配合的共同结果。下面将介绍基于粒子系统和基于纹理技术结合的火焰模拟方法。
2 基于粒子系统和纹理的模拟
基于粒子系统的火焰模拟方法思想比较简单,而且能表现一定的燃烧场景和燃烧细节,特别是火焰的随机变化表现比较容易。但随着场景中粒子数量的增加,粒子的控制和处理就会变得比较繁琐,系统开销急剧增加。一个简单的纹理图片能够取代众多的模拟粒子,因而可以节省大量的计算资源,加快计算机模拟的速度。
林等[1]是通过用少量的粒子建立火焰的轮廓线,然后在轮廓线内填充真实火焰连续纹理的方法实现火焰的动态模拟。其中,用少量的点勾勒中心骨架,通过B样条函数对其插值得到一条连续曲线,根据中心骨架点生成两侧轮廓线。然后把轮廓线分割成网状,相应地将火焰也进行分割,进行相应格子的纹理拷贝。
尹等[4]从仿真系统的要求(仿真系统要求系统具有相当高的逼真度和较高的画面更新速率)为出发点,用粒子系统对自然现象进行模拟的。每个粒子表示多个雪花,用一个四边形表示,将雪花图像作为纹理贴到四边形上,通过图像合成,生成逼真的雪景。
张等[2]提出了一种新的基于粒子系统的火焰模型,研究了模型参数变化对显示效果的影响,该模型引入了结构化粒子及表现风力的随机过程。
3 相关理论技术
3.1 粒子系统
Reeves于1983年提出的一种很有影响的模拟不规则物体的方法。它是一个随机模型,用大量的粒子图元来描述景物,粒子会随时间推移发生位置和形态变化。每个粒子的位置、取向及动力学性质都是由一组预先定义的随机过程来说明的。
粒子系统的基本思想:采用许多形状简单的微小粒子作为基本元素来表示不规则模糊物体。
通常粒子系统在三维空间中的位置与运动是由发射器控制的。发射器主要由一组粒子行为参数以及在三维空间中的位置所表示。粒子行为参数可以包括粒子生成速度、粒子初始速度向量、粒子寿命、粒子颜色、在粒子生命中的变化以及其它参数等等。
3.2 N-S方程
N-S方程是一组描述像液体和空气这样的流体物质的方程式。这些方程式建立了流体的粒子动量的改变率和作用在液体内部的压力的变化和耗散粘滞力以及重力之间的关系。它描述作用于液体任意给定区域的力的动态
3.3 噪声函数
自然界中很多事物都是分形的。它们有很多层次细节,表现出同一种的大小的变化形式。柏林噪声函数通过直接累加一定范围内、不同比例的噪声函数来重现这种现象。使用很多平滑函数,分别拥有各种各样的频率和振幅,可以把它们叠加在一起来创建一个漂亮的噪声函数,这个就是柏林噪声函数。
4 总结
在学习传统粒子系统的基础上,参阅了一定数量的关于火焰模拟的论文,对基于粒子系统和纹理技术的火焰模拟有了一定的了解。希望在熟悉了OpenGL的基础上,利用粒子系统和纹理技术实现并改进火焰的模拟,以应用到虚拟实验中。
摘要:通过基础理论的介绍,简单地谈了火焰模拟的几种方法,并着重介绍了基于粒子系统和纹理技术的火焰模拟方法。
关键词:火焰模拟,粒子系统
参考文献
[1]林夕伟,于金辉.基于粒子和纹理绘制的火焰合成[J].计算机应用,2004,24(4).
[2]张芹,吴慧中,谢隽毅,等.基于粒子系统的火焰模型及其生成方法研究[J].计算机辅助设计与图形学学报,2001,13(1).
[3]李建微,陈崇成,唐丽玉,等.基于粒子系统的林火实时绘制研究及实现[J].中国图像图形学报,2005,10(9).
[4]尹勇,金一丞,任鸿翔,等.自然现象的实时仿真[J].系统仿真学报,2002,14(9).
火焰模拟方法 篇2
某型航空发动机燃油喷嘴试验及火焰筒头部的数值模拟
对某型航空发动机燃油喷嘴的工作特性和雾化质量进行了试验研究,测定了在不同压力下喷嘴的.流量特性、喷雾锥角、雾化粒度(SMD)及尺寸分布;应用Fluent软件,对装有该喷嘴的燃烧室火焰筒进行了数值模拟.
作 者:赵硕 张宝诚 陈俊 ZHAO Shuo ZHANG Bao-cheng CHEN Jun 作者单位:沈阳航空工业学院飞行器动力与能源工程学院,沈阳,110034刊 名:航空发动机英文刊名:AEROENGINE年,卷(期):34(2)分类号:V2关键词:燃油喷嘴 雾化特性 航空发动机 火焰筒 数值模拟
阳台阻止火焰竖向蔓延的数值模拟 篇3
为了进一步提高阳台的阻火效能, 研究人员对阳台的阻火机理进行了大量研究。Yokoi S实验研究了一个垂直于外墙的0.74 m长的水平凸出物对火焰的阻挡作用, 得出水平凸出物能够在火灾中有效保护其上的窗子不被破坏。Oleszkiewicz I实验研究了垂直和水平凸出平台对垂直向上传播火焰的作用, 结果表明水平凸出平台能够使传播到外墙上的热流量减少90%, 垂直凸出平台能使传播到外墙上的热流量增加50%。Galea等使用商业软件FLOW3D对Oleszkiewicz的实验进行了数值模拟, 结果显示在窗子上方安装一个1 m长的水平凸出平台能够使窗口喷出的火焰在一段时间内远离外墙, 显著降低外墙的温度。Suzuki等采用1/7模型代表一个7层楼房, 对不同深度阳台的阻火效果进行实验研究, 发现随着阳台深度的增加, 窗口喷出的火焰逐渐远离外墙表面, 火焰垂直长度明显减少, 外墙壁附近温度显著降低。John等利用FDS对Suzuki的实验进行了数值模拟, 模拟预测的温度场与实验结果吻合较好, 并对封闭式凸阳台、封闭式凹阳台、开敞式凸阳台、开敞式凹阳台四种形式的阳台进行了阻火效果的数值模拟, 结果显示开敞式凸阳台的阻火效果最为理想。
鉴于全尺寸实验研究阳台对热烟气的作用受实验平台搭建及测量条件的制约, 实验费用昂贵且不能详细反映热烟气流动参数的变化。因此, 笔者以火灾动力学软件FDS为基础, 采用大涡模拟方法研究阳台对丙烷燃烧产生热烟气的阻挡和迟滞过程, 探讨阳台与热烟气作用的机理。
1 数学模型
火灾过程中火焰蔓延和烟气流动状态采用低马赫数变密度的N-S方程描述, 其中动量方程中的浮力项采用Bussinesq假设, 忽略能量方程中的耗散项, 由于火灾中热烟气的密度变化较大, 采用Favre滤波方法对控制方程进行滤波, 滤波后的方程组如式 (1) ~ (4) 。
式中:τij为应力张量, μ为流体, 动力黏度;焓h为温度的函数, 组分变量。
湍流模拟采用大涡模拟中的Smagorinsky格式, 燃烧模型采用基于无限快速反应的混合分数燃烧模型, 通过求解灰度性质气体的辐射方程考虑辐射热传递作用。
壁面采用无滑移可导热边界条件, 壁面速度为0, 室内与外部连通的界面采用自由边界, 速度梯度和温度梯度为0, 室内压力与环境压力相同, 初始温度21 ℃。
采用有限差分法和交错网格系统对滤波后的控制方程进行离散化。采用有限容积法求解辐射方程。根据计算过程中对流时间尺度和扩散时间尺度的相对大小自动调整计算时间步长以满足 CFL条件:
undefined (5)
式中: δx、δy、δz分别为网格单元在X、Y、Z方向的尺寸, 对应速度分别为uijk、vijk、wijk, δt为时间步长。
2 火灾场景
计算区域尺寸为7.8 m×5.4 m×21.0 m, 模型为7层楼房, 着火房间位于第二层, 房间尺寸为3.9 m×5.0 m×2.8 m。地板、壁面和顶棚材料为钢筋混凝土, 壁厚取0.35 m, 窗口上沿距楼面的高度为2.1 m, 窗台高度为0.91 m。火源位于房间中心, 燃料为丙烷, 火源面积为6.4 m2, 热释放速率5 MW。计算开始时丙烷便处于充分燃烧状态, 设定生成CO和烟气的燃料质量分数分别为20%、30%。
考察各层的温度、CO、CO2和O2体积分数及能见度变化。测试点布置方式为:3~7层各房间中心 (1.95 m, 0 m, 楼面高度+1.7 m) , 各参量在200 s均达到稳定值, 取200 s时的值对比如表1所示。
各参数危险临界值标准如表2所示。
用表2中的临界值标准分析表1中的测量值可以发现, 虽然3~7层能见度都很低, 但5~7层的烟气温度和CO体积分数都很低, 不能对人造成伤害, 因此模型只取第三层和第四层进行分析。模拟中共设置四种阳台深度, 分别为0.4、0.8、1.2、1.6 m, 沿Z轴方向采用复合网格划分计算区域, 火源房间第二层涉及到化学反应采用网格加密, 在第三层热烟气受到阳台的阻挡, 其速度变化很大, 为准确描述这一现象, 也进行网格加密。最终确定的火灾场景模型如图1所示。
3 计算结果与分析
3.1 建筑物内的温度变化
图2给出了不同阳台深度的等温图曲线, 等温图是第三、四层烟气温度稳定时的值, 取150~200 s时间段内多个时间步长的平均值。
从图2 (a) 可以看出, 火灾发生后, 火焰和热烟气通过窗口喷出, 随着烟气的流动, 烟气沿程温度逐渐降低, 这是由于火源流出的烟气在火灾动力效应的作用下向温度较低的上层区域流动, 通过第三、四层窗户进入室内, 使火源影响区域不断扩大。烟气在流动过程中不断与沿程进行热交换, 热能减少, 温度下降。同时, 环境吸收烟气的热量, 温度升高, 其中第三层室内最高温度超过100 ℃, 第四层室内最高温度超过75 ℃。在第三层室内靠近x=0一侧的墙壁附近等温线密集, 这是由于高温烟气受到墙壁的阻挡, 在窗口一侧又不断有高温高压热烟气注入, 因此其运动方向改为向压强较低的下方运动。
图2 (b) ~ (e) 是阳台深度分别为0.4、0.8、1.2、1.6 m时的等温图。可以看到随着阳台深度增加, 温度较高的等温线逐渐远离窗口, 垂直高度明显降低。第三、四层的室内温度随阳台深度增加逐渐降低, 当阳台深度达到1.6 m时, 第三层最高温度小于70 ℃, 第四层最高温度小于40 ℃。阳台深度的增加有效消耗了烟气的动能, 使其速度降低, 增加了烟气运动到第三、四层的时间以及热量在流动过程中的耗散, 导致第三、四层的温度下降。同时由于运动速度降低, 烟气层之间热量交换更加充分, 温度差降低, 温度逐渐趋于均匀, 在x=0一侧墙壁处的温度与室内温度趋于一致。
图3为不同阳台深度的热损失速率对比图。
由图3可得, 传导到固体 (楼板、墙壁、阳台) 中的热量随阳台深度增加而增加, 而对流/辐射到开放边界的热量随阳台深度增加而减少。固体大多数是导热系数较低、比热容较大的材料, 吸收热量的增加并不会造成固体表面温度的大幅度提高, 对整个温度场的影响不大。对流/辐射损失到开放边界的热量减少直接导致了着火房间外的气体温度降低, 减少了火灾蔓延的可能性。
3.2 建筑物外热烟气的运动速度
图4是不同阳台深度着火房间窗口喷出的热烟气在建筑外部运动速度对比图, 取150~200 s时间段多个时间步长的平均值。
从图4可以看到, 阳台深度增加有效消耗了烟气动能, 使其速度降低, 高值速度等值线逐渐远离窗口。阳台深度为0 m时, 进入第三层窗口的速度约为2 m/s, 进入第四层窗口的速度约为1 m/s, 阳台深度增加到1.6 m时, 进入第三层窗口的速度约为1 m/s, 进入第四层窗口的速度约为0.5 m/s, 速度降低使得烟气运动到窗口的时间增加, 向沿程环境释放的热量增加, 进入第三、四层室内的热量减少, 温度降低。同时, 由于其速度减小, 烟气间热量传输更加充分, 温度差值逐渐减小, 温度渐趋均匀。
3.3 建筑物内气体体积分数的变化
3.3.1 CO体积分数
图5为不同阳台深度的CO体积分数变化, 取150~200 s时间段多个时间步长的平均值。
从图5 (a) 中可以看出, 第三、四层的CO体积分数均超过了0.1%, 第三层最大值达到0.2%, 第四层最大值达到0.12%, 对人体有一定伤害。
从图5 (b) ~ (e) 可得, 随着阳台深度的增加, CO体积分数逐渐降低, 当阳台深度达到1.6 m时, 第三层CO体积分数最大值小于0.12%, 第四层CO体积分数最大值小于0.03%。阳台深度增加, 导致高浓度CO远离窗口, 增加了其运动到窗口的距离, 减慢了运动速度, 延长了运动时间, 使高浓度CO向环境中扩散, 浓度降低。同时, 火灾发生时两个阳台之间构成了一个蓄烟池, 能够蓄积大量烟气, 阳台深度越大蓄积的烟气量越多, 不同浓度的CO充分混合, 使得高浓度CO值降低。
3.3.2 能见度和O2体积分数
图6、7分别是不同阳台深度第三层中心线上各点的能见度和O2体积分数变化, 沿垂直方向每隔0.3 m设置一个测点, 取150~200 s多个时间步长的平均值。
从图6可以得到, 阳台深度越大, 第三层室内能见度越大。当阳台深度为0、0.4 m时, 室内能见度很小, 这是由于大量高浓度热烟气高速进入室内并在室内积蓄, 同时由于窗口存在高压热烟气, 使得室内烟气得不到有效释放, 导致室内烟气量很大, 能见度很小。随着阳台深度增加, 不仅窗口进入室内的烟气体积分数减小, 而且窗口处的热烟气压力降低, 室内烟气能够快速释放, 烟气体积分数减小, 室内能见度增加。图7显示O2体积分数随阳台深度增加而增加, 阳台深度越大, 进入室内的烟气量越少, 烟气浓度越小, O2浓度增加。
4 结 论
通过对不同深度阳台与高温烟气作用过程的数值模拟, 分析阳台深度对着火房间上两层室内温度和气体体积分数的影响, 结果表明:
(1) 阳台深度增加有效消耗了烟气的动能, 使其速度降低, 增加了烟气运动至着火房间上层室内的时间, 增加了烟气热量在流动过程中的耗散和烟气层间的热量传输, 导致着火层上两层内的温度下降。
(2) 随着阳台深度增加, 传导到固体 (楼板、墙壁、阳台) 中的热量增加, 而对流/辐射到开放边界的热量减少, 直接导致着火房间外的气体温度降低。
(3) 阳台深度增加, 高浓度CO远离窗口, 增加了CO运动到着火房间上层室内的时间, 使高浓度CO充分向环境中扩散, CO浓度显著降低。
(4) 随着阳台深度增加, 蓄积的烟气量增大, 不同浓度的CO充分混合, 使得高浓度CO值降低。
参考文献
[1] Yokoi S. Study on The Prevention of Fire Spread Caused by Hot Upward Current[R]. Building Research Institute, Japan, 1960.
[2] Oleszkiewicz I. Vertical separation of windows using spandrel walls and horizontal projections[J]. Fire Technology, 1991, 27 (4) :334-340.
[3]Galea E R, Berhane D, Hof mann N A.CFD Analysis of Fire PlumesEmerging from Windows with External Protrusions in High RiseBuildings[C].International Fire Science and Engineering Confer-ence:Interflam'96, Cambridge, UK, 1996:835-839.
[4]Suzuki T, Sekizawa A, Yamada T, et al.An Experi mental Study ofEjected Flames of a High-rise Buildings[R].National Research In-stitute of Fire and Disaster, Japan, 2001:363-373.
火焰模拟方法 篇4
这个教程将向你展示用PS设计出魔法般的火焰文字特效,这个教程适用于初学者,只需要几个步骤就可以用photoshop轻松地制作出一个看上去很棒的文字特效,教程中会用到一些素材图片,合并图层,以及图像的调整。
教程最终效果预览:
第1步
创建一个700像素*1000像素大的文档,设置背景色为黑色,用渐变工具按照下图所示的方向和颜色来填充背景图层:
在背景上添加一些光。方法:新建一个图层,如下图所示在图层上画几个圆点:
在这个圆点图层使用滤镜,选择动感模糊,设置参数如下:
然后,再次使用动感模糊,设置另一个不同的角度:
到目前为止的效果是:
第2步
使用任何一种你想要的字体,在这个背景上输入一个字母:
如下所示设置这个文字图层的混合选项:
斜面和浮雕
等高线
纹理
内阴影
渐变叠加
使用红色颗粒笔刷(Photoshop默认)在文字后面画一些微小的颗粒:
第3步
在文字周围画一些线,
设置画笔工具为2px大,硬度85%:
如下所示,用和文字类似的颜色,在文字周围画一些线条:
继续画更多的线条,尝试混合不同的颜色来为文字添加不同的效果:
第4步
在文字上面增加一些火焰纹理。找一张火焰素材图片,用photoshop打开,如下所示,在火焰上选择一小块选区:
复制并粘贴这个选区到文字图层,配合文字做相应的变形,让它看起来就像是文字一部分一样:
设置火焰图层的混合模式为“滤色”:
复制上面做好的火焰图层,按下图所示进行液化,使火焰变形:
然后复制液化好的火焰图层多次,并将它们附着在文字的不同位置,如下图所示:
此外,也可以在文字周围添加一些火焰:
火焰模拟方法 篇5
计算机图形学在真实感应用方面经常采用粒子系统完成特殊的场景特效, 比如三维游戏场景、影视特效等。该粒子系统是由运动的微小个体构成, 特点是不规则、随机、非静止、体积极小。所以在设计时往往被简单定义为四边形面片, 且具有产生、发展和消灭的历程。
本文以游戏场景为基础, 首先构建游戏中的一个改进型的粒子系统, 并在其基础之上进行火焰的效果模拟。
2. 构建游戏场景中的粒子系统
在三维游戏场景中, 粒子系统的主要功能是模拟一系列的场景特效。比如, 飘落的雪花、焰火的火星以及未来武器所发射的“子弹”等都包含了大量行为相似的微小粒子, 粒子系统就常常被用来模拟此类现象。粒子系统根据粒子的产生、变化和消灭来描述场景。
2.1 粒子系统中的基本概念
粒子系统:粒子系统是由总体具有相同的表现规律, 个体却随机表现出不同特征的大量显示元素构成的集合。对于粒子系统有三个性质要素:群体性;统一性;随机性。
粒子和点精灵:粒子是一种微小的物体, 在数学上常用点来表示其模型。所以显示粒子时, 使用点图元是一个很好的选择。点精灵 (Point Sprite) 是一种特别的点图元, 可进行纹理映射及变化尺寸。点精灵是具有中心点位置和大小的粒子, 在渲染时根据其中心位置和大小自动算出四边形的4个顶点且自动旋转面朝观众。
粒子的属性:用质点来构建物体模型, 该质点称为粒子, 每个粒子都有其自身属性, 包括纹理、位置、颜色、尺寸和行为等, 根据应用场景的不同粒子属性也有所不同。一个粒子除了位置和颜色属性外还有速度等其他属性。
粒子发射器:发射器好比一把枪, 粒子往往是由这把枪产生并发射的, 发射器将每个粒子的参数初始化, 并且提供所有粒子共同的属性参数 (将粒子的共同属性保存在发射器而不是每个粒子里面会大大节省内存空间) [1]。
2.2 粒子系统的实现
粒子系统是众多粒子的集合, 并负责对这些粒子进行维护和显示。粒子系统跟踪系统中影响所有粒子状态的全局属性, 例如粒子的尺寸、粒子的粒子源、将要映射到粒子的纹理等。粒子系统主要负责更新、显示、杀死、以及创建粒子。在它生命周期的每一时刻, 它都需要完成下面的工作:
(1) 粒子源产生新的粒子:该步骤是粒子的初始化步骤, 在初始化的过程中, 我们对新生成的粒子进行内存空间的分配和粒子的各个属性的初始化。
(2) 更新粒子属性:更新所有粒子的属性, 在这个步骤当中, 将粒子的生命周期递减一个时间步。
(3) 删除死粒子:检查每个粒子的生命期是否为0, 或者粒子的坐标超过指定的空间边界, 如果是, 则删除粒子, 粒子删除之后可以根据具体的需要决定是否重新初始化或者做其它的处理。
(4) 绘制粒子:显示粒子系统中所有现存的粒子。
对于粒子数量较多的时候, 如果每帧都刷新绘制所有粒子, 无疑是非常浪费资源的, 所以我们采用一个容量合理的顶点缓存。然后可以将顶点缓存划分为若干片段。例如粒子总数为2000个, 我们将每个片段的尺寸指定为可容纳500个粒子, 然后创建全局变量i=0, 用该变量来跟踪当前片段。绘制过程如下:
(1) 更新所有粒子。
(2) 将全部活动粒子绘制。若顶点缓存未满, 则用D3DLOCK_NOOVERWRITE (追加方式) 锁定片断i。将500个粒子复制到i中。若顶点缓存已满, 则:i设为0, 用D3DLOCK_DISCARD (将当前内容丢掉, 重获缓存指针) 锁定片断i。将500个粒子复制到i中。
(3) 绘制片断i中的粒子。
(4) 下一片断i++。
对以上两种方法进行简单的比较, 可容易看出:方法一:操作直观易懂但是缺乏效率, 占用过多内存, CPU与图形卡没有协同工作。方法二:操作有些复杂, 但节约内存用量, 效率高[2]。
3. 火焰效果的实现
火焰具有如下的特点: (1) 具有持续性; (2) 形状的变化。火焰会有特殊的显示效果, 如摇曳等; (3) 颜色的变化。火焰从焰心到外焰颜色呈现从亮白色到黄色、红色的变化。[3]
3.1 火焰粒子的初始化
火焰的初始粒子数量很重要, 它决定了火焰的密度和逼真度, 粒子越多、越密, 则火焰的效果越好, 但是也需要考虑内存的消耗。
粒子的初始位置设为pos, 由粒子的产生区域决定。一般来讲, 粒子系统的发射器都是从某一个点或者某一个平面 (如xoz平面) 发射[1], 这样的发射器在火焰的模拟中并不灵活, 模拟出的火焰格外呆板, 故而采用自定义形状的发射器。
如公式1, pos是粒子的初始位置, pos0是自定义粒子发射器的参考中心位置, 而Area向量表示自定义发射器的区域, rand () 表示随机函数, 即随机从区域内任意一点发射火焰粒子。
对于火焰粒子的初始速度, 可以参考公式2。
Mean Speed和Var Speed分别表示粒子的平均初始速度和速度变化范围, 这样可使得火焰粒子的初始速度显得不同。
3.2 使用关键帧技术
所谓关键帧就是指粒子系统的行为可以以帧为单位来控制, 或者说是粒子的行为和时间满足一个函数关系。例如模拟火焰, 火焰由某个位置生成, 受热气作用向上漂浮, 到了一定高度或者向四周散开, 或者归笼到一起形成火焰尖, 这种粒子在中途的行为发生很大变化的物资就要借助关键帧技术[4]。
有了火焰粒子的初始位置和速度, 接下来要考虑的就是粒子的更新及绘制。
假设第n帧和n+1帧的时间间隔为△t, 粒子的位移为s (t) , 粒子的速度和加速度分别为v (t) 和a (t) , 则粒子的运行方程为:
火焰效果的原理是由于受到热气流的影响, 当热气遇到周围冷环境时, 热气体的上升产生的热浮力导致其上面的冷空气被热气体推动, 同时由于气压的改变, 冷空气冲进热气体下面进行补充, 在热气体的两边不同温度的气体相交。产生的拉力促使热气速度变慢而冷气速度加快。
为了模拟这种效果, 可以建立了随机坐标点的数组。用这些随机点来模拟空气流动形成的低压点。在每一帧时间内, 通过某一随机函数改变形成新的低压点数组。当粒子由发射器发射到系统中后, 粒子逐步向离它最近的低压点进行y方向的上升运动。这样, 可以通过这种点的控制产生粒子的灵活的动态运动轨迹。另外, 在x和z方向上也建立随机函数, 模拟风向的不确定性, 即可产生动态的火焰飘忽不定的感觉。此过程将重定义火焰类继承自其父类粒子系统类的粒子运动函数。
3.3 自定义形状的发射器及火焰颜色
每个粒子系统都有个发射器, 此系统的所有粒子都由发射器发出, 一般不作特别定义, 发射器均为某个点, 但是火焰如果从某个点发射, 会显得很失真, 于是自定义一个范围, 在本实验中火焰的发射为一个长方体区域, 所有粒子在此区域内均匀产生。由随机函数具体决定其产生的点。图1为两种发射器的火焰对比。
火焰的颜色是火焰粒子在渲染时的重要的属性之一。在现实中, 火焰的颜色往往是中心颜色亮白, 边缘颜色暗红, 当然也有蓝色和黄色的火焰。对火焰进行计算机模拟时, 模拟单个粒子的颜色在生命周期内由亮度较高的黄白色渐变为红色 (或蓝色等) , 然后变为和背景相近的颜色而消亡, 控制这种颜色过渡平滑, 即可增强了真实感, 这种控制仍然可以利用上述关键帧技术, 重载渐变函数控制粒子颜色属性即可。另外, 火焰的中心位置产生的粒子较多, 可由多个粒子进行混合, 从而在中心部分火焰为亮白色, 外焰部分粒子数逐渐减少, 变为亮黄色, 最后边缘部分变为红色、黑色。这样的混合颜色更加符合真实火焰的颜色变化特性。
3.4 实验环境及结果
根据上述分析, 设计出的基于游戏场景的粒子系统, 并在该粒子系统上进行了火焰效果的模拟, 实验环境为普通PC机的VS2008集成开发环境, 采用direct X图形库, 图2是本实验的最终火焰模拟效果。
实验结果表明:使用上述系统设计并实现的火焰模型模拟效果逼真, 在普通PC上满足实时渲染的需要。.
4. 结束语
在游戏场景的渲染中, 粒子系统的应用相当普遍, 本文做出的这种火焰模拟器有着极大的应用空间。并且, 在此系统基础之上可以做出烟花、闪电、烛光等一系列不规则形体的模拟, 甚至流水、雨雪等也是常见的应用, 这在真实感图形学和游戏场景有广阔的应用前景。
参考文献
[1]张芹, 吴慧中, 谢隽毅, 等.基于粒子系统的火焰模型及其生成方法研究[J].计算机辅助设计与图学学报, 2001, 13 (1) :79-821.
[2]Frank D.Luna.DirectX 9.0 3D游戏开发编程基础[M].清华大学出版社, 2008.
[3]陈大炜, 李利军.基于Vega的虚拟战场对抗仿真应用研究[J].微计算机信息, 2005, 11-1:183-185.
火焰模拟方法 篇6
关键词:粒子系统,风场,OpenGL,火焰模拟,噪音函数
0 引 言
粒子系统[1]最早由Reeves在1983年提出,主要用来解决由大量按一定规则运动或变化的微小物质组成的大物质在计算机上的生成与显示问题,它的最大特点是充分体现了模糊物体的动态性和随机性。目前,粒子系统被认为是模拟不规则模糊物体最为成功的一种图形生成算法[2],为模拟不规则模糊物体如火焰、水、雨、雪、草地和树林等的造型提供了强有力的技术手段。其基本思想是把模糊物体看作是众多粒子组成的粒子团,各粒子均有自己的属性,如颜色、形状、大小、透明度、运动速度、运动方向、生存期等。粒子随时间的推移而不断地改变状态,从而模拟出无规则的物体及其运动变化。随着研究的不断深入,它的应用领域已经得到了很大限度的扩充,已经成为计算机图形学中的一个重要手段和工具。
本文以粒子系统的基本思路为出发点, 以模拟的实时性和视觉效果为目的。为了真实地模拟火焰在风中摇曳的动态效果,提出了一种新的风场作用下粒子系统火焰的动态模拟方法。该方法首先将风场视为一个随机风场,利用Perlin噪音生成给定条件下的风速矢量场;然后在将风场模型划分为全域和区域两种风场模型的基础上,通过风场影响范围大小的判定,采用动力学方程实时计算风力作用下火焰粒子的速度和位置,从而最终实现火焰的动态模拟。最后,将该方法应用到风场作用下粒子系统火焰模拟-火焰随风扇摆动的实例中,取得了较理想的模拟速度和比较好的模拟效果。
1 相关工作
对于非风场条件下火焰实时模拟的研究,文献[3]以Level-Set曲面变形为基础,提出了将目标形态、路径约束和燃烧传播相结合的火焰蓝芯曲面演化模型,以此模拟沿路径的火焰蔓延、移动燃烧物等现象。文献[4]根据火焰的不可压缩、低密度、无粘性等特点,通过流体方程计算火焰的物理属性,并将其求解过程在GPU中并行加速,从而大幅度提高了算法的运算速度,实现了火焰的实时模拟。文献[5]采用半拉格朗日法求解流体方程,运用基于3D 纹理的体绘制对火焰进行三维渲染,然后根据光照和密度场将光谱转换成颜色分布来模拟火焰颜色,并在GPU上加速实现,使得真实感和实时性之间达到了平衡。文献[6,7]基于粒子系统方法进行了三维火焰实时模拟,前者在渲染的过程中分别从实时性和真实感两个方面对粒子系统进行了优化,后者则结合GPU(图形处理器)高通用计算能力进行并行火焰模拟,提高系统性能。
对于风场火焰实时模拟的研究,文献[8]和文献[9]采用湍流运动的随机模型模拟了烟火在风中的扩散现象,逼真地绘制了动画,但该模型的求解过于复杂,很难生成实时的画面。文献[10]通过基本的火焰轮廓来构造初始状态,在人工风场和浮力的作用下运动,加上过程噪音和Kolmogorov湍流噪音来形成最终的火焰形状。文献[11]提出了一种基于粒子系统的风场中火焰的模拟算法,考虑火焰受风力影响而产生紊乱的运动,建立了漩涡场模型,利用随机粒子在系统中作螺旋向上运动来模拟风场中的漩涡对火焰运动的影响,从而使火焰粒子的运动更加灵活,增加了火焰效果的真实感。
目前,随着粒子系统在模拟火焰的技术上的不断进步,粒子系统已成为实时模拟三维场景中具有真实感的火焰的一种有效方法。但由于其控制过程大多过于随机,无法实现对火焰真实燃烧的精确描述;同时,对于风场模型的创建,基本上都是全域风场模型,却对区域风场模型未作探讨。而区域风场中火焰摇曳现象也是常见的自然现象之一,因此,用计算机真实地再现区域风场作用下的火焰摇曳现象对研究风场中火焰现象的动态模拟具有重要的意义。
2 风场模型
风在文中火焰的动态模拟中扮演着十分重要的角色。由于风是看不见摸不着的东西,仅凭感觉感知其是微风还是强风,同时,风的行为又是非常复杂的,即使很小的风也存在着旋涡,因此,这些因素都给风的模拟带来了很大的困难。然而,从计算机动画模拟的角度来看,精确地模拟风的运动是不可能,也是没必要的。兼顾这些因素,就需要建立合理有效的风场模型。又由于风场具有影响范围和影响距离的特性,文中将风场模型分为全域和区域两种风场模型加以论述。
2.1 全域风场模型和Perlin噪音
2.1.1 全域风场模型
将全域风场模型视为一个随时间而改变的随机风场模型,其风源为无限大,风源与火焰之间距离对风速变化没有影响。全域风场模型中任何时刻的风速可表示为平均风速和一个随机数之和,该随机数是由Perlin噪音函数产生的随机数,如式(1)所示:
其中
vp(t)是一个采用Perlin噪音函数产生的随机数,如式(3)所示:
vp(t)=αPerlinNoise(t) (3)
PerlinNoise(t)是一个以时间t为变量的Perlin噪音函数。v0(t),w,β,α是常数,通过改变这些常数,就可以产生不同的风速。
2.1.2 Perlin噪音
Perlin噪音函数是Perlin于1985年首先提出的,它是一个随机数生成器,但又与普通的随机数生成器不同。Perlin噪音函数用一个整数作为参数,然后返回一个基于这个参数的随机数。如果把同样的参数传递两次,它会产生相同的随机数,而对于普通的随机函数来说,两次传递相同的参数可能产生不同的结果。如图1(a)展示了噪音函数的一个例子, X 轴上的每个点被赋予一个0-1的随机数。通过在每个生成的值之间平滑地插值,定义一个带有非整参数的连续函数就可以得到图1(b)。
将不同取值的频率和振幅的平滑函数叠加在一起,按照式(4)就可以构造出若干新的噪音函数Noisei(x)[12]:
其中,persistence定义了amplitude值是随frequency变化的。将这些噪音函数Noisei(x)进行叠加,最后就构造出Perlin噪音函数:
根据Perlin噪音函数的定义,只要知道函数的输入参数相同,则输出的结果也相同,并且Perlin噪音函数可以由不同频率与振幅的和求得,因此可以通过Perlin噪音函数模拟随机均匀分布的较真实的自然风。
2.2 区域风场模型
同理,将区域风场模型视为一个随时间而改变的随机风场模型,不同的是该风场模型的风源是一块面积为S的平面区域(如圆、正方形和长方形等),且风速与风源和火焰之间的距离成反比。任何时刻的区域风场模型的风速可表示为式(6):
其中d为火焰与风源之间的垂直距离,
至此给出了两种风场模型,它们之间的关系为:共同点都是由平均风速和随机数构成;不同点是关于风力的计算,只有区域风场模型受风源大小以及风源与火焰之间距离两个因素影响。值得注意的是,对于区域风场,火焰未必完全置于其中,也就是说,区域风场可能只会影响到一部分火焰粒子,或者根本不影响火焰粒子。这需要在火焰粒子运动分析时对于风场影响范围加以实时的判定。
2.3 风力计算
为了模拟火焰在风中的摇曳效果,必须计算出其作用在火焰上的风力。顺着风向,整个风力由拖曳力和升力两个分量构成,根据风速风压关系公式[13],拖曳力和升力分别为式(7)和式(8):
其中,v为风速,Cd为阻力系数,Cl为升力系数,S表示迎风面积,ρa为空气密度。交互的时候,由式(1)得到风速,并由此可计算风场对火焰的作用力。
3 火焰模型及其运动分析
3.1 火焰模型
火焰模拟的方法在文献[3,4,5,6,7]中作了较多的研究,文中将采用粒子系统方法进行火焰模型的构建,即火焰用大量的粒子进行模拟,同时火焰粒子受到外力引起三维空间上的运动变化,且每个运动变化的参量都会得到控制。这样每个火焰粒子具有基本属性,包括外观属性、空间属性、运动属性和生命属性等。粒子火焰模型的形式化描述如下:
Pf={Position,Velocity,LifeTime,MaxNumber,Emission,InitialSize,EndingSize,Mass,InitialColor And Alpha,Ending Color And Alpha} (9)
其中Position是粒子位置,Velocity是粒子速度,LifeTime是粒子生命周期,MaxNumber是最大粒子数量,Emission是粒子数量,InitialSize是粒子初始大小,EndingSize是粒子最终大小,Mass是粒子质量,InitialColor是粒子初始颜色,EndingColor是粒子最终颜色,InitialAlpha是粒子初始阿尔法值,EndingAlpha是粒子最终阿尔法值。
粒子系统控制机将火焰粒子从发射孔不断发射出来进行动态模拟,每个火焰粒子在生成时都有自己的初始化属性,随着时间的推移,火焰粒子必然经过“生成”、“运动”和“消亡”三个阶段。火焰粒子系统运行的基本步骤如下:
1) 系统生成新的火焰粒子并加入到系统中;
2) 系统为新生成的火焰粒子赋予初始属性;
3) 删除系统中寿命结束的火焰粒子;
4) 根据火焰粒子的运动规律对剩余粒子进行属性更新;
5) 绘制并显示由有效火焰粒子构成的图像。
3.2 火焰运动分析
3.2.1 风场影响范围判定
全域风场具有全域性,即火焰粒子是完全置于其中,不涉及风场影响范围的判定。因此,对于风场影响范围的判定只针对区域风场。在判定时,将区域风场模型视为:风源形状是以P′0为圆心R为半径的圆,圆平面的法向量为
1) 判定风源与火焰的相对位置
该步骤就是确定火焰位于风源的哪一边。确定方法是:设圆平面方程为Ax+By+Cz+D=0,把火焰的初始位置P0代入方程,若Ax0+By0+Cz0+D>0,则火焰位于圆平面的右边;反之,火焰位于圆平面的左边,如图2(a)所示。确定火焰的相对位置之后就可以确定风场对火焰的影响效果:在风速方向未取反的情况下,位于火焰左边的风源会对火焰产生“吹”的效果;反之,位于火焰右边的风源会对火焰产生“吸”的效果。
2) 判定火焰粒子与风场的关系
如图2(b)所示,风场与火焰截面的关系有三种:不相交、包含和部分相交。由于φ0一般取值较小,因此,在包含与部分相交两种情况下,可将风场影响火焰的平面区域看成与风源形状等同,新圆的圆心坐标为Pt,这样风场与火焰粒子的关系就只有两种情形:相交和不相交。即当
3.2.2 受力分析
火焰在传播的过程中受到气流、风力和重力等因素的影响,因此,只有将现实环境中的种种干扰因素考虑进去才能产生一个具有真实感的动画效果。然而,现实中火焰的运动非常复杂,为了使系统的时间性能达到实时的要求,文中把复杂的气体运动场简化为:重力场、风场、阻力场和粒子间相互作用合力。火焰粒子在空气中的受力分析如图3所示。
其中,
其中,
m是粒子的质量,
由于粒子受到的合力中风力是随时间不断变化的,所以粒子的运动可以视为变加速度运动,而变加速度运动可采用欧拉积分方法来解决。因此,粒子在三维空间中的运动可以采用式(12)和式(13)来描述:
其中,
然后采用欧拉方法,通过粒子的速度来描述粒子空间位置的变化。
标量形式如下:
将式(11)、式(14)代入式(17)就可以求出粒子单位时间内的位置变化。
因此,只要设定粒子属性的初始值(如位置、速度、大小和最大数量等),以及阻力系数Cd、升力系数Cl、迎风面积S、空气密度ρa、风速
4 应用实例
本实例应用上述技术,展示区域风场中火焰的动态效果,即采用OpenGL技术实现风扇摇摆作用下火焰摇曳现象的模拟。
4.1 类的定义
限于篇幅,文中仅给出3个主要类的定义及相关说明。
(1) 粒子类的定义
(2) 风场类的定义
class CWind
{
public:
CWind();
Virtual ~CWind();
Update(float TimeDelta) //风场属性的更新
WindTo(); //风场作用函数
};
(3) 粒子系统类的定义
class CParticleSystem
{
public:
CParticleSystem();
virtual ~CParticleSystem();
Draw(float, float); //绘制粒子系统
Update(float fTime); //粒子系统的更新以及风场的更新
……
};
4.2 参数设置及效果图
系统的参数设置参照表1进行,系统硬件配置为:Pentium D 2.80 GHz的CPU,DDR1.00GB的内存和NVIDIA GeForce 7300 LE(256MB)的显卡。
系统模拟区域风场火焰时,帧速是60fps,实时性得到保证,同时模拟效果具有较高的逼真度,效果如图4所示。图4(a)和图4(b)分别展示了火焰在风扇未吹着和斜吹着时候的自然摇曳现象,图4(c)展示了在风扇正面吹火焰情况下火焰不同的燃烧现象。
5 结 语
火焰燃烧等无规则物体的动画模拟一直是计算机图形学中的一个难点和热点问题。本文将风场视为一个由全域和区域两种风场构成的随机风场,利用Perlin噪音函数生成给定条件下的风速矢量场,从而比较逼真地模拟了所需的风场环境,然后在此基础上进行火焰粒子的运动分析,采用动力学方程实时计算风力作用下火焰粒子的速度和位置,最后基于OpenGL技术对风场作用下火焰摇曳现象的模拟进行设计,并在火焰随风扇摇摆实例中得到了实现。该方法在模拟时的相关参数可调,满足了特定风场下火焰模拟的需求,提高了该方法的适应性。
火焰模拟方法 篇7
关键词:粒子系统,通用,面向对象,火焰模拟
自然景物的生成与模拟一直是计算机图形学领域的研究热点。尤其是对于动态自然景物,例如云、烟、火、雨、雪等,传统的造型方法很难描述它们的形状和运动,难以得到具有真实感的模拟[1]。最早的研究工作是从1983年Reeves首次提出的粒子系统原型开始[2],它可用于模拟不规则的模糊物体(FuzzyObject)。迄今为止,在粒子系统原型基础上,已有许多利用粒子系统模拟自然景物的工作[3,4]。然而,尽管粒子系统已经有一些应用程序接口(API)的实现和用户手册可以再下载,并被许多的开发者所利用[5]。然而,对通用的粒子系统API设计相对来说还研究比较少[6,7]。因此,本文拟设计一个通用的粒子系统,它采用面向对象的思想,通过封装功能以便开发者不需要重复实现,并且方便应用程序易于在不同平台间的移植,并且通过火焰模拟的实例说明设计的API的效果。
1 粒子系统设计
1.1 粒子系统设计的需求分析
粒子系统的基本思想是采用大量的、具有一定生命和属性的微小粒子图元作为基本元素来描述不规则的模糊物体。一般而言,它具有以下独特的优点[2]:
其一,粒子系统比较灵活,其组成的粒子既可以是最简单的点,也可以具有一定的结构,可根据描述的对象随意调整,而且相对来说易于实现。
其二,粒子系统的模型是过程化的,在其中可加入随机过程,因此,获得精细的模型不需要大量的设计时间。
在虚拟现实的视景仿真系统中,不规则物体模拟的真实程度将直接影响到“沉浸感”的实现,根据不同物体的属性,可以构建不同的粒子发生器。各种粒子发生器的底层实现思想是一致的,一个好的粒子系统应该具有通用性和可移植性。粒子系统表达的物体越真实,粒子的数量就越多,其代价是代码量大。为了能够流畅、真实地模拟复杂的三维景观,粒子系统的设计必须满足以下要求:
◇实时效果
粒子系统API设计最基本的目标是能够实时地模拟大规模的动态景物。它要求粒子系统的计算效率非常高,以便CPU尚有大量的剩余时间完成应用程序所需要的其他运算。
◇灵活性
用户能够灵活地使用粒子系统API创建不同的动态效果。粒子系统API必须具有通用性,由许多子模块构建各种不同场景效果。
◇参数独立性
实现一个复杂场景需要调用很多个API函数,用户不可避免地要设置大量的参数,所以参数的逻辑层次要清晰,并且独立于外部系统。
◇模拟质量的可伸缩性
可以通过调节参数或者调用不同的API调整虚拟场景的模拟精确度,应用程序开发人员能够根据不同的效果要求来制定不同的精确度。
◇可学习性和可扩展性
粒子系统API对于应用程序开发人员来说易学习使用,并且可对其进行必要的修改扩展,以适应不同虚拟现实系统开发的需要。
1.2 粒子系统API的数据结构
自然景物,特别是不规则的模糊物体的模拟对粒子系统的性能提出了很高的要求,通常需要成千上万甚至更多个粒子,从而带来巨大的数据量和代码,因此设计一个通用、高效的数据结构非常重要。利用面向对象的设计方法可以方便地实现数据封装和粒子属性的管理及状态控制,同时利用VC++的Windows消息机制可以更快捷的实现控制响应。2.2粒子系统设计
设计粒子系统的基本思想是采用大量的、具有一定生命和属性的微小粒子图元作为基本元素来描述不规则的模糊物体。在粒子系统中,每一个粒子图元均具有形状、大小、颜色、透明度、运动速度和运动方向、生命周期等属性,所有这些属性都是时间的函数,每个粒子都要经历“产生”、“活动”和“消亡”3个阶段[2]。
对于各种不同的粒子,虽然形态运动轨迹有所不同,但都有其通用的属性单元。通用的粒子类应该具有所能够描述的粒子的基本属性和可以对表现粒子状态的参数进行修改的操作。不规则物体的生成取决于绘制环节,此环节实现了光照、纹理等影响实现效果的操作,因此粒子系统绘制类的实现也应该预留接口:一类接口为与粒子类的参数传递,另一类接口为用户的参数控制。此外,在windows平台下的粒子系统开发,为了使通用粒子系统达到最优化的执行效率,考虑将粒子类的设计分为两层:粒子生成控制层和系统绘制设计层。粒子生成控制层由一个粒子类构成,负责管理粒子的数据结构和状态参数的控制以及渲染,系统绘制层则实现了一个粒子发生器,通过使用一个粒子类的对象的集合实现图形绘制[3]。
1.3.1 粒子类的设计
采用类的设计的目的在于通过参数传递实现控制操作[10]。粒子类的定义如下:
其中对粒子加速度和Alpha值的控制函数包括两个参数,主要实现了将所需修改的参数设置为两个参数之间的随机数值rand()/RAND MAX*(max-min)+min,这在很大程度上也体现了不规则物体的随机性。当然,也可以按某种模型进行初始化,实现特殊的效果。
1.3.2 系统绘制类的设计
不规则物体的最终实现首先要求有一个粒子组,这需要对一定数目的粒子进行绘制,VC中的标准模板库很容易实现此操作。另外,针对不同的物体状态要对整个粒子组进行初始化,主要是贴图和运动方式的选择。类的具体实现形式如下:
其中的静态变量m Ctrlnumber用来为不同物体状态的粒子控制操作传递参数,单个粒子绘制根据此参数进行判断并进行不同状态的绘制。操作中实现了窗口等操作的目的在于将OpenGL绘制系统尽可能的独立出来,以实现较好的可移植性。
2 粒子系统在火焰模拟中的应用
2.1 火焰模拟的原理
现实中,火焰的燃烧其物理过程非常复杂[8]。火焰模拟是为了得到视觉上“真实”的火焰运动,可以不过分的要求物理学上的正确性。因此,为了提高系统的时间性能以达到实时效果,必须对火焰复杂的运动进行简化处理,在真实性和实时性之间进行折衷。本文借鉴文献[9]的方法,将复杂的运动场简化为:热浮力场、风场、漩涡场和重力场。火焰模拟的原理框图如图1所示。
此外,为了使火焰的运动更加真实和灵活,本文引入了动态运动场的思想,通过控制运动场的运动来动态地改变火焰粒子的运动规律,使火焰粒子的运动更加灵活。在Reeves的粒子系统中,为了简化绘制算法,每一个有生命的粒子都被看成是一个点光源,映射在任何一个像素上的光强和颜色都可以看成所有映射在该点的粒子的光强和颜色的简单叠加。它可以避免大量的排序操作,但当粒子数目达到一定的程序时,火焰模拟的运动仍然会受到限制。因此,本文采用了多边形面片代替点光源绘制粒子。因为一个面片可以代替数十个粒子,从而可以显著减少每帧画面所需粒子的数目,有助于加快火焰模拟的速度。但是,这种方法也存在两个显著缺点:首先,当火焰粒子旋转过一定的角度或者观察者的视角改变时,可能会看到一片一片的片状物。本文采用了Billboard技术解决这个问题。为此,给火焰粒子增加了两个沿X轴和Y轴的转角属性。在绘制每个火焰粒子时,实时的计算粒子面片相对于视点的方向,通过与旋转矩阵相乘即可将粒子面片旋转到正对的视点。其次,简单的多边形面片会影响火焰模拟的真实感,为此采用了纹理映射技术,即把一幅具有某此细节的图像映射到多边形面片上。采用不同的纹理映射图像可以得到不同的火焰模拟效果。
2.2 火焰模拟的真实效果
本文的算法在普通PC机(1.8GPentium Ceron处理器,512M内存,Windows XP操作系统,NVIDIA GeForce 4Ti 4200显卡)上进行的。图形库采用OpenGL,它是当今最主流的专业图形处理库。
在火焰模拟时,共使用了4种不同的纹理映射图像,分别如图2所示。在粒子数目都为1 000个的情况下,它们对应的火焰模拟效果如图3所示。火焰模拟的效果比较真实,且火焰中心气体比较密集,而边缘比较稀疏,原因在于在初始化新火焰粒子的位置属性时,采用了高斯随机数赋值,火焰粒子在生成时满足高斯分布。此外,采用不同的纹理映射图像得到了不同的火焰模拟效果。图2(a)和图2(c)的纹理映射图像差异较大,得到的火焰模拟效果也相关较大。图2(b)和图2(d)的纹理映射图片则比较相似,只是火花纹理的细节略有不同。从得到的火焰模拟效果,分别对应于图3(b)和图3(d)来看,火焰的形状也比较类似,但细节略有不同。相对来说,图3(a)和3(c)得到的火焰模拟比较自然和逼真。
因此,从火焰模拟结果可知,在一定的粒子数目下,影响真实感的关键在于颜色和纹理,因此在不同状态的火焰之间切换时,实时的改变适合所需状态的粒子颜色和纹理贴图即可实现所需要的效果。
从实时性看,本文采用了简化火焰运动和多边形片结合纹理映射技术,可以有效地减小粒子的数目和计算量。从仿真实验结果看,每秒针至少可生成25—30帧的画面,满足实时性的要求。进一步的提高可以采用多层次细模型(LOD),使远处的物体拥有较少的粒子数目,以减少图形的动态生成时间,满足实时性要求。
3 结论
本文设计了一个通用的粒子系统,它采用基于面向对象的思想,并用C++语言描述了一套粒子系统应用程序接口(API)的设计。该粒子系统API采用合理的数据结构,设计了一套高效的粒子生成、管理方法,并采用高速OpenGL渲染引擎,使之能够满足在普通PC机上模拟不规则对象的要求。它与以往的粒子系统相比优势在于:利用它有助于减少开发者的编程工作量,可以着重于不规则对象的模拟算法本身,并且只有相当的灵活性和可扩展性。通过将该粒子系统应用于火焰模拟的仿真结果来看,模拟出的火焰具有较强的真实感,可以满足实时应用的要求。
参考文献
[1]Hearn D,Baker P.M Computer Graphics with OpenGL.Third Edi-tion,Prentice Hall,2003
[2]Reeves W T.Particle Systems-A technique for modeling a class of fuzzy objects.ACMTransactions on Graphics,1983;2(2):91—108
[3]马骏,朱衡君.基于动态纹理和粒子系统的喷泉模拟.北京交通大学学报,2005;29(1):90—94
[4]方建文,于金辉,马文龙.基于硬件加速和粒子系统的实时喷泉模拟.计算机工程与应用,2006;(14):118—120
[5]McAllister D K.Particle system aPI home page,http://www.cs.unc.edu/~davemc/Particle,1999
[6]王宏炜,刘越,王涌天.面向对象的通用粒子系统设计.系统仿真学报,2006;18(增1):46—51
[7]姚彦林,孟传良.面向对象的粒子系统设计.贵州工业大学学报,2002;31(3):66—68
[8]周洁琼,邹北骥,朱岳,等.一种改进的实时火焰模拟算法.计算机工程与科学,2006;28(7):73—76
[9]张芹,吴慧中,谢隽毅.基于粒子系统的火焰模型及其生成方法研究.计算机辅助设计与图形学学报,2001;13(1):79—82
火焰模拟方法 篇8
辊道窑是世界上近年发展起来的一种新型快烧陶瓷工业窑炉。它断面小,窑内温度均匀,窑内传热条件好,实现了快烧,保证了产品质量;取消了窑车、窑具,并且窑体隔热、密封性能好,与传统陶瓷窑炉比能耗大大降低,代表了陶瓷工业窑炉的发展方向[1]。富氧燃烧技术具有可以减少二次风的需求量减少烟气的排放量,增加火焰温度,提高燃烧效率以及有效地节约能源消耗等优势。我国的陶瓷窑炉多以煤、重油为燃料,少部分先进的窑型则以天然气、液化石油等为燃料。采用天然气等代替煤及重油,不仅有利于提高窑炉的热效率,还有利于减少NOx的生成。将煤转化成煤气,再供给陶瓷窑炉作燃料也是行之有效的方法[2]。因此,本文以辊道窑炉作为主要研究对象,并选择发生炉煤气和天然气作为燃料进行研究。
1 辊道窑
烧成带总体布置如图1所示,从图1中可以看出,在烧成带每节上下交错设置两对烧嘴,其特点是在同一窑横截断面上有两个烧嘴,即一侧设在辊上,另一侧设在辊下;上下对侧交错布置,在同一侧外观看烧嘴成正品字形排布[3]。
本仿真计算所采用的旋流板与气喷嘴的三维结构如图2所示。
图2中旋流板上共有旋转斜槽和旋转斜孔各十个,斜槽的截面均为4×5mm,斜孔的直径均为4mm,二者的旋转方向相反;气喷嘴上共有喷口27个,其直径均为4mm[4]。燃料选用混合发生炉煤气,采用非预混式烧嘴,煤气和空气通过喷头在烧嘴砖的圆形燃烧道中完成部分燃烧后,在窑内进行完全燃烧。烧嘴喷头结构如上图所示,中间突出部分的圆孔为煤气进口,周围部分的斜孔与斜槽为空气进口。
1、方钢框架2、外侧钢板3、观察孔(对侧为烧嘴)4、可见侧烧嘴5、事故处理孔6、辊子
2 辊道窑数学模型
2.1 模型的建立及网络的划分
研究选用气烧明焰辊道窑烧成带燃烧工况为研究对象。为了便于建模,作如下简化:辊道窑简化成长×宽×高=2200mm×1500mm×800mm的长方体[5]。考虑计算速度和网格数量,模拟仅采用半节窑进行研究,即1100mm×1500mm×800mm;辊子按实际尺寸,直径为50mm,每两个辊子的间距为70mm,如图3所示。
辊上烧嘴布置在Z=200mm截面处,辊下烧嘴布置表1不同氧气浓度富氧模拟的初始边界条件在Z=-200mm截面处,在窑体纵向断面方向上,即图中y方向上,烧嘴分别布置在y=-250mm,y=0mm和y=250mm这三个截面。网格划分如图4所示。
2.2 边界条件
本文选用发生炉煤气和天然气为燃料,分别对窑炉在不同氧气浓度空气助燃情况下进行数值计算。所选发生炉煤气燃料热值为6132k J/m3,天然气燃料热值为34000k J/m3。而不同氧气浓度富氧数值模拟的初始边界条件如下表1所示。
2.3 模型求解
采用国际上广泛应用的商业计算流体力学软件FLUENT程序,计算中选用比较成熟的湍流[6]、燃烧、辐射传热等模型。辊道窑烧成带数学模型中的连续、动量、能量和方程可用一个通用方程来描述[7],即:
式中,ρ为密度(kg/m3),Φ为通用变量,U为速度(m/s),ΓΦ为广义扩散系数,SΦ为广义源项。
湍流动能k方程:
燃烧模型选用PDF模型,其能量方程如下:
式中,k为湍流脉动动能(m2/s2),ε为湍流动能耗散率(m2/s3),为湍流动能产生项。
辐射模型选用DO模型,由离散坐标辐射模型求解有限数量离散立体角辐射强度;靠近壁面的流动区域粘性效应占优势,可通过标准壁面函数加以考虑。辐射模型方程,标准壁面函数,湍流耗散率k-ε方程等参见FLUENT手册[8]。
3 计算结果与分析
本文分别取氧气质量百分比分别为23%、35%时的情况进行数值模拟,其结果以等高线图形式表示分析。因篇幅有限,仅取X=-422.5mm截面的温度等高线图和CO体积浓度等高线图为例,其中温度等高线图如图5、图6所示,CO体积浓度等高线图如图7,图8所示。
表2不同氧气浓度富氧模拟的窑炉平均温度和CO浓度
从图5、图6中可以看出,在燃料种类和燃料量一定时,富氧燃烧可以提高燃烧的火焰温度。氧气质量分数百分比由23%升至富氧气氛下的35%时,各截面温度均升高100~200K。
从图7、图8中可以看出,在燃料种类和燃料量一定时,富氧助燃能够明显改善炉内燃烧,大幅度减少了CO的排放量。燃料选用天然气时,相同氧气质量分数下比发生炉煤气CO浓度均大大降低。
不同氧气质量百分比情况下对烧成带燃烧特性的数值模拟结果如表2所示:
由表2可以看出,随着氧气质量分数增加,以发生炉煤气和天然气为燃料,辊道窑烧成段的截面平均温度和CO浓度均增加,但发生炉煤气的CO浓度减少。其中,天然气为燃料时CO浓度增加的原因,可能是天然气入口速度高,使得燃烧不完全。
4 结论
(1)当燃料种类和燃料量一定时,富氧燃烧可以提高燃烧的火焰温度。随氧气质量分数百分比增加,平均温度呈上升趋势,但35%时有所减少。
(2)随氧气质量分数百分比增加,以发生炉煤气为燃料时炉内CO浓度逐渐减少,而采用天然气时,CO浓度逐渐增加。
(3)相同气氛下,以天然气为燃料时炉内温度高于发生炉煤气,且随氧气质量分数百分比增加,温差逐渐增加,从114.95K增至239.69K;CO浓度较燃烧发生炉煤气时低,随氧气质量分数百分比增加,CO浓度由发生炉煤气的31.5%升至76.18%。
参考文献
[1]刘振群.对窑炉节能发展方向的一些看法[M].建材技术陶瓷.1990(2),26:6~7
[2]王国松,陈峰,郑柳萍.陶瓷窑炉废气的污染与防治[J].宁德师专学报,2004,16(1):60~61,64
[3]胡国林.建陶工业辊道窑[M].北京:中国轻工业出版社,1998,6
[4]张柏清,朱凌,卢立用.辊道窑烧嘴仿真计算与研究[J].中国陶瓷,2006,42(2):38~41
[5]张柏清,龙小军,朱凌.辊道窑烧成带火焰空间的三维数值模拟[J].中国陶瓷,2007,43(2):34~37
[6]Cebeci T,Smith A M O.Analysis of Turbulent Boundary Layers[M].Acad Press,1974
[7]张柏清,卢立用,黄志诚.气烧明焰辊道窑烧嘴的三维数值模拟[J].陶瓷学报,2005,26(3):153~157
火焰模拟方法 篇9
碳氢类燃料燃烧产生的有害物质 (如CO、NOx、SOx、HCN颗粒等) 排放越来越受到重视, 研究其形成机制对减少大气污染源和降低火灾中人员伤亡有重要意义。众多文献对燃烧过程中生成NOx、SOx、HCN的化学机理作过研究[1,2,3,4], 而对含颗粒层流火焰燃烧问题涉及较少。理解层流预混火焰的燃烧速率对于设计和发展更好的环保型燃烧器有重要意义, 同时对于燃烧理论的发展和数值模型的评价也有重要的指导作用。甲烷作为最简单的碳氢化合物以及天然气的主要成分, 研究其与空气的预混火焰对于碳氢类化合物和天然气作为燃烧器的实用燃料有重要意义。
本文基于目前国际通用的描述甲烷燃烧的详细化学反应动力学机理Gri-Mech3.0, 对含颗粒的甲烷空气层流火焰进行模拟研究。分别模拟了含颗粒和不含颗粒两种混合气的燃烧速率, 并与相关文献中的实验数据进行对比。混合气初始压力为0.1 MPa, 初始温度取为303 K、353 K、403 K、453 K, 当量比Ø取为0.8、0.9、1.0、1.1和1.2。每个模拟工况下氮、氧的摩尔比固定为3.761。模拟进行了含颗粒20个模拟工况和不含颗粒20个模拟工况 (共计40个模拟工况) , 且每个含颗粒模拟工况颗粒数浓度均保持相同。
1 反应动力学机理和甲烷燃烧化学反应模型
Gri-Mech3.0旨在模拟天然气燃烧, 包括NO形成和再燃化学的一个优化机理, 是目前国际上最具代表性的描述甲烷燃烧的详细化学反应动力学机理, 该机理包含53种组分, 325个可逆基元反应。它是后继版本2.11在不断更新机制的演变迈出的又一步, 在更新动力学机理与近期文献结果方面进行了改进, 包括一些新的和改进目标实验的优化, 扩大机理和目标选择以及对热力学的敏感性测试。
本文所采用的层流预混火焰速率计算模型是用来计算预混层流火焰速率的一维自由扩散火焰模型, 该计算模型包含一个进气口, 一个火焰速率计算器, 和一个排气口, 其中火焰速率计算器为一维预混火焰传播。
2 结果和讨论
图1给出了初始压力为0.1 MPa, 当量比Ø=1.0时未添加颗粒甲烷空气混合气燃烧速率的实验值和计算值。可以看出, 随初始温度的升高, 燃烧速率逐渐增加, 表明了热释放率随初始温度的增大而提高。实验数据从公开文献的四个可靠来源获得, Hill&Huang[5], Stone et.al[6]and Rallis&Garforth[7]的实验数据非常接近, 然而在实验数据范围内, 实验数据间存在小的偏差, 但Andrews&Bradley[8]所测燃烧速率的实验数据偏高, 实验数据与计算值的变化趋势均相同。因此用详细化学反应动力学机理计算的燃烧速率与实验数据吻合较好。
图2给出了燃烧速率随当量比的变化关系, 随当量比的增大, 燃烧速率先增大后减小, 在Ø=1.1时, 燃烧速率达到最大, 实验数据与计算值的变化趋势相同, GU等[9]的试验初始温度为300 K, 计算值的初始温度为303 K, 因此计算值的燃烧速率偏高, 温度的增加会提高层流燃烧速率, 且在低当量比时温度对层流燃烧速率的影响较小, 在Ø=1.0时影响达到最大, 而后随当量比的增加, 影响度又降低, 但比低当量比时的影响度大。
图3和图4给出了粒子数密度和温度随火焰传播距离的变化规律。粒子数密度在开始时刻即达到最大值, 而温度则在火焰传播的中间位置达到最大燃烧温度, 即绝热火焰温度。这说明粒子在燃烧开始时已掺混到甲烷空气的预混火焰中, 并在燃烧过程中影响火焰的传播。
图5给出了不同温度和不同当量比下, 含颗粒和不含颗粒甲烷空气混合气的燃烧速率。和不含颗粒时的情形类似, 含颗粒甲烷空气混合气的燃烧速率随温度的升高逐渐增大, 随当量比的增加先增大后减小。加入颗粒后, 燃烧速率降低, 且随温度的升高燃烧速率降低的越明显, 说明温度对加入颗粒后的甲烷空气混合气的燃烧速率有明显影响。加入颗粒后, 燃烧速率的变化量随当量比的增加先增大后减小, 且在=1.0时, 变化量达到最大。
3 敏感性分析
图6和图7给出了初始温度303 K, 当量比Ø=0.8, Ø=1.0, Ø=1.2时, 含颗粒和不含颗粒两种情况下的敏感性分析。正敏感性系数促进反应的进行, 而负系数则阻碍反应的进行。反应H+O2=O+OH的敏感性系数在各种情况下均为最大, 且促进反应的进行, CH3和H重组为甲烷的逆向反应, 阻碍反应的进行。含颗粒反应的敏感性系数相对不含颗粒的敏感性系数稍大, 且不含颗粒的反应在有些当量比下不影响反应的进行。
4 结论
在初始压力0.1 MPa, 初始温度303 K, 353 K, 403 K和453 K以及当量比Ø=0.8~1.2条件下, 得到以下研究结论:
(1) 详细化学反应动力学机理能较好地描述甲烷空气预混层流火焰的燃烧速率, 且计算结果与实验值吻合较好。
(2) 添加颗粒后燃烧速率降低, 且温度越高燃烧速率降低的越明显。
(3) 添加颗粒后燃烧速率变化量随当量比的增加先增大后减小, 化学当量比此时变化量达到最大。
摘要:本文基于含颗粒甲烷燃烧详细化学反应动力学机理Gri-Mech3.0, 采用层流预混火焰速度计算模型计算了含颗粒甲烷空气层流预混燃烧过程。通过对比层流火焰燃烧速度曲线, 分析了温度和当量比对燃烧速度的影响, 且对计算结果进行敏感性分析。研究结果表明, 颗粒存在降低了火焰的燃烧速度, 且温度越高, 燃烧速度降低的越明显, 而燃烧速度变化量随当量比的增加则先增大后减小。
关键词:甲烷,颗粒,层流燃烧,敏感性分析
参考文献
[1]Glarborg P, Miller J A, Kee R J.Kinetic Modeling and sensitivity analysis of nitrogenoxide formation in well-stirred reactors[J].Combust Flame, 1986 (65) :177-202.
[2]Miller J A, Bowman C T.Mechanism and modeling of nitrogen chemistry in combustion[J].Prog.Energy Combust.Sci, 1989 (15) :287-338.
[3]Weber R, Orsino S, Lallemant N, et al.Combustion of narural gas with high-tempersture air and large quantities of flue gas[J].Symp (Int) Combust, 2000:1315-1321.
[4]冯耀勋, 郑晓峰, 贾明生.预热温度对高温空气/甲烷扩散火焰中NO生成的影响[J].节能技术, 2011, 29 (4) :291-295.
[5]Hill PG, Huang J.Combust Sci Technol 1980, 60;7-30.
[6]Garforth AM, Rallis CJ.Laminar velocity of stochiometric methane-air pressure and tempersture dependence[J].Combust Flame, 1978 (31) :53-68.
[7]Stone R, Clarke A, Beckwith P.Correlation for laminar burning velocity of methane/diluent/air mixtures obtained in free-fall experiments[J].Combust Flame, 1988 (114) :546-55.
[8]Andrews GE, Bradley D.Determination of burning velocity:a critical review[J].Combust Sci Technol, 1973 (20) :77-89.