论文摘要
雾化效果是三维仿真系统中不可缺少的一部分。它从自然现象中衍生而来,模拟真实系统中物体被雾遮挡的的视觉效果。自其诞生以来,雾化效果的生成一直被图形硬件厂商视为一项重大问题,并在OpenGL架构审查委员会的领导下形成了行业标准。至今,各种三维开发平台无不支持雾化效果。在各类开发文档中,雾化效果也占据相当的篇幅。我们对雾化效果的研究,可以为三维仿真中的雾化效果提供依据和指导,明确当前雾化技术的原理和优缺点,并在此基础上作出改进。当前的雾化效果主要有以下两个发展方向,一种是利用雾浓度变化的简单近似数学公式,对被雾遮挡的多边形顶点或像素进行颜色混合计算。生成三维图形时,OpenGL在操作流水线中对多边形顶点进行颜色计算,插值得到像素颜色,将其和雾颜色进行混合,形成物体表面被雾遮蔽的效果。OpenGL不仅提供了雾生成的基本功能,也提供了着色器编程接口。着色器处于OpenGL处理流水线中,取得运行时数据非常方便,便于我们根据运行状况进行绘制。此外人们还采用材质混合等多种方法来实现雾的混合效果。另一个方向是实时模拟,根据流体力学等公式,在其中适当加入涡流等随机因素以及外部作用的影响,进行去噪平滑等运算,建立雾的数学模型,经过大量的计算,最后采用粒子系统来展现该数学模型,模拟雾的生成。该方法生成的雾真实感非常强,但是计算量很大,超越了当前的CPU计算能力,导致实时性比较差。该问题可以通过GPU性能的不断提升,或者简化方程来解决。本论文中讨论的雾效果生成技术,主要是基于多边形顶点和像素的雾效果的生成。首先描述了近距离雾效果系统的实现,该系统结合了全局雾坐标和近距离距离雾的效果,主要通过着色器处理加以实现。其次,通过对一种基于多边形顶点的容积雾的生成算法的研究,改进了该算法,在此算法的基础上,引入了立方体容积雾的生成方法。然后采用着色器语言重写了该算法,以得到较快的运算速度。在着色器处理中,使用red,green,blue通道进行W深度的保存,简化了容积雾浓度运算。对于基于像素的容积雾生成,本论文讨论了多层异质容积雾间的混合问题,并指出了性能优化的方法。在目前的实际应用中,我们已经取得了较好的雾化效果,这对虚拟场景中雾的模拟的研究有着深远的意义。