PBR论文简读:Better BSSRDF Models(1)

PBR论文简读:Better BSSRDF Models(1)

导语

在上一篇简读论文:PBR论文简读:A Practical Model for Subsurface Light Transport(后文将以Basic BSSRDF模型来指代本文提出的模型)提出BSSRDF模型后,人们陆陆续续发现了模型中的很多不足与需要改进的地方,因此接下来几篇blog将会简读几篇关于Basic BSSRDF模型的改进方法相关的论文。

Light Diffusion in Multi-Layered Translucent Materials, Donner'05

这篇论文主要指出了Basic BSSRDF中没有考虑到薄介质多层粗糙接触面的非理想情形下的问题,提出了多层(Multi-Layered)的BSSRDF模型。

薄介质散射

Basic BSSRDF中假设散射介质是半无限大的,但是对于介质厚度小到一定程度的时候(如,薄纸、树叶),显然这个假设是不成立的,同时光的出射部分能量就被忽视了,于是本文提出将光线能量划分为上表面的反射Reflectance \(R(r)\)和下表面的出射Transmittance \(T(r)\)两个部分,同时,偶极子需要应该满足分别在上下两个表面的的irradiance都为0:

\[\int_{\Omega+} L_{d}(r, \vec{\omega})(-\vec{n} \cdot \vec{\omega}) d \vec{\omega}=F_{d r} \int_{\Omega-} L_{d}(r, \vec{\omega})(\vec{n} \cdot \vec{\omega}) d \vec{\omega} \quad \text { at } z=0 \tag{1}\]

\[\int_{\Omega-} L_{d}(r, \vec{\omega})(\vec{n} \cdot \vec{\omega}) d \vec{\omega}=F_{d r} \int_{\Omega+} L_{d}(r, \vec{\omega})(-\vec{n} \cdot \vec{\omega}) d \vec{\omega} \quad \text { at } z=d\]

其中第一个式子是Basic BSSRDF中满足的边界条件,第二个式子是本文提出下半边界应该满足的条件。同样的可以根据第二个式子推出:

\[\phi(r)+2 A D \frac{\partial \phi(r)}{\partial z}=0 \quad \text { at } z=d\]

但是有一个问题:偶极子模型使用的两个极子只能使得一侧的irradiance和为零,如果在另一侧加上一个负偶极子来保持下半侧的平衡,那么上半侧的平衡又会被破坏,因此只有在有无限个对称偶极子的情况下,irradiance和为0的条件才可能成立(如上图2)。以上半表面为0点,向下为正方向建立z轴,每一对偶极子交替关于\(z = z_b\)\(z = z_b+d\)对称,可以得出每个正极子和负极子的z坐标表达式:

\[\begin{aligned} &z_{r, i}=2 i\left(d+2 z_{b}\right)+\ell \\ &z_{v, i}=2 i\left(d+2 z_{b}\right)-\ell-2 z_{b}, i=-n, \ldots, n, \end{aligned}\]

2n+1个极子对于Reflectance和Transmittance的贡献就是直接对其各自贡献的求和,其中Transmittance如下:

\[\begin{array}{r} T(r)=\sum_{i=-n}^{n} \frac{\alpha^{\prime}\left(d-z_{r, i}\right)\left(1+\sigma_{t r} d_{r, i}\right) e^{-\sigma_{t r} d_{r, i}}}{4 \pi d_{r, i}^{3}}- \\ \frac{\alpha^{\prime}\left(d-z_{v, i}\right)\left(1+\sigma_{t r} d_{v, i}\right) e^{-\sigma_{t r} d_{v, i}}}{4 \pi d_{v, i}^{3}} . \end{array}\]

同样的,上面的情况只讨论了薄板两边出射介质IOR相同的情况,实际情况下,两种介质的IOR往往是不同的(人类皮肤的表皮层的上侧为油脂,而下侧为真皮),这种情况下,体现在公式中不同的地方就在于菲涅尔反射项\(A = \frac{1 + F_{dr}}{1 - F_{dr}}\),同时也会导致极子坐标中的\(z_b\)项出现变化,解决方法也很简单,使用正确的上下表面\(A\)代入计算即可。

