论文部分内容阅读
自然现象的模拟仿真一直是计算机图形学的研究热点,其主要研究内容是利用计算机模拟真实世界物体,以及自然现象,比如:火焰、海浪、云层等。将这些元素添加至图形场景中,可显著提升场景的真实感。其中,实时绘制随风摇曳的真实感火焰肯定是件让人心驰神往的事情,火焰在影视特效制作、灾害模拟、动漫、娱乐等领域都有着广泛的应用和进一步发展的需求。对像火焰这种不规则景物的模拟,通常方法是采用粒子系统以及动态纹理等方法来实现,但这两种方法都有其局限性。由于计算机运算能力的迅速发展和图形处理器并行计算能力的攀升,使基于物理方法的火焰模拟成为可能,它比粒子和纹理模拟出的火焰真实感更强。之前已有许多研究者提出了一些基于物理的火焰模拟方法,不过都是采用的是不可压缩的Navier-Stokes方程,本文使用的是可压缩的Navier-Stokes方程来模拟火焰的形态,可压缩的方程比不可压缩的方程可以少求解一组物理量,减少算法的复杂度。本文依次通过计算外力项(密度项)、扩散项、平流项及质量守恒来求解Navier-Stokes方程。然后利用求解Navier-stokes方程所得的密度场数据与焰色图谱确定火焰的RGB值以及Alpha通道,最终实现火焰的模拟。通过控制Navier-stokes方程中的外力项来使火焰具备可交互性。本文还通过设置一些额外的边界条件来模拟外界障碍物,使火焰能对外界障碍物的遮挡作出响应。在火焰模拟过程中,Navier-Stokes方程的求解是最耗时间的一个环节,我们使用cuda控制GPU进行通用计算,将Navier-Stokes方程求解算法中可并行的部分转移到GPU上计算,降低CPU的负担,提高算法的效率。本文同时给出了纯粹在CPU上求解N-S方程的算法以及CPU与GPU通力合作求解N-S方程算法,后者的效率较前者有一定的提高。最后分析了对火焰模拟算法影响最大的两个因素,并给出了定量的性能分析数据。