引言:用计算机生成真实感图形一直是计算机图形学中最具有挑战性的研究方向之一,特别是对不规则的火焰模拟十分困难,原因在于:
首先它是气体现象,其形成是由无数小颗粒随机运动而产生,外观形状极不规则,没有官话的表面,而且极其复杂与随意,并随时间而发生变化,用直线、圆弧、和样条曲线等去建模其逼真度很差。论文检测,扩散过程。再次火焰几乎很少有人能够准确地将其形状描述出来。论文检测,扩散过程。最后其运动十分复杂,同时扩散过程中还会收到风力的作用,使其发生捉摸不定的变化。
尽管如此,国内外学者一直在努力探索,曾提出了各种模拟方法,近来又提出新的方法——基于粒子系统的火焰仿真。
1 主要方法
1.1火焰模型分类
火焰模型的研究方法大致分为五类:第一类是应用纹理映射的方法,这种方法难以获得具有真实感的运动图像,且人工痕迹极大,原因是其中没有变现物体运动本质的参数,适用于对图像真实感要求不高的场合;第二类是应用各种光照模型的体绘制方法,其主要缺点是场景中的所有元素都必须使用同一种绘制技术,这使得气体现象的模拟计算量极大,从而限制了使用;第三类是利用分形几何的方法,先描述物体大致结构的形状,然后再利用随机仿射变换或光照将物体表现出来,适于表现静止图像的精细结构;第四类是基于细胞自动机的方法,其特点是组元简单,但组合效果复杂,适用于低维情况下简单模拟的场合;其五类是从描述物体的运动过程的方法,其有点是能够展现气体现象的动态特征,且真实感强,能够在虚拟场景中满足沉浸感的需要,难度在于运动规律的提取以及实时绘制。
在这其中,粒子系统具有独特的优点:其一,粒子系统比较灵活,如其组成的粒子既可是最简单的点,也可以具有一定的结构,可根据描述的对象随意调整,且相对来说易于实现;另外,根据场景的特点,对粒子的数量、时间以及硬件平台的需求不苛刻;其二,粒子系统的模型是过程化的,在其中可加入随机过程,因此,获得精细的模型不需大量的设计时间,但粒子系统在实现上最大的缺憾是当粒子数达数量级时,难以达到实时效果。论文检测,扩散过程。论文检测,扩散过程。在最近几年对粒子系统的研究中,一方面其应用范围日益扩大,另一方面其实现技术的研究也向着并行化方向发展,相信随着计算机技术的发展,对火焰的研究会出现新的成果,图1给出了这些方法建立的模型其主要性能的比较。
模型 | 对象表示 | 运动表示 | 适用环境 | 计算代价 | 真实感效果 |
纹理映射 | 实体纹理函数 | 纹理参数变化 | 对图像真实感要求不高的场合 | 一般 | 真实感差 |
光照模型 | 密度集 | 光线变化 | 科学计算可视化 | 极大 | 真实感好 |
分形模型 | 分形集 | 分形参数变化 | 静止图像 | 不一定 | 静态逼真 |
细胞自动化 | 细胞网格 | 状态转化规律 | 运动图像,中低平台 | 不一定 | 一般 |
粒子系统 | 粒子元图 | 随机过程 | 运动图像,多平台 | 不一定 | 真实感好 |
图1模型性能比较
1.2火焰运动的粒子系统
1.2.1火焰的行为描述
模拟火焰的行为,其基础是研究与火焰行为相关的因素。这些因素包括火焰运动速度、火焰的温度和风的作用。
影响火焰运动的第一个因素是火焰的速度。当火焰以一定速度进入空气时,由于火焰与空气的摩擦,火焰收到空气的剪切力作用而产生旋转变形,使得火焰与空气进行混合,产生湍流效果。影响火焰运动的第二个因素是火焰的温度。在火焰的内部,由于温度高的部分受浮力小,上升速度快,而与之相反,温度低的部分受浮力小,上升速度慢,因此,由于温度的差异,引起火焰内部也会产生剪切作用而扩散。影响火焰运动的第三个因素是风的作用。当烟收到风的吹动时,烟在水平方向以接近风速的速度移动,同时烟受空气浮力作用向上运动。
1.2.2粒子系统的基本模型
每个粒子将经历出生、生长、衰老和死亡这几个阶段,从而生成一系列运动的场景。粒子系统生成单帧图像的过程如图2所示:
图2粒子系统生成单帧图像过程
(1)粒子的生成
根据模拟对象的不同,粒子的生成区区域也不同。火焰粒子系统中粒子产生于焰火爆炸点,而火焰粒子系统中,粒子产生于摸个燃点或者竖直的表面;在空中爆炸的粒子系统中,爆炸碎片的粒子产生于一个球形区域内。论文检测,扩散过程。
在粒子系统中,确定了粒子的生成区域后,还需要确定产生新粒子的数量。粒子数量的定义很关键,它决定了火焰的密度和大小。粒子数量太小,则不能满足真实感要求,粒子数量过大,则增加了系统的处理时间,从而不能男足实时性要求。Reeves提出了确定粒子数量的两种方法:
第一种方法:平均新粒子数衡量法
这种方法就是用控制在一帧中所产生的粒子的平均数和它的方差来实现的。
第二种方法:物体面积衡量法
这种方法是指产生新粒子的数目要依靠屏幕的大小,模型设计这控制产生在没单位屏幕区域内的平均粒子数和它们的方差。过程粒子系统能够通过一个特殊帧面上的可视参数来计算它所覆盖的大约屏幕区域,进而正确地计算出新产生粒子数目,从而避免了用大量粒子来模拟屏幕上投影面积很小的景物,提高了算法的绘制效果。
(2)粒子的属性及其变化
每个粒子都具有一定的属性,粒子的属性决定了粒子的状态,根据模拟对象的不同,粒子的属性可能不完全相同,但一般都包括一下属性:形状、大小、颜色、透明度、位置、速度、生命期。
当粒子诞生时,按照某种规则来分配参数的具体值。这一操作要随机处理,即用随机函数进行扰动,否则粒子的初始属性将会很规则,导致最终模拟效果不好。对于每一个新生粒子都必须赋予相应的初始值。它包括:粒子的初始位置、初始形状、初始大小、初始颜色、初始速度及粒子生命周期。
(3)粒子的运动
新的粒子产生并初始化后,粒子根据初始化时速度的大小及方向开始在系统运动,同时,粒子的相关属性也随着时间的变化而不断的变化。粒子的空间位置主要由粒子前一位置、粒子的速度和每帧的时间间隔决定。
(4)粒子的死亡
粒子在生成时就已经被赋予一定的生命期,随着时间的推移,粒子的生命期逐渐减少。递减的方式可以按照每一帧的实际物理时间递减,也可以每一帧递减1,而不考虑帧与帧之间的时间间隔。一旦减少为0,粒子则被认为死亡,此时,该粒子就会与背景色融合而消亡。此外,如果粒子的生命值还未减少到0,但粒子出于下列情况之一,粒子也被认为 死亡:
①粒子的颜色和透明度达到某个界限而不能再被观察到时;
②粒子与其所属粒子系统中心的距离超出了一定距离时。论文检测,扩散过程。
(5)粒子的绘制
在确定了某一帧画面所有有生命的粒子的位置和属性后,就可以利用光照、阴影和消隐等处理技术实现粒子的绘制。目前,主要有下面四种绘制方法:点粒子绘制方法、线性粒子绘制方法、面粒子的绘制方法和随机粒子绘制方法。
1.2.3实现工具
本课题在Windows XP环境下开发,采用Visual C++6.0为编程工具,三维动画环境由OpenGL支持。
2 结语及展望
在虚拟战场或者游戏的研究中,火焰殊效应是一个重要的组成部分,其逼真程度直接影响着整个系统,根据火焰的特点,可选择粒子系统和其他方法相结合来进行模拟,其研究具有重要的意义。