\[\begin{aligned} &\phi(r)-2 A(0) D \frac{\partial \phi(r)}{\partial z}=0, \quad \text { at } z=0 \\ &\phi(r)+2 A(d) D \frac{\partial \phi(r)}{\partial z}=0, \quad \text { at } z=d \end{aligned}\]

\[\begin{aligned} z_{r, i} &=2 i\left(d+z_{b}(0)+z_{b}(d)\right)+\ell \\ z_{v, i} &=2 i\left(d+z_{b}(0)+z_{b}(d)\right)-\ell-2 z_{b}(0) \end{aligned}\]

多层材料的光扩散

接下来就可以通过上面的结论推导出多层材料的扩散效应了:将每层材料都看作一个薄板,以上一个薄板的出射作为下一层的入射来进行计算。论文里提出的具体方法是对入射通量\(\Phi\)和Transmittance分布\(T\)在表面上做卷积:

\[M(r)=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} \Phi\left(x^{\prime}, y^{\prime}, \vec{\omega}\right) T\left(r^{\prime \prime}\right) d x^{\prime} d y^{\prime}=\Phi(x, y, \vec{\omega}) * T(r)\]

对于两层的材料,论文假设光在两种材料中的所有行为都是由于多重散射产生的,而这个假设在每个层都满足扩散理论的情况下都相当准确,于是对每一层的\(M\)计算就简化成了计算所有层的\(T\),同样的,计算总体的Transmittance分布的方法依然是对两种材料的\(T\)做卷积:

\[T_{12}(r)=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} T_{1}\left(r^{\prime}\right) T_{2}\left(r^{\prime \prime}\right) d x^{\prime} d y^{\prime}=T_{1}(r) * T_{2}(r)\]

但是这个公式代表着假设第一层传输到第二层材料的光只在第二层材料中传输,但是实际情况下光线于可能会在两种材料中来回弹射、散射,为了补偿这些行为,论文提出了如下的公式:

\[T_{12}=T_{1} * T_{2}+T_{1} * R_{2} * R_{1} * T_{2}+T_{1} * R_{2} * R_{1} * R_{2} * R_{1} * T_{2}+\ldots\]

但是如果直接用卷积硬算的话负担会很大,因此可以巧妙地利用傅立叶变换,将函数的卷积变成频域函数的乘积:

\[\begin{aligned} \mathcal{T}_{12} &=\mathcal{T}_{1} \mathcal{T}_{2}+\mathcal{T}_{1} \mathcal{R}_{2} \mathcal{R}_{1} \mathcal{T}_{2}+\mathcal{T}_{1} \mathcal{R}_{2} \mathcal{R}_{1} \mathcal{R}_{2} \mathcal{R}_{1} \mathcal{T}_{2}+\ldots \\ &=\mathcal{T}_{1} \mathcal{T}_{2}\left(1+\mathcal{R}_{2} \mathcal{R}_{1}+\left(\mathcal{R}_{2} \mathcal{R}_{1}\right)^{2}+\left(\mathcal{R}_{2} \mathcal{R}_{1}\right)^{3}+\ldots\right) \end{aligned} \tag{2}\]

然后发现下面的式子其实是一个几何数列(等比数列),写出求和式,简化后有

\[\mathcal{J}_{12}=\frac{\mathcal{T}_{1} \mathcal{J}_{2}}{1-\mathcal{R}_{2} \mathcal{R}_{1}}\]

\[\mathcal{R}_{12}=\mathcal{R}_{1}+\frac{\mathcal{T}_{1} \mathcal{R}_{2} \mathcal{T}_{1}}{1-\mathcal{R}_{2} \mathcal{R}_{1}}\]

这是双层的情况,多层的呢?很简单,只需要递归地把两层合并为一层的结果带入新的求解式即可!这样我们就可以求解任意层数的Transmittance和Reflectance系数了。

