APP下载

一种基于GPU的实时烟雾模拟体绘制算法研究

2019-01-06邓定胜

电脑知识与技术 2019年32期

邓定胜

摘要:文章以怎样才能在大规模场景中渲染出高效率和高真实感的烟雾效果为出发点,以GPU渲染管线流程为可编程基础,利用以纳维一斯托克斯流体动力学方程(Navier-Stokes equations:简称NS方程)为基础,用大规模场景中的烟雾形态表现为密度场,通过基于光照的计算和硬件加速的体绘制算法来实时模拟场景中的烟雾效果。在实时渲染过程中,随机的加入风的扰动来使渲染效果更加真实。实验表明,该方法能高效真实的渲染出烟雾模拟效果,具有较高的绘制效果和真实感。

关键词:GPU;体绘制;NS方程;实时烟雾模拟;物理模拟

中图分类号:TP31 文献标识码:A

文章编号:1009-3044(2019)32-0245-03

近年来,随着计算机硬件的发展,特别是图形硬件的蓬勃发展,使得在微型机上绘制图形的速度和质量有了显著的提升。但是由于绘制场景越来越复杂,致使很多自然效果模拟出来不够真实和高效。这里,大规模场景中烟雾模拟的真实渲染就是其中的热点研究之一。

灰蒙蒙的雾霾、浮动的云彩、奔腾的海浪、激情燃烧的火焰等流体现象的模拟在虚拟现实、歌舞剧场、电影特效、电子游戏等领域具有重要作用,能有效衬托环境气氛,而流体模拟的计算开销较大,难以保证实时效果;而且烟雾运动规律复杂,形状也随机发生变化,所以如何真实模拟烟雾效果很是一个值得挑战的课题,具有非常实现的意义。

1烟雾模拟算法

要渲染出高真实感的烟雾效果,先前图形学研究者们已经提出了很多方法。烟雾的模拟技术要考虑到场景中所有表面与烟雾颗粒相互的效果,相对于只考虑烟雾颗粒之间的相互作用要繁杂得多,计算量也大很多。

1.1烟雾模拟的方法与设计方案

烟雾模拟的方法与设计方案主要包括三大部分:

1)基于粒子系统的烟雾模拟:该模拟是流体类物体模拟的经典模拟方式之一,采用粒子系统绘制出烟雾颗粒,并且利用物理运动学的运动规律来控制粒子的运动,但是现在的绘制场景中都较为复杂和大规模化,这样生成的粒子数就很多,使得渲染频率急剧降低。

2)基于纹理方法的烟雾模拟:该模拟采用纹理映射的方式在场景中进行烟雾纹理的贴图,典型的方法为纹理滾动技术的应用,这样虽然弥补了粒子系统绘制效率的问题,但是烟雾的真实感却降低了。

3)基于数学物理模型的模拟方法:该模拟方法正是本文用来模拟大规模场景中烟雾效果的方法。

1.2烟雾生成技术

烟雾生成技术的核心主要有如下两个方面:

1)烟雾运动和形态的模拟,也就是烟雾运动模型;

2)烟雾绘制:烟雾绘制技术依赖于烟雾模拟模型的选择。

文章从这两个方面着手,对比分析了最近国内外在烟雾技术领域的所得成果,同时也结合了大规模场景的实时性要求,决定采用流体运动学模型,将烟雾形态变现为三维空间的密度场,然后通过基于光照计算和硬件加速的体绘制技术对密度场进行模拟渲染,进而通过仿真获得具有真实感的烟雾实时效果。

1.3欧拉法和拉格朗日模拟算法

描述流体现象最为完整的方程是纳维一斯托克斯方程,流体力学中描述流体运动的物理量有两种方法:欧拉法和拉格朗日法。Ns方程根据描述方法的不同,也具有不同的形式。

1.3.1欧拉法

也称为空间描述法,它着眼于空间点,认为流体的物理量依据空间点及时间发生变化,即把流体物理量表示为欧拉坐标及函数。这种方法是从研究流体所占据的空间中各个固定点处的运动着手,分析被运动流体所充满的空间中每一个固定点上流体的速度、压强、密度等参数随时间的变化,以及研究由某一空间点转到另一空间点时这些参数的变化,是一种基于网络的方法。这里给出常用的不可压粘性NS方程组的欧拉公式:

这种方法就是对于各个相对独立的粒子进行力的分析,通过积分计算出这些粒子在下一个时刻的位置和其他状态量。

拉格朗日法的优点是容易表达,不需要对整个空间进行处理,况且容易做到质量守恒,而且也比较容易实施控制,然而,拉格朗日法对于平滑运动界面的重建难于处理,况且自由界面拓扑的改变必须采用复杂的算法才能构造出其表面几何,计算量也随着粒子数的增多而增大。

拉格朗日法和欧拉法虽然各有优缺点,但是为了更真实地模拟流动,拉格朗日的粒子算法往往要结合基于网格的欧拉算法一并使用,比如得到广泛应用的半拉格朗日算法,进而加强交互控制。

2新型的基于物理模型的烟雾模拟求解算法

要做到在GPu上求解方程,本文拟采用配置网格来离散化求解集。

2.1求解扩散项

由于粘性的液体对流动具有某种阻碍,会影响速度的扩散,从某种角度来看,它描述了相邻单元间的质量交换,即流入和流出,粘性扩展的偏微分方程为:

4实验仿真

此烟雾模拟的效果对比是通过在CPU和GPU上渲染的帧率来实现的,其渲染的帧率对比如表1和图1所示。对比表1和图1不难发现,利用GPU渲染烟雾效果法能够实现实时性要求,比CPU渲染烟雾的效果实时陛和稳定性要好;通过体绘制烟雾模拟算法后,仿真效果如图2所示。

5总结

文章以烟雾模拟物理模型为基础,通过实时体绘制算法在GPU上成功实现了烟雾模拟的实时渲染,达到自动生成看起来比较自然真实的烟雾效果的目的,从而达到烟雾渲染效果的实时性和真实性。