前面两篇笔记介绍了光线传输方程,并把它写成了路径跟踪的形式,即把光线传输方程中的自变量全部写成从一个位置点到另一个位置点的路径形式。本篇笔记将按路径跟踪的思想对求解过程进行介绍。
求解路径跟踪形式的光线传输方程的有两个难点。第一个难点:对于一个成像点,产生它的辐亮度可以是光源经过零次反射后对该点的作用效果,经过一次反射后对该点的作用效果等等直至经过无穷次反射后对该点的作用效果,应该如何用有限次计算来实现这种无穷次反射的效果。第二个难点:对某一个确定次数反射对该点的作用效果,如何确定这样的一条或多条光线传输路径,进而进行多维积分计算。
在光线传输过程中,存在这样一个规律,即光线传输的路径越长,反射的次数越多,则该光线所携带的能量越少,即该光线的辐亮度越小。因而虽然理论上要考虑无穷次反射后的作用效果,但产生主要效果的还是来自于经过少量反射的光线。当然,在数学推导阶段希望得到的是严格相等的结果而非近似相等的结果。首先使用俄罗斯轮盘赌方法,比如对经过零次、一次和两次反射后对该点的作用效果进行严格计算,对于更多次反射后对该点的作用效果,按概率q直接置零,按概率1-q进行正常计算,且计算结果赋予1/(1-q)的权重。当然,还可以对不同次反射后对该点的作用效果去不同的概率直接置零。这两种方法虽然都采用了俄罗斯轮盘赌的方法,是一种无偏差估算结果,但还是需要计算无穷次反射的情况。虽然书中此处为提有偏差估算的概念,但个人感觉解决第一个难点只能是对计算深度进行一定的截取。
对某一个确定次数反射对该点的作用效果的计算中确定光线传输路径可以被称作路径采样,即确定光线的起点以及剩余点的数目后,按某种采样算法确定中间的这些点。场景中存在的表面不只一块,路径采样首先以各表面的面积为权重,随机选择在哪个表面进行点的采样。在确定采样表面后,再在这个表面上进行随机采样,此时的采样概率密度为该表面面积的倒数。综合考虑上述两个过程,场景中任何点的采样概率密度实际上都相等,且都等于全部表面的表面积和的倒数。在上述确定点数的光线传输路径的最后一个点应该是光源上的点。如果直接按中间点的方式进行采样,虽然期望的结果也是正确的,但大多数情况得到的都是0值,导致计算结果方差大,收敛速度慢。所以,关于路径中最后一个点的采样,应该只在光源的所有表面中进行采样。如果某些光源对产生最终效果更为重要,也可以对这些光源赋予更大一些的采样权重。除采样不到光源导致0值的情况外,采样生成的路径中的相邻点还可能因为阻挡而产生0值,此时也会增加计算结果的方差。当被积函数存在delta形式的光源或BSDF时,路径采样得的结果几乎全部为0,从而无法得到正确的计算结果。另外,当BSDF在表面比较集中,即表面光泽比较大的情况下,以及光源面积很小的情况下,路径采样得到的计算结果方差也是很大的。所以一般实际中并不适用路径采样的方法。