粗糙表面

前文提到过,Basic BSSRDF要求表面是平滑的,那非理想情况下的粗糙表面呢。观察原式(1),我们需要做的是在计算表面irradiance为0的时候,不仅仅考虑由于菲涅尔系数导致的影响,而是应该将其视为一个完整的BRDF反射,比如论文中就引入了Cook-Torrance BRDF:\(f_{r}\left(x, \vec{\omega}_{o}, \vec{\omega}_{i}\right)=\frac{D\left(x, \vec{\omega}_{o}, \vec{\omega}_{i}\right) G\left(x, \vec{\omega}_{o}, \vec{\omega}_{i}\right) F\left(x, \vec{\omega}_{i}, \vec{\omega}_{o}\right)}{4\left(\vec{\omega}_{i} \cdot \vec{n}\right)\left(\vec{\omega}_{o} \cdot \vec{n}\right)}\),然后计算新的\(\rho_d\)替换\(F_{dr}\)(这里就无法使用解析式来近似了,论文里使用了预计算蒙特卡洛采样来得到数值解),同样的,\(A\)项也需要因此重新计算:\(A=\frac{1+\rho_{d}}{1-\rho_{d}}\),最后把漫射传播方程中的菲涅尔传输系数更改为BRDF传输系数(论文假定了光线仅进行传输和反射两种行为,并且使用了一个参数为\(\omega_o\)的预计算表来插值计算\(\rho_{dt}\)):

\[\rho_{d t}\left(x, \vec{\omega}_{o}\right)=1.0-\int_{2 \pi} f_{r}\left(x, \vec{\omega}_{o}, \vec{\omega}_{i}\right)\left(\vec{\omega}_{i} \cdot \vec{n}\right) d \vec{\omega}_{i}\]

论文还提出了虽然对于简单几何,直接使用Reflectance的分布就可以搞定,但是对于复杂并且很薄的几何,应该使用\(R\)\(T\)复合的分布计算(即对于着色点和光线入射点的法线进行点乘,如果两者同向说明反射的占比居多,两者偏离越多说明透射占比越多):

\[P_{d}(r)=\frac{1}{2}\left(\vec{n}_{s} \cdot \vec{n}_{l}+1\right) R_{d}(r)+\frac{1}{2}\left(1-\vec{n}_{s} \cdot \vec{n}_{l}\right) T_{d}(r)\]

最后论文还描述了关于多层texture的做法,对于一张根据观测所得的贴图:

  • 使用反射分布对纹理进行卷积(根据光在材质中的漫射对纹理进行模糊)
  • 将纹理归一化(注:这里的归一化是指用这个像素的颜色去除以贴图所有像素的平均值),排除表面自带的BSSRDF影响
  • 最后,在渲染的时候通过归一化的纹理值来放缩辐射发射率

A Quantized-Diffusion Model for Rendering Translucent Materials, d'Eon'11

前言

这篇文章的方法和物理相关性有点高,而且内容对于我一个cs学生来说有点抽象……花了很长时间才看完,如果总结的有什么不对的地方,希望读者不吝赐教。

这篇论文指出了Basic BSSRDF模型在经典散射理论(Classic Diffusion Theory)下对于高吸收率材料近照明点模拟不足的缺陷,以及多偶极子理论在超薄材料层高频照明情况下缺陷。提出了全新的量化漫射理论,同时为高斯和BSSRDF提供了可变精度的构造方法。

问题与改进方法

根据传统的方法,我们会使用球面谐波函数来对传播方程进行截断展开(前几篇论文中一般选择将其阶段至N=1,一开始我并不理解这个展开,通过和研究生学长的讨论大概明白了,由于辐射传播方程需要通过球面所有方向到该位置的积分来得到irradiance的值,通过低阶的SH展开,去掉高频信息保留低频信息,看作辐射在体积内各向同性传递),然后选择各向同性的张量通量来产生经典漫射系数(个人不太懂这段叙述),这两步看起来确实有点过于“随意”了,因此许多重要的改进方法都是基于这两个步骤提出的。

