论文部分内容阅读
动态场景中真实感软影的实时绘制一直是计算机图形学中的研究热点。其中,反投影软影绘制技术是实时软影绘制的重要方法之一,它能精确的模拟物理过程,产生高度真实的绘制效果。但是,这种方法的计算量巨大,妨碍了它的绘制速度,难以达到实时应用程序的要求。因此,反投影软影绘制的加速算法一直是近年来的重要研究内容。由于该算法存在大量的重复计算,本文旨在探索算法内部的相关性,合并所有的重复计算为预处理过程,并由此发展高效的软影绘制技术,以提高三维场景的绘制速度。本文在轮廓边界的提取,边界数据的存取,以及可见性的快速计算三个方面进行了深入研究,并发展了若干创新技术:提出了基于面光源的轮廓边界判定算法、创建了复杂边界的混合编码技术以及简单边界的直线编码技术,极大地提高了软影映射计算的速度,能交互地对复杂动态场景进行高度真实感的阴影绘制。
本文的主要贡献和创新点如下:
1.面光源轮廓边界提取算法。使用轮廓边界而不是轮廓区域可以把二维问题简化为一维问题,从而加速后续算法的执行。传统的轮廓边界算法只能在点光源的条件下在物体空间提取轮廓边界,且算法效率依赖于场景中三角形的个数。为了克服上述问题,本文首先在物体空间把点光源条件下轮廓边界的判断算法扩展到了面光源,在与原算法相同时间复杂度的条件下,解决了轮廓边界的完全提取问题,克服了点光源限制。接着在图像空间提出了基于离散采样点的边界提取算法,与物体空间方法不同,由于不需要依次处理所有的相邻三角形,算法的时间复杂度为常数,不依赖于场景复杂程度,从而从根本上解决了上述问题。两种新方法相比较,它们具有各自的优点和适用场合:基于物体空间的面光源的轮廓边界提取算法判断准确,完全,但处理时间依赖于场景的复杂程度;而基于图像空间的面光源的轮廓边界提取算法,在单采样的判定条件下也能获得正确的结果,但可能会遗漏被表层遮挡的轮廓边界。
2.轮廓边界的混合编码。传统的反投影算法使用区域编码存储所有的遮挡区域,在进行可见性计算时,需要动态提取这些区域的边界,影响了算法的性能。本文通过面光源轮廓边界算法,提出了一种预计算的方法来存储所有可能的边界数据,避免了重复计算,从而提高了原始算法的效率。其中主要通过轮廓边界的规范化算法、轮廓边界的压缩编码算法和高效的解码算法实现了上述思想,达到了加速原始算法的目的。轮廓边界的规范化算法能有效去除噪声平面,并且使得轮廓边界符合Freeman编码要求。基于轮廓特征的编解码算法可以高效的存取轮廓边界点,编解码速度很快,并且无失真,对高分辨率阴影贴图的信息压缩量相当可观,数据存储效率的提升明显。
3.简单轮廓边界编码。阴影贴图可以按照4×4、8×8、16×16等大小分为一系列的子块。如果子块区域内只含有一条连续的8联通边界,本文称之为简单块。特别的,如果这条连续曲线为直线,称之为直线块;如果子块区域内含有多条连续或非连续边界,则称之为复杂块。在对不同深度复杂性的场景进行深入研究后,我们统计出以下规律:(1)在合适的子块划分条件下,复杂边界所占的比例不高,一般为25%左右。(2)简单边界中大部分为直线边界,一般为95%以上。(3)在复杂场景中,简单边界的比例随阴影贴图分辨率的提高而提高。利用上述统计信息,我们提出了简单边界编码。该编码方式占用空间少,存储效率高。对于简单块只需要依次读取连续像素,无需复杂的地址编解码操作。对于直线块只需要读取头尾坐标,无需遍历每一个边界点,从而进一步提高了绘制效率。从统计规律上看,复杂情况出现的概率很小,因此算法的总体效率提升明显,对于常规场景可以达到原始算法的30倍。
最终的实验结果表明,与现有算法相比,本文算法在阴影真实感和实时性方面做出了重大改进,实时交互性和阴影真实感效果很好的满足了实际的需求。