论文部分内容阅读
在三维虚拟场景的绘制中,阴影可增强场景的真实感,因此,阴影的绘制一直是计算机图形学研究的主要内容之一。另一方面,多边形网格是表示三维物体表面的主要形式之一,在计算机游戏和动画等领域有着非常广泛的应用。由于网格模型是光滑曲面的近似,直接绘制其阴影会使阴影的边界不光滑,造成阴影边界的走样,而人眼对阴影边界的走样又非常敏感,因此,研究如何绘制网格模型,使其具有光滑的阴影边界,是本文讨论的主要问题之一。另外,为追求实时的阴影渲染效果,提高渲染效率,如何在GPU上高效实现阴影生成算法是本文研究的另一重要问题。由于软阴影边界的不光滑对人眼不是非常敏感,这里只讨论物体硬阴影的光滑边界的生成。目前,阴影效果的生成算法主要有两种。一种是阴影体算法,这一方法开始是Crow等人在1977年提出的,也是目前计算机动画和游戏中最常用的阴影绘制算法之一。另一种是阴影映射算法,该算法最先由Williams在1978年提出,它需要两次渲染每个阴影投射光源来检测像素是否在阴影中,是一种基于图像空间的方法。这类方法是在图像空间计算物体的阴影边界,计算过程简单,但精度受缓存分辨率限制,在实时绘制应用中,该方法精确度较阴影体低。现今的阴影生成技术,大都基于以上两种算法思想,目的是消除阴影绘制时的走样现象。基于阴影体算法的技术精度非常高,产生的阴影非常精确,但耗费的计算资源较高。基于阴影映射算法的阴影生成技术主要是通过修改阴影映射结构来解决走样问题,对阴影映射的本质思想并没有做出变动。由于本文以简单网格模型为输入,为保证场景的真实感效果,对输入模型进行平滑处理是要解决的问题之一。为减少空间占有量,如何利用局部的网格细分技术计算平滑阴影效果是要解决的另一问题。另外,为保证阴影效果的实时绘制,如何讲平滑阴影生成算法移植到GPU中,以提高渲染效率是要解决的又一关键问题。针对以上的三个关键问题,本文提出了相应的解决方案,主要贡献有:(1)将文献[1]中轮廓曲线平滑过程融合到GPU的图形管线中,利用GPU架构中Geometry Shader的特点实时绘制平滑轮廓线,大大提高渲染效率。(2)提出一种实时的平滑阴影轮廓线的算法,利用阴影体算法思想实现简化网格模型的平滑阴影效果。(3)利用GPU加速阴影生成算法,大大提高了渲染效率。算法利用了GPU中的几何着色器(Geometrv Shader),有效地避免了因CPU和GPU之间大量的数据交换导致的渲染效率过低问题。虽然本文算法在空间占有量和运行效率上具有一定优势,但仍存在一些不足之处。首先,对于点光源,当光源距物体较近,距投射平面较远,视点距离投射平面较近时,会出现阴影不平滑的现象。针对这一问题,可以采用多分辨率的网格细分算法实现阴影的平滑。其次,当光线投射到粗糙曲面上时,也会出现阴影走样现象,对此可以采取局部细分网格模型的方法达到平滑阴影的效果。最后,在多光源情况下,算法生成的三角形数量会急剧增加,空间占有量较大,这也是算法的不足之处,是未来工作中主要要解决的问题乙一。