对于经典漫射结果在高吸收率和近距离光源不准的情况下,论文引用了一个更好的Grosjean近似,这是一个fluence的近似解析解:

\[ \phi(r)=\frac{\mathrm{e}^{-\mu_{t}^{\prime} r}}{4 \pi r^{2}}+\frac{1}{4 \pi} \frac{3 \mu_{s}^{\prime} \mu_{t}^{\prime}}{2 \mu_{a}+\mu_{s}^{\prime}} \frac{\mathrm{e}^{-\sqrt{\frac{\mu_{a}}{D} r}}}{r} \tag{1} \] 其中 \[ D=\frac{2 \mu_{a}+\mu_{s}^{\prime}}{3\left(\mu_{a}+\mu_{s}^{\prime}\right)^{2}} \]

满足新的散射方程:

\[-D \nabla^{2} \phi(\vec{x})+\mu_{a} \phi(\vec{x})=\alpha^{\prime} Q(\vec{x})\]

同时这个近似还更好地分开了single scattering和multiple scattering,降低了经典漫射模型中的误差。相较于真正的解 \(\phi(r)=\frac{\mathrm{e}^{-\mu_{t} r}}{4 \pi r^{2}}+\frac{\mu_{s}}{2 \pi^{2} r} \int_{0}^{\infty} \frac{\arctan ^{2} u}{u-\alpha \arctan u} \sin \left(r \mu_{t} u\right) d u\),Grosjean近似有相近的形式和相同的零阶矩,满足:

\[\int_{0}^{\infty} 4 \pi r^{2} \phi(r) d r=\frac{1}{\mu_{a}}\]

边界条件

之前提到过的\(z_b = 2AD\),使用新的\(A(\eta)=\frac{1+3 C_{2}}{1-2 C_{1}}\),其中

\[C_{i}=\int_{0}^{\pi / 2} F_{r}(\eta, \theta) \cos ^{i}(\theta) \sin (\theta) d \theta\]

然后论文给出了\(C_1\)\(C_2\)诡异的多项式近似,这里就不贴出来了。

前两篇论文提出使用偶极子/多极子的方法来求解边界条件,但是对于过于薄的材料,这两种方法都会受到限制:第一个正极子会被放置在薄板的下方:

同时,由于可能的表面细节或者阴影造成的高频光线会因为偶极子的方法被强制地各向同性散射,这样会导致返回表面的散射光被过度模糊化、失去高频信息。

拓展源 漫射模型

论文中引用了探照灯问题的一个解法:拓展源函数,即在深度为\(z>0\)的所有位置放置一个强度为\(Q(z)\)的各向同性点光源:

\[Q(z)=\alpha^{\prime} \mu_{t}^{\prime} \mathrm{e}^{-\mu_{t}^{\prime} z}\]

对于一个给予的格林函数\(\Phi(r)\),需要对如下的积分求解:

\[\int_{0}^{\infty} \Phi\left(\sqrt{r^{2}+z^{2}}\right) Q(z) d z=\int_{0}^{\infty} \Phi\left(\sqrt{r^{2}+z^{2}}\right) \alpha^{\prime} \mu_{t}^{\prime} \mathrm{e}^{-\mu_{t}^{\prime} z} d z\]

论文接下来就提出了一个十分巧妙的假设:把格林函数当作一个三维归一化的高斯函数,这样就可以把积分转化为二维高斯函数:

\[\int_{0}^{\infty} G_{3 \mathrm{D}}\left(v, \sqrt{r^{2}+z^{2}}\right) Q(z) d z=\frac{1}{2} \mu_{s}^{\prime} f\left(\mu_{t}^{\prime 2} v / 2\right) G_{2 \mathrm{D}}(v, r)\]

其中\(f(x)=\mathrm{e}^{x} \operatorname{erfc}(\sqrt{x})\),这样一来得到了解析解,就可以避免昂贵的数值积分。

