论文部分内容阅读
流体是一种美妙而复杂的物理形态,诸如上升的轻烟、漂浮的云彩、翻腾的海浪、燃烧的火焰等流体现象的模拟在电子游戏、电影特效和虚拟现实等领域都有广泛的应用。在传统的动画制作中,动画师需要手工设定流体在每一帧的状态,工作量很大,而且真实感欠佳。随着计算机图形学和计算流体力学的快速发展,基于物理的计算机流体动画开始普及并得到了广泛应用。它从流体的物理本质出发,建立精确的物理模型,通过数值求解方法得到运动过程中每一时间步的状态参数,并根据状态参数进行有效绘制,从而生成高质量的流体动画。本文着重于流体动画中的烟雾模拟技术,概述了烟雾模拟的各种研究方法以及近年来国内外在基于物理的烟雾模拟领域的研究趋势。此外本文详细介绍了描述流体运动规律的Navier-Stokes方程组,并在此基础上实现了一个真实感与实时性并举的烟雾动画。本文的主要工作和贡献如下:(1)采用有限差分法求解Navier-Stokes方程,计算区域用同位网格离散,并使用分解法对方程的求解进行简化处理,减少计算量。求解过程中采用半拉格朗日法求解平流项,同时结合隐式迭代的方法求解扩散方程和泊松方程,保证了算法的稳定性,并且可以采用任意大的时间步长来控制模拟速度。此外,本文还往流场中加入了漩涡约束力和浮力以改善烟雾的流动细节,增强运动的真实感。(2)求解完成之后,本文利用光线投射算法对烟雾的密度场进行渲染,并采用一种快速、简便的方法进行光线与网格体的求交计算,生成了逼真的烟雾动画。(3)本文利用GPU强大的并行计算能力对求解过程和绘制算法进行了有效加速。在求解线性方程组时,针对GPU的存储模式设计了访问效率较高的Jacobi迭代法,大大提高了程序的运行效率。与传统的基于图形API加速烟雾模拟的方法相比,本文采用CUDA进行计算更能有效利用GPU的硬件资源。