一种用湍流方程丰富火焰模拟细节的方法
【专利摘要】本发明涉及一种用湍流方程丰富火焰模拟细节的方法,(1)采用基于网格的欧拉方法,使用CUDA加速求解Navier-Stokes方程,得到火焰的速度场、密度场和温度场;(2)采用粒子方法简化标准k-e湍流方程,并利用CUDA加速求解得到粒子的湍动能和能量耗散率;(3)生成窄带随机纹理场,进而求旋度得到速度场,然后根据粒子的位置在随机速度场中采样,得到粒子所在处的速度;(4)合成粒子的扰动速度,然后利用该速度以高斯衰减的权重扰动粒子邻域内的网格节点处的速度,驱动密度场和温度场的运动;(5)利用CUDA和OpenGL的缓冲区映射,直接渲染CUDA计算出来的数据场,得到火焰面片。
【专利说明】一种用湍流方程丰富火焰模拟细节的方法
【技术领域】
[0001]本发明涉及一种用湍流方程丰富火焰模拟细节的方法,属于虚拟现实科学【技术领域】。
【背景技术】
[0002]火焰是自然界的基本元素之一,与人类的生存和生活有着密切的联系,在虚拟世界中对火焰进行真实重现,可以帮助人类增强认知,把握规律,改善人类行为,更好地按照规律办事。火焰的真实感模拟,在消防训练、军事仿真、影视特效、虚拟现实等领域有着重要的科学价值和经济效益,同时也是计算机图形学中最具有挑战性的研究方向之一。
[0003]燃烧是一种快速的带化学反应的流体动力学过程,受众多的因素影响。几乎所有的燃烧过程都伴随着流动过程,而燃烧所产生的火焰与这种流动相互作用,进而对火焰的结构、稳定性产生影响。通常,根据火焰的形态、稳定性,可将其分为两类:层流火焰和湍流火焰。根据流体力学的相关理论,当雷诺数较小的时候,黏性力对流场的作用大于惯性力,导致流速因受黏滞力的影响而衰减,流体流动趋于稳定状态,形成层流,层流火焰是最简单的一种火焰,火焰锋面光滑稳定;而当雷诺数较大时,惯性力对流场的作用超过黏性力,流体运动趋于不稳定,流速的微小变化容易发展和增强,形成紊乱、不规则的流场,成为湍流,湍流火焰结构复杂,其锋面出现许多褶皱和小漩涡。在实际生活中,由于燃烧环境的不稳定,所产生的火焰多数都具有湍流现象,所以对于湍流火焰的模拟可以获得更为逼真的、实际的效果,尤其是可以在影视、动画中产生更为生动的特效提供帮助。
[0004]传统的基于物理的火焰模拟方法是使用Navier-Stokes方程,通过求解Navier-Stokes方程得到火焰的密度场和温度场,再对求解所得的数据场进行渲染得到火焰面片。火焰作为一种低粘度的特殊流体,在实际的燃烧过程中是会呈现出丰富的细节特征的,然而由于求解方程过程中存在数值耗散的问题,火焰的许多细节特征丢失,造成所模拟的火焰真实感较差。本发明引入流体力学中的湍流方程,对火焰燃烧过程中的湍流进行建模,使得火焰呈现出湍流细节,增强真实感。
【发明内容】
[0005]本发明解决的技术问题是:针对目前火焰模拟中湍流细节丢失、真实感不强的现状,提出了一种湍流细节增强的火焰模拟方法,对三维火焰的湍流运动进行建模模拟,使得火焰的三维模拟效果更加逼真。
[0006]本发明提出一种模拟火焰湍流方法,包括以下步骤:
[0007](I)、基于CUDA加速的Navier-Stokes方程求解,采用的是基于网格的欧拉法,对Navier-Stokes方程进行离散,并利用CUDA加速对离散后的方程进行数值求解,得到火焰的速度场、密度场和温度场,从而获取火焰的主体形态轮廓;
[0008](2)、基于标准k-e湍流方程,使用粒子方法简化标准k-e湍流方程,然后使用第(O步求得的速度驱动粒子运动,并利用CUDA加速求解简化后的方程,到粒子的湍动能和能量耗散率;
[0009](2.1)利用求解Navier-Stokes方程得到的速度场计算应变量;
[0010](2.2)由应变量计算能量产生项;
[0011](2.3)将能量产生项带入粒子简化后的标准k-e湍流方程求解得到湍动能和能量耗散率;
[0012](3)、由窄带随机纹理场生成随机速度场;
[0013](3.1)创建一张由随机噪声点组成的随机纹理场R ;
[0014](3.2)对这张随机纹理场向下采样,得到尺寸减半的纹理场R I ;
[0015](3.3)再将纹理场R丨向上采样,得到原尺寸大小的纹理场R丨t ;
[0016](3.4)将原始纹理场R减去经过采样处理的纹理场R丨丨,得到具有窄带性质的随机纹理场;
[0017](3.5)由随机纹理场R丨丨生成速度场;
[0018](4)由随机速度场和湍动能合成具有高频特征的扰动速度场;
[0019](4.1)在第(2)步得到的速度场中进行多频段采样,得到粒子所在位置处的速度;
[0020](4.2)与第(I)步中的湍动能合成粒子的扰动速度;
[0021](4.3)利用该速度高斯衰减地扰动粒子邻域内的网格节点处的速度,然后驱动密度场和温度场运动;
[0022](5)对粒子进行分组,从前往后分别绘制每一组粒子,并利用CUDA和OpenGL的缓冲区映射,加速渲染,得到具有湍流细节的火焰面片;
[0023](5.1)以视点和光源的半角方向为基准,将空间划分为垂直于该半角方向的均匀间隔的切片,然后将相邻切片之间的粒子分为一组;
[0024](5.2)对于每一组粒子,分别以视点方向和光源方向进行绘制,然后从前往后将绘制结果进行混合,得到最终的火焰面片。
[0025]本发明的有益效果是:
[0026]( I)本发明针对目前火焰模拟湍流细节缺失的现状,提出了 一种基于湍流方程的火焰湍流细节增强的模拟方法,是所模拟的火焰更加逼真。
[0027](2)本发明采用GPU加速物理方程的求解过程,并且采用CUDA和OPENGL的缓冲区映射,使得计算和渲染都在GPU上进行,避免了 CPU和GPU之间每帧数据的传输,提高了计算和渲染的效率
【专利附图】
【附图说明】
[0028]图1为本发明的技术方案图;
[0029]图2为本发明的火焰渲染的说明图。
【具体实施方式】
[0030]下面结合附图对本发明作进一步的描述。
[0031]步骤I采用基于网格的欧拉方法,使用CUDA加速求解Navier-Stokes方程,得到火焰的速度场、密度场和温度场。
[0032]Vu = O,存储粒子的速度、位置、颜色和纹理坐标,I取该缓冲区,根据步骤2.2的结果计算粒口能量耗散率:
是步骤2.2得到的能量产生项,、是常;粒子的位置在随机速度场中采样,得到粒[0055]其中
【权利要求】
1.一种用湍流方程丰富火焰模拟细节的方法,是通过求解湍流方程得到湍动能,再结合随机速度场,对火焰的速度场进行扰动,得到具有高频湍流特征的速度场,然后驱动火焰的密度场运动,得到具有湍流细节的火焰。该方法的特征在如下步骤: (1)使用CUDA加速求解Navier-Stokes方程,得到火焰的速度场、密度场和温度场,从而得到火焰的主体形态; (2)使用粒子方法对标准k-e湍流方程进行简化,然后使用第(I)步求得的速度场驱动粒子运动,并利用CUDA加速求解简化后的方程,到粒子的湍动能和能量耗散率; (3)生成具有窄带特征的随机纹理场,再由窄带随机纹理场生成随机速度场,根据粒子位置采样得到粒子所在处的速度; (4)根据第(2)步得到的采样速度和第(I)步中的湍动能合成粒子的扰动速度,在该粒子的邻域内以高斯衰减的权重扰动粒子邻域内的网格节点处的速度,使网格节点的速度有了更多的高频细节特征,然后以该速度驱动火焰密度场、温度场的运动; (5)对粒子进行分组,从前往后分别绘制每一组粒子,并利用CUDA和OpenGL的缓冲区映射,加速渲染,得到具有湍流细节的火焰面片。
2.根据权利要求1所述的一种用湍流方程丰富火焰模拟细节的方法,其特征在于:所述步骤(2)中使用粒子方法简化标准k-e湍流方程并加速求解的方法如下: (2.1)标准k-e湍流方程为:
3.根据权利要求1所述的一种用湍流方程丰富火焰模拟细节的方法,其特征在于:所述步骤(3)中由窄带随机纹理场生成随机速度场的方法为: (3.1)创建一张由随机噪声点组成的随机纹理场R ; (3.2)对这张图片向下采样,得到尺寸减半的纹理场R ; (3.2)再将纹理场R丨向上采样,得到原尺寸大小的纹理场R;(3.3)将原始纹理场R减去经过采样处理的纹理场R丨丨,得到具有窄带性质的随机纹理场; (3.4)由随机纹理场R丨丨旋度求得随机速度场:
4.根据权利要求1所述的一种用湍流方程丰富火焰模拟细节的方法,其特征在于:所述步骤(4 )中由随机速度场和湍动能扰动网格节点的速度场,得到具有高频湍流速度场的方法为: (4.1)为了补偿缺失的高频特征,在随机速度场中采样多个频段的速度,进行叠加得到具有更多丰富细节的速度场:
【文档编号】G06T15/10GK103839287SQ201310612150
【公开日】2014年6月4日 申请日期:2013年11月26日 优先权日:2013年11月26日
【发明者】周忠, 高宏昌, 伍朝辉, 吴威 申请人:北京航空航天大学