量化漫射

根据爱因斯坦提出的理论,离开点光源的粒子或者光子呈现高斯分布,其平均位移和\(\sqrt{tD}\)成正比。稳态格林函数的解也就是过去时间内发射的所有贡献:

\[\frac{1}{4 \pi D} \frac{\mathrm{e}^{-r \sqrt{\frac{\mu_{a}}{D}}}}{r}=\int_{0}^{\infty} \frac{c}{(4 \pi D c t)^{3 / 2}} \mathrm{e}^{-\mu_{a} c t} \mathrm{e}^{-r^{2} /(4 D c t)} d t\\ = \int_{0}^{\infty} \mathrm{e}^{-\tau \mu_{a}} G_{3 \mathrm{D}}(2 D \tau, r) d \tau \]

这也意味着在某个时间\(\tau\),发射的光子的分布是呈现以\(2D\tau\)的三维高斯分布的。接下来,我们将时间间隔量化,分割为\(k+1\)个时间片\(\tau_i\),接下来使用一个带权重的三位高斯分布来近似光子在对应时间片\([\tau_i, \tau_{i+1}]\)的分布吗,这样就可以把上面的积分转化为求和(有点高斯-勒让德积分的味道):

\[\phi(r)=\int_{0}^{\infty} \mathrm{e}^{-\tau \mu_{a}} G_{3 \mathrm{D}}(2 D \tau, r) d \tau \approx \sum_{i=0}^{k-1} w_{i} G_{3 \mathrm{D}}\left(v_{i}, r\right)\]

简单的,权重就是我们去掉的指数项在时间片的积分,可以很轻易地使用解析方法求得。通过上述方法求出的展开式和正确的漫射解有着相同的零阶矩。时间片的选择论文直接给出了一个常数\(\tau_i = s^{i - 1}\tau_1, s\in [1.5, 2.0]\),结果还是令人十分满意的,论文中给出的例子随着\(r\)的变化,误差仅有0.002%(具体数据请参见论文)。

拓展多极子模型

接下来将多极子模型和量化漫射模型结合起来,前文提到的公式(1)中的弹道项(不知道这么翻译对不对,原文是ballistic term)产生了单散射光被单独考虑;其余项则使用量化漫射的有限高斯展开处理。对于有限层数的偏移为\(m\)的高斯源,在\(z_1\)\(z_2\)的积分使用如下展开方法:

\[\begin{array}{c} \int_{z_{1}}^{z_{2}} Q(z) G_{3 \mathrm{D}}\left(v, \sqrt{r^{2}+(z+m)^{2}}\right) d z=G_{2 \mathrm{D}}(v, r) w_{\phi}\left(v, z_{1}, z_{2}, m\right), \\ w_{\phi}\left(v, z_{1}, z_{2}, m\right)=\int_{z_{1}}^{z_{2}} \frac{\mathrm{e}^{-\frac{(-z+m)^{2}}{2 v}}}{\sqrt{2 \pi v}} \alpha^{\prime} \mu_{t} \mathrm{e}^{-\mu_{t} z} d z= \\ \frac{\alpha^{\prime} \mu_{t}}{2} \mathrm{e}^{m \mu_{t}+\frac{\mu_{t} v}{2}}\left(\operatorname{erf}\left[\frac{m+\mu_{t} v+z_{2}}{\sqrt{2 v}}\right]-\operatorname{erf}\left[\frac{m+\mu_{t} v+z_{1}}{\sqrt{2 v}}\right]\right) . \end{array}\]

Updated 2022/7/22:在实现的时候,发现这个模型在\(r\)极大时根本没有办法拟合MC的结果,经过长时间的排查问题出现在:\(w_\phi\)的公式在\(v\)过大的时候是极其不稳定的,找遍全网终于找到了可能是d'Eon在实现的时候使用的\(v\)较大时的稳定函数:

