Q134:PBRT-V3,次表面散射(Subsurface Scattering)(15.5章节)
〇、引入
前续:
Q132:PBRT-V3,BSSRDF(双向散射表面反射分布函数)(5.6.2章节、11.4章节)
Q133:PBRT-V3,BSSRDF的采样(15.4章节)
在Q132、Q133中,都有用到“BSSRDTable对象中的一个叫做“profile”的Sr表”。
根据||po-pi||的值从这个表里获得Sr的值。
那么,问题来了:这个Sr表存放的具体是什么呢?是在什么时候初始化的呢?
这个就是这一章节的内容。Sr表中存放的就是介质对应的次表面散射的数据。
在给定散射介质的相关属性的情况下,Sr可以精确(近似)地描述介质的次表面散射。
考虑两种情况:
情况一,光线在次表面中发生多次散射后离开表面;
情况二,光线在次表面中发生一次散射后离开表面;
对于这两种情况,计算次表面散射的方式是不同的。
情况一,光线在次表面中发生多次散射后离开表面时,光线的强度衰减大,光线的方向是随机的;
情况二,光线在次表面中发生一次散射后离开表面时,光线的强度衰减小,光线的方向不是随机的。
一、光线在次表面中发生多次散射
针对这种情况,Habel等人在2013年提出了“Photon Beam Diffusion”方式来进行计算。
大致思路如下:
1,对介质的各种属性进行简化和假设;
2,由光在介质中的传播方程推导出扩散方程;
3,在各种情况下,求解“扩散方程”;
4,在步骤3的基础上计算得到“经过次表面散射后离开表面时的光线和入射光线的关系”(即Sr)。
后续,是个人写的笔记,有点乱。
前面几张截图是阅读过程中记下的;
后面两张截图是后面总结的:从未知到已知反推的计算过程。(类似于解应用题:“要得到这个,需要先知道什么”,然后,反复这个过程,直到反推到已知条件)
接下来两张截图是:从未知到已知反推的计算过程。
相关代码截图:
二、光线在次表面中发生一次散射
推导过程,此处不再罗列。看一张体现基本思路的图。
对应代码截图:
三、填充BSSRDFTable(包含Sr数据)
这里主要需要注意的是:对r、rho的采样。
相关代码截图如下:
四、设置散射属性
It is remarkably unintuitive to set values of the absorption and scattering coefficients σa and σs to achieve a desired visual result.
相关代码截图:
五、其他说明
个人觉得,这一章节的数学推导有点复杂。好些式子的推导都不是很明白。
涉及的数学知识比较多:高阶微分方程求解、delta函数等等。
截至当前,只是理解了作者的大致思路。惭愧!继续努力!fighting!