学习笔记:pbrt中的体散射采样

求解包含体散射的光线传输方程仍然采用蒙特卡罗积分技术进行,在具体求解前还需要做好采样等各项准备工作。其中采样工作在计算光线从一个点传输到另一个点的过程中开展。该过程包括起点处的光线辐照度经过衰减到底终点的结果和光线路径中各点处输入的光线辐照度经过衰减而到达终点的结果的和。其中后者为积分形式,且各点处输入的光线辐照度本身又是该点各方向的入射光辐照度加权积分结果,简单起见,该处未考虑自发光情况且外散射系数仅与位置有关,与方向无关。个人理解,仅积分部分需要采样,不过书中表示两部分都需要进行采样,其原因并不理解。书中的采样是针对光线的位置进行的。当光线位置超过起点到终点的范围后,对该过程和的前一部分进行采样,反之则对后一部分进行采样。两种情况下的采样概率和为1,且后者还可以将路径划分成若干小段后进行采样。

上面给出了针对该过程的总体采样思路,下面首先针对均匀介质的情况进行介绍。根据体散射模型的相关结论,均匀介质中的透射率函数是关于距离的e指数形式的函数,因而实现重要性采样时需要按e指数分布进行,通过0到1均匀分布的随机变量得到光线上位置的采样值,并得到其概率密度。由于对于不同的光谱的光线其衰减系数不同,而又不希望在介质中进行多点采样,因而每次采样等概率选择某一光谱的衰减系数,全部采样的平均值作为最终的输出。在输出前还需要判断是对和的第一部分的输出还是第二部分的输出。

接下来介绍更为复杂的非均匀介质的情况,书中给出的是网格形的非均匀介质。该情况下最直接的解决方法是对每个内部介质特性一致的子网格分别按均匀介质的方法进行采样,但对于子网格数非常多的时候,计算量过大,并不实用。第二种解决方法是直接参照均匀介质的方法进行采样,不过此时在一段光线中不只进行一次采样,而是将光线划分为若干长度相等的子段,然后在每个子段中进行采样。不过这种方法可能会引入难以消除的偏差。第三种方法,同时也是书中推荐的方法被称作变化量追踪。该方法适用于各光谱衰减率相同的介质。该方法预处理阶段需要计算网格中的最大衰减率,并且需要将光线变换的介质坐标系中,该坐标系的三个坐标轴的范围都是0到1。该方法进行采样时,从光线的最小位置处开始,不断增加一个量得到新的位置,当新位置的衰减系数满足一定条件是,该处采样结果为最终输出,如果超过最大位置后还未满足条件,则该次采样的衰减率输出1。该方法中不断增加的一个量等于按均匀介质采样得到的衰减率结果,且该均匀介质的衰减率为前面计算得到的最大衰减率。该方法中输出所需满足的条件为该处衰减率除以最大衰减率的结果与0到1的随机变量进行比较,前者大于后者时,满足条件。该方法对透射率的采样方式是类似的,只是在透射率特别小的时候添加了基于俄罗斯轮盘赌的方法结束采样。

在体散射模型中还使用了相位函数,因而也需要对相位函数进行采样。为了使相位函数可以实现一定的非均匀分布特性,因而书中选择了按Henyey-Greenstein模型进行采样,具体过程与书中前面的相关内容相一致,此处不再展开介绍。

你可能感兴趣的:(学习笔记:pbrt中的体散射采样)