基于矢量场的火焰涡流现象模拟方法研究∗

2020-10-09 02:48俞俊程
计算机与数字工程 2020年7期
关键词:旋涡涡流矢量

俞俊程

(江苏科技大学计算机学院 镇江 212001)

1 引言

火焰是无规则物体的典型代表,具有无规则和实时多变的特征。它们没有一般几何物体光滑的表面和突出的棱角,外观形状极不规则,这就让经典几何学很难对其进行描述。近年来,经过人们的不断研究,已经提出了多种火焰模拟的方法。通过对前人研究成果的总结,可以将计算机火焰模拟的方法分成三种类型:基于2D 纹理的火焰模拟[2]、基于数学物理模型的火焰模拟[3]以及基于粒子系统的火焰模拟。基于2D纹理的火焰模拟方法采用纹理贴图的方式进行模拟,这种方法虽然简单方便,但人工痕迹极大,模拟的真实性也有待提高。而用数学物理模型进行火焰模拟,其模拟效果比较真实,但是模拟需要的运算量很大,往往需要多次的迭代计算,这也一定程度上限制了这种模拟方法的使用。相比而言,运用粒子系统进行火焰模拟是最合适最经得起考验的方法[4~7],它的模拟效果比2D纹理方法好得多,同时运算量也没有数学物理方法那么大。

所谓粒子系统就是将一定数量的基本粒子组成粒子群体,用这种粒子群体来表示不规则的运动物体,然后通过控制这些粒子的基本属性如运动、大小、颜色等来模拟不规则物体的运动变化特征的技术。W.T.Reeves 等首次系统地提出了粒子系统方法[8],随后,这种方法得到了很大的发展。Sims利用粒子系统的并行特点,在CM-2 超级并行计算机上实现了并行的粒子动画和绘制系统[9]。Richard 和David 引入有向粒子的概念,为可变形的物体表面进行建模[10],实现变形物体表面断开、连接或延伸等效果。Miroslav Sabo 对粒子系统作了进一步扩展[11],将粒子属性的转折点引入了粒子生命周期以保持系统结构的完整。2010 年,唐勇等采用粒子系统与物理模型相结合的方法在复杂环境中进行烟雾模拟[12],并利用有限粒子数生成了满足真实性的烟雾场景。此方法被认为是迄今为止模拟不规则模糊物体,最为成功的一种图形生成算法[13~14]。

火焰在传播的过程中受到空气阻力、热浮力、风力和重力等因素的影响,由于粒子体积很小,其受到重力的影响可以忽略不计。热浮力的大小由火焰的温度决定,火焰内部温度高,火焰粒子受到的热浮力较大,粒子上升速度快,相反,火焰外部温度较低,粒子受到的热浮力较小,上升速度慢。同时,火焰受到风力的影响,当风出动火焰的时候,火焰粒子在水平方向以接近风速的速度移动,在竖直方向受热浮力影响向上运动。当火焰粒子以一定速度进入空气时,由于火焰粒子与空气的摩擦,火焰粒子受到空气的剪切力作用而产生旋转变形,产生涡流效果。另外,风吹动火焰时也会产生涡流效果,本文将两者综合考虑,在分析和研究当前模拟火焰涡流现象的主要方法螺旋法的基础上,提出了一种基于矢量场的火焰涡流模拟方法。

2 螺旋法

火焰粒子在进入空气中时,首先火焰粒子与空气的摩擦,火焰粒子受到空气的剪切力作用而产生旋转变形,产生涡流现象[15]。同时受到热浮力的影响产生竖直向上的运动,螺旋法就是在综合考虑火焰粒子受力情况下,采用随机粒子在场景中做螺旋向上运动来模拟火焰涡流现象。

图1 粒子受力分析图

粒子运动轨迹满足圆锥螺旋线方程:

其中,k 表示螺旋线的初始半径,p 表示螺距。