$ 𝑤_=(′ _𝑡 𝑣 𝑒{𝑐_1−𝑐_22/2𝑣} (3𝑣2−𝑣𝑐_22+𝑐_2^4 ))/( 𝑐_2^5 )$,其中 \(𝑐_1=\mu_𝑡 (𝑚+(\mu_𝑡 𝑣)/2),𝑐_2=𝑚+\mu_𝑡 𝑣\)

,这里我在实现的时候就选择在指数\(c_1 > 20\)时切换到这个公式,很好地解决了函数地拟合问题。

表面通量是一个高斯分布,其权重\(w_{\vec{E}}\)计算如下吐槽一下这篇文章里公式真的好多

\[\begin{aligned} w_{\vec{E}}\left(v, z_{1}, z_{2}, m\right) &=D \mu_{t}\left[-w_{\phi}\left(v, z_{1}, z_{2}, m\right)\right.\\ &\left.+\frac{\alpha^{\prime}\left(\mathrm{e}^{-\frac{m^{2}}{2 v}-\frac{\left(m+\mu_{v} v\right) z_{1}}{v}-\frac{z_{1}^{2}}{2 v}}-\mathrm{e}^{\left.-\frac{m^{2}}{2 v}-\frac{\left(m+\mu_{t} v\right) z_{2}}{v}-\frac{z_{2}^{2}}{2 v}\right)}\right]}{\sqrt{2 \pi v}}\right] \end{aligned}\]

对于多极子的每一对编号为\(j\)的源,偶极子反射率fluence权重和flux权重计算如下:

\[\begin{array}{l} w_{\phi R}(v, j)=w_{\phi}\left(v, 0, d, m_{r, j}\right)-w_{\phi}\left(v, 0, d,-m_{v, j}\right) \\ w_{\vec{E} R}(v, j)=w_{\vec{E}}\left(v, 0, d, m_{r, j}\right)+w_{\vec{E}}\left(v, 0, d,-m_{v, j}\right) \end{array}\]

将每一对偶极子反射率和进行带权求和总反射率权重,这里引用了论文在开始的时候提到的KP出射计算法(即使用拓展源计算所有出射的能量,结果是fluence和flux在表面上的线性组合:\(R(r)=C_{\phi} \phi(r, z=0)+C_{\vec{E}}(-D \nabla \phi(r, z=0) \cdot(0,0,-1))\),$C_{}=(1-2 C_{1}) \(,\) C_{}=(1-3 C_{2})$)对表面上的两项进行加权求和:

\[w_{R}(i)=\sum_{j=-n}^{n}\left[C_{\phi}\left(\eta_{\text {top }}\right) w_{\phi R}\left(v_{i}, j\right)+C_{\vec{E}}\left(\eta_{\text {top }}\right) w_{\vec{E} R}\left(v_{i}, j\right)\right]\]

然后我们再用格林函数展开对所有的高斯函数进行加权求和:

\[R^{+}(r)=\alpha^{\prime} \sum_{i=0}^{k-1} w_{R}(i) w_{i} G_{2 \mathrm{D}}\left(v_{i}, r\right)\]

即可得到拓展多极子模型下的向下反射率分布,同样的方法,把位置挪到\(d\),就可以得到向下传输分布\(T^+(r)\)

多层材料

回顾一下,在Donner'05那篇论文里,对于多层材料采用了傅立叶变换+递归回代\(\mathcal{T}\)\(\mathcal{R}\)的方法,而d'Eon'11这篇论文在附录中提出了对分布的高斯函数进行快速卷积的函数

去掉了快速傅立叶变换并且保证了能量守恒。

使用QD BSSRDF进行渲染

对于BSSRDF的S项,论文多提出了一个减弱强度的传输项\(S^{(0)}\),使用与深度\(d\)相关的\(e^{-d\mu_t}\)来计算,然后单次散射项直接使用Jensen'01的方法计算,多散射项则使用本文提到的量化漫射计算。

A Better Dipole, d'Eon'12

