We use cookies to improve your experience with our site.

一种用于间接光照缓存的体矢量表示方法

Volumetric Vector-Based Representation for Indirect Illumination Caching

  • 摘要: 1. 主要创新点
      三维场景的精确间接光照估计的计算代价比同样场景少量光源时直接光照估计的计算代价要高出几个量级。一种自然而然的解决方案是:在预处理阶段,只在场景中的少数几个有限点进行复杂的计算,并把计算结果组织成缓存结构,然后在最终渲染时对存储的结果做差值。
      目前最先进的方法是对低频的光照场景做视点无关的缓存而对高频的光照场景做视点相关的计算。光子映射是一种非常常见的方法。在光子密度估计的基础上,光子通常被存储为KD 树的结构,并且不同的光照场景采用不同的映射方法。最后的光子采集阶段会对从摄像机发出的交点在KD 树种做局部搜索,以搜集相邻的光子并且估计局部的光子密度。
      理想的缓存策略应该有两个特点。第一个特点是光亮度上的鲁棒性,即缓存值更够捕获辐射量的局部变化,比如表面的反射。第二个特点是几何上的鲁棒性,即缓存值也必须能够捕获几何量的局部变化,比如表面的位置和法向。小尺度的几何细节,特别是表面法向的高频率变化,需要高密度的采样缓存结构,才能捕获相应的细微光照变化。如今,一个中等规模的场景都会有成千上百的多边形。因此,几何上的鲁棒性已经成为了设计缓存结构时需主要关注的问题。
      为了解决上述问题,本文提出了一种基于辐射度向量的体矢量缓存结构。这种被称之为辐射度向量格的缓存结构,只是用于低频的间接光照,因为我们假定直接光照和高频的间接光照可以用其它特殊的技术来处理(比如软阴影映射、镜面光映射、视点相关的光线投射方法等)。辐射度向量格的缓存结构具有以下特点:
    1. 对漫反射局部变化的鲁棒性
    2. 对表面发向局部变化的鲁棒性
    3. 在三维场景中处处光滑
    4. 较低的内存消耗
      其中第1 和第2 点提高了缓存结构的效率,因为漫反射和表面发向变化是低频场景中最重要的因素。第3 点保证了从缓存结构重构出的间接光照场景的光滑性。第4 点则提高了该方法的可扩展性。
    2. 实现方法
      考虑到矢量值量的质量,我们提出了一种基于辐射度向量格的体数据结构,和相类似的方法相比,它提供了更好的几何鲁棒性和光度鲁棒性。为了能够光滑地重构间接光照场景,我们提出了一种不依赖于表面几何的连续差值方法。此外,我们的表示方法需要的内存消耗较低。
      我们的缓存结构是基于一种轴对齐的均匀大小的矩形状三维格点。每个格点存储6 个辐射度向量,对应于各个参考法向的主方向(±x | ±y | ±z)。任何一种全局光照算法都可以用来估计存储在格点上的辐射度向量。在我们的实现方法中,使用光子跟踪来把光子从光源传播到格点上。在遍历格点的过程中,光子能量会在每个辐射度向量上进行累积。在渲染时,我们从视点开始跟踪发出的射线。对于每个交点,我们搜集相邻的辐射度向量,然后用交点的法向来差值方向,用交点的位置来差值空间位置。和以前对数级的访问时间相比,该方法访问缓存结构的时间是常数级的。我们把提出的方法和目前最先进的方法进行了比较,以显示该方法的如下几方面的优越性:几何鲁棒性、低内存消耗、快速。为此,我们在包含从5 到大于2 亿个三角面片的场景上测试了我们的算法。
    3. 结论
      本文提出了一种新的基于辐射向量的间接光照表示方法。该表示方法可以处处光滑地重构辐射度。实验结果表明,这种基于辐射向量的方法具有更好的几何鲁棒性。
      我们实现的三维结构是一种针对粒子映射的间接光照的缓存结构。实验表明相互漫反射可以被很好地捕获。和现有的方法相比,我们的方法只需要较少的采样就可以达到高质量的间接光照缓存效果。另外,该方法不需要存储任何光子。此外,在最后的搜集过程中,我们的辐射度缓存可以被直接访问。
    4. 学术价值
      本文的主要贡献有以下3 点。首先,我们提出了一种称之为辐射度向量格的三维结构,用以表示间接光照。其次,我们提出了一种高效地估计格点值的算法。最后,我们把它用于一种具有常数级访问时间的缓存结构来计算带有全局光照的高质量图像。由于这种结构带来的优点,我们无需复杂和高内存消耗的方法,就可以得到复杂场景的计算结果。

     

    Abstract: This paper introduces a caching technique based on a volumetric representation that captures low-frequency indirect illumination. This structure is intended for efficient storage and manipulation of illumination. It is based on a 3D grid that stores a fixed set of irradiance vectors. During preprocessing, this representation can be built using almost any existing global illumination software. During rendering, the indirect illumination within a voxel is interpolated from its associated irradiance vectors, and is used as additional local light sources. Compared with other techniques, the 3D vector-based representation of our technique offers increased robustness against local geometric variations of a scene. We thus demonstrate that it may be employed as an efficient and high-quality caching data structure for bidirectional rendering techniques such as particle tracing or photon mapping.

     

/

返回文章
返回