旋涡粒子速度矢量随时间变化规律如图3 所示。

图2 粒子运动轨迹图

图3 旋涡粒子速度矢量图

螺旋法原理较为简单,将一部分粒子从火焰粒子中独立出来,用这部分粒子的螺旋运动来模拟火焰的涡流现象,这部分粒子称为螺旋粒子。但是在实际模拟过程中,发射器向一定方向发射出的普通粒子肯定会有一部分运动到做螺旋运动的粒子所在的空间位置,在此空间位置上,既有按照螺旋线方程作螺旋上升运动的粒子,又存在按照粒子发射器给定的初始状态运动,这就导致了在视觉效果上火焰粒子运动状态冲突。另外,粒子发射器产生的粒子其初始状态都不相同,CPU需要按照螺旋线方程分别计算每个粒子的运动状态,这样增加了CPU的负担,造成大量的内存消耗。

在螺旋法的基础上,要想保障火焰粒子的连续性,消除粒子运动状态冲突的现象,需要将火焰粒子作为一个整体来处理,而不能将其分割成普通粒子和螺旋粒子两个部分分别进行火焰模拟,因此,本文提出使用矢量场的方法,对粒子系统中处于矢量场中的粒子的运动状态进行控制,以达到模拟火焰涡流现象的目的。

3 矢量场方法

3.1 场和矢量场

物理学中把某个物理量在空间的一个区域内的分布称为场,如温度场、密度场、引力场、电场、磁场等。如果形成场的物理量只随空间位置变化,不随时间变化,这样的场称为定常场;如果不仅随空间位置变化,而且还随时间变化,这样的场称为不定常场。依据场在时空中每一点的量的类型可以将场分为标量场、矢量场和张量场三种。

如果形成场的物理量是矢量,则将这种场称为矢量场(vector field),矢量场是由一个矢量对应另一个矢量的函数[16]。建立坐标系(x,y,z),空间中每一点(x0,y0,z0)都可以用由原点指向该点的向量表示。因此,如果空间在所有点对应一个唯一的向量(a,b,c),那么时空中存在向量场F:(x0,y0,z0)→(a,b,c)。在实际中,一般的场都是不定常的场,矢量场也是一种不定常场。但为了研究方便,可以把在一段时间内物理量变化很小的场近似地看作定常场。矢量场通常被用来模拟例如流体在整个空间中的速度和方向,或者某个力的强度和方向,比如磁力或者引力,随着它从一个点到另一个点的变化。在本文中,火焰粒子可以看作是一种流体,可以用矢量场来模拟其在空间中的运动状态。

3.2 旋涡场

在矢量场的全部或部分存在角速度的场称为漩涡场,漩涡场是一种特殊的矢量场。本文中采用旋涡场模拟火焰涡流现象,火焰粒子在旋涡场中按照旋涡场受力方向运动。涡量是描写旋涡运动最重要的物理量之一,定义为流体速度矢量的旋度,涡量的单位是秒分之一。涡量的定义如下:

其中ω 表示流体微团的平均角速度。

漩涡场中用涡线来表示流体微团的运动路径,涡线的定义为:某一瞬时漩涡场中的一条曲线,曲线上任意一点的切线方向与改点流体微团的旋转角速度一致。由定义推导出其微分方程,设某一点上流体微团的瞬时角速度为取过该点涡线上的微元矢量,根据定义这两个矢量方向一致,矢量叉乘积为0,即

这就是涡线方程。

图4 漩涡场示意图

图5 涡线示意图

图6 涡管示意图

图7 旋涡强度示意图

某一瞬时,在涡量场中取一封闭曲线c(不是涡线),通过曲线上每一点作涡线,这些涡线形成的封闭的管型曲面称为涡管。如果曲面c 构成的是微小截面,那么这些涡管并与其中所有涡线垂直的断面称为涡管断面,在微小断面上,各点的旋转角速度相同。涡管中充满着的作旋转运动的流体称为涡束,微元涡管的涡束称为微元涡束或者涡丝。在微元涡管中,两倍角速度与涡管断面面积dA 的乘积称为微元涡管的涡通量(旋涡强度),即:

对有限面积,则通过这一面积的涡通量为

如果A 是涡束的某一横截面积,就称为涡束旋涡强度,它也是角速度矢量的通量,旋涡强度不仅仅取决于旋度Ω,而且取决于面积A。在流场的某封闭周线上,流体速度矢量沿周线的线积分定义为速度环量,用符号Γ 表示,即:

Stokes 定理:在涡量场中,沿任意封闭周线的速度环量等于过该周线所包围曲面面积的旋涡强度,即:

这一定理将旋涡强度与速度环量关联起来,给出了通过速度环量计算旋涡强度的方法。

矢量场方法通过建立漩涡场改变火焰粒子运动状态从而模拟火焰的涡流现象。旋涡场只对进入其中的火焰粒子作用,不会影响其他粒子的正常运动,也不存在同一空间位置出现不同运动状态的粒子的情况,消除了断层现象。同时,矢量场方法采用GPU Sprites Emitter 来模拟火焰涡流,将模拟粒子运动的计算放在GPU 端执行。相比CPU 端模拟粒子运动,它的优势是减少了CPU 端的开销,减少了内存消耗,借助GPU 的高性能并行计算,能够支持更多的粒子数目。

4 实验结果与分析

本文实验环境:Intel Core i5-6300HQ,8G 内存,NVIDIA GeForce GTX 960M,2G独显。

本文在Unreal Engine 4.15.3 软件平台上,同一个第三人称视角项目的同一个关卡中对螺旋法和矢量场方法火焰涡流现象模拟情况进行比较。两种方法实现的具体粒子效果以及火焰效果如图8~13所示。

图8 普通粒子图

图9 螺旋法粒子图

图10 矢量场法粒子图

比较两种方法对应的实验效果图12 和图13,图12 中同一位置有作螺旋运动的火焰粒子以及作上升运动的普通火焰粒子,出现火焰粒子运动状态冲突的现象。而图13 中用矢量场法实现的火焰则不存在在同一位置火焰粒子运动状态冲突的现象,从视觉效果上看,矢量场方法所生成的火焰涡流要比螺旋法更好。

图11 普通火焰图

图12 螺旋法涡流图

图13 矢量场法涡流图

两种方法在同一场景环境下所占系统资源以及实时场景数据如表1所示。

表1 对比分析表

从上表中可以清楚地看出,矢量场方法在相同粒子数的情况下,其所消耗的内存远远小于螺旋法,矢量场法FPS 相对于螺旋法有17%的提升,其粒子渲染时间也比螺旋法更少。所以本文提出的矢量场方法更加适合于火焰涡流现象的模拟。

5 结语

本文从虚拟仿真的真实性角度出发,在介绍和分析螺旋法模拟火焰涡流的基础上,提出了一种基于矢量场的火焰涡流模拟方法,这种方法弥补了螺旋法消耗大量内存,容易出现火焰粒子运动状态冲突的缺点,运用矢量场来控制粒子的运动状态,达到降低内存占用,高真实性的目的。同时,本文中的方法还有更大的提升空间,比如利用粒子系统的交互来实现更加复杂的火焰粒子运动等,后续还会继续加深研究。

猜你喜欢
旋涡涡流矢量
一种矢量信息重构的最优双矢量定姿算法
基于卧式蒸汽发生器传热管涡流检查数据的堵管准则研究
一种适用于高轨空间的GNSS矢量跟踪方案设计
矢量三角形法的应用
一种单机式涡流探伤仪电性能校准装置
大班科学活动:神秘的旋涡
涡流温度分离技术在天然气行业的应用
山间湖
涡流问题的剖析与探究
为领导干部荐书