这篇论文主要讲述在偶极子模型(Jensen'01)下通过改进参数(大部分来自d'Eon'11提出的量化模型)来实现复杂度几乎不改变的情况下提升模型的准确率的方法(前排提示,这篇论文的内容很简单易懂,除去各种diagram只有3页内容)。

Previous Work

首先可以回顾一下以往提出的几种模型其各自的优缺点:

  • Jensen'01:提出了基本的BSSRDF概念以及一个实际可用的模型以及用偶极子计算Diffusion Approximation,缺点就不说了,假设了不少理想状况
  • Donner'05:提出了多极子模型来补偿有限深度介质的\(T\)透射率,考虑了透射传输以支持多层材料的情况,同时将计算\(R\)项时使用的菲涅尔项替换成BRDF以支持粗糙面;缺点是对于超薄板、高频光(overblur&high-frequence loss)、高吸收率、近源(\(r\)很小的时候)准确率不足(d'Eon'11)
  • d'Eon'11:提出了全新的量化漫射模型,通过新的拓展源函数来计算fluence,同样使用于多极子模型,利用时域上光子呈高斯分布的原理,使用时域上的积分确保了多极子模型在任何情况下的物理正确性,并且正确地解耦合了diffusion和single scattering;缺点是一方面和前几种理论基于不同的原理,理解和重构起来较为麻烦,另一方面尽管相较于前几种Model已经有了很大的改进,但是对于各向异性材料的支持仍然不是很好,同时论文最后也提到对于多层材料的情况,受限于Donner'05的模型,将每次进入下一层的illumination都看作是一个漫射面光源,没有做论文中提到的single scattering的支持。

在这个改进的双极子模型中,同样沿用了量化漫射模型,但是去掉了拓展源项\(Q(z) = \alpha'\mu_t'e^{-\mu_t'z}\),目的是将d'Eon'11模型中扩散渐进和菲涅尔一致的边界条件得到更广泛的使用。最终的模型仍然使用了偶极子的模型,避免了复杂的量化漫射格林函数积分转化为高斯和的计算,并且很容易将已有的Jensen'01的模型改造过来。虽然准确率有所增加,但是仍然会具有偶极子模型的众多不足之处,因此属于在特定情况下的改进方法。

Methods

首先对比Jensen'01,将BSSRDF的表达式改造成了:

\[S_{d}\left(x_{i}, \vec{\omega}_{i} ; x_{o}, \vec{\omega}_{o}\right)=\frac{1}{\pi} F_{t}\left(x_{i}, \vec{\omega}_{i}\right) R\left(\left\|x_{i}-x_{o}\right\|_{2}\right) \frac{F_{t}\left(x_{o}, \vec{\omega}_{o}\right)}{1-2 C_{1}\left(\frac{1}{\eta}\right)}\]

就是在出射菲涅尔项的下面增加了一个归一化系数作为分母(d'Eon'11),对于\(C_1\)给出的近似如下:

\[2 C_{1} \approx\left\{\begin{array}{cc} 0.919317-3.4793 \eta+6.75335 \eta^{2}-7.80989 \eta^{3} & \\ +4.98554 \eta^{4}-1.36881 \eta^{5}, & \eta<1 \\ -9.23372+22.2272 \eta-20.9292 \eta^{2}+10.2291 \eta^{3} & \\ -2.54396 \eta^{4}+0.254913 \eta^{5}, & \eta>=1 \end{array}\right.\]

传统的理论尝试在diffusion term中并入对single scattering的计算,论文指出这是很不科学的并且在某些情况下会导致较为严重的误差,因此single scattering在本文模型中会被单独的计算。

接下来,就是改进点了,其实Better Dipole的主要思想也就是通过结合d'Eon'11的参数和Dipole模型来进行计算,参数修正表如下:

这篇论文后面的内容基本就是几种不同模型在不同参数情况下的对比了(方便我们在不同的情况下使用不同的模型进行渲染),这里就不再赘述,如果以后看到比较感兴趣的可能会挑出来讲一讲。

作者

Carbene Hu

发布于

2022-04-12

更新于

2024-02-14

许可协议

评论