论文部分内容阅读
用计算机去真实再现烟雾等自然现象一直是计算机图形学中最具有挑战性的研究方向之一。计算机图形学研究者们常采用基于粒子系统的方法和基于物理模型的方法这两种方法去实现其模拟。随着流体力学领域中研究流体的物理特性的算法日益成熟,并随着计算机能够完成的算法复杂度不断上升,用基于物理模型的方法模拟烟雾等自然现象已成为计算机图形学领域的一个研究热点。本文主要是用基于物理模型的方法实现烟雾的扩散模拟。用基于物理模型的方法模拟烟雾,大致分为三个步骤:一,确定烟雾的物理模型。二,求解烟雾的物理模型。三,烟雾的绘制。实时性和真实感一直是计算机图形学追求的两大目标。本文在给出烟雾的物理模型时,充分考虑了这两大目标。本文采用不可压缩无粘性形式的欧拉方程组作为模拟烟雾的基本物理模型,简化了数值模拟计算,让运算的实时性成为了可能。为了保证视觉的真实感,本文添加漩涡约束力来描述流体中的漩涡,将烟雾的重力、热浮力、漩涡约束力均作为外力的一部分。此外,烟雾的重力与密度有关,热浮力与温度有关,还考虑了密度、温度随速度场的对流变化。在求解烟雾模型方程时,本文主要采用有限差分法。本文采用非交错网格对模型方程的求解区域进行离散,同时由Helmholtz-Hodge分解化简烟雾的基本模型方程,并采用分步求解法求解经化简后的方程。为了保证求解方程时的无条件稳定,在求解对流项时,采用半拉格朗日方法;在求解扩散项和投影项时,采用隐式的求解方法,例如高斯—塞德尔迭代法、快速傅里叶变换。在绘制烟雾时,本文借助OpenGL渲染技术和OpenGL实用工具包(GLUT)。本文考虑到用体绘制法计算的复杂性和耗时性以及不影响模拟烟雾的真实感的前提下,采用了一种简单的方法,即把定义在网格单元中心的一定密度的烟雾绘制成一系列的四边形,每个顶点的位置由空间步长确定,顶点的颜色由相应点的密度值决定。在给定的时间步长数内,我们把所有存储有密度值的网格点上的烟雾都——绘制出来,连在一起便能看到烟雾的扩散效果。本文分别渲染了烟雾在四周封闭的空间中和在完全开放的空间中的扩散效果。