Volume Rendering
Volume Scattering Processes(体积散射过程)
现实中,在有介质参与的环境中,影响辐射分布的三个主要物理过程为吸收,发射和散射。
- 吸收:光能转化为其他能量
- 发射:发光粒子将光能添加到环境中
- 散射:由于粒子间的碰撞,光能从一个方向散射到其他方向
Absorption(吸收)
吸收效果越强,物体会有更黑暗的外观,边界更加明显,显得更加厚重,相反的,吸收效果弱的物体给人柔和的感觉
吸收由吸收系数(absorption coefficient) σ a \sigma_a σa表示,这是光在介质中传播每单位距离被吸收的概率密度,它的单位是 m − 1 m^{-1} m−1。 σ a ( p , ω ) \sigma_a(p,\omega) σa(p,ω)是关于位置与立体角的函数。
仅考虑吸收的影响,当 radiance L i ( p , − ω ) L_i(p,-\omega) Li(p,−ω)到达点 p,设这个点在吸收后的出 radiance L o ( p , ω ) L_o(p,\omega) Lo(p,ω),这个 radiance 变换由关于光线长度 d t \mathrm{d}t dt(从入射位置到出射位置的距离)的微分方程给出:
d L o ( p , ω ) = L o ( p , ω ) − L i ( p , − ω ) = − σ a ( p , ω ) L i ( p , − ω ) d t \begin{equation} \mathrm{d}L_o(p,\omega)=L_o(p,\omega)-L_i(p,-\omega)=-\sigma_a(p,\omega)L_i(p,-\omega)\,\mathrm{d}t \end{equation} dLo(p,ω)=Lo(p,ω)−Li(p,−ω)=−σa(p,ω)Li(p,−ω)dt
其中 L i L_i Li的位置实际上为 p + ω d t p+\omega\mathrm{d}t p+ωdt
这说明沿光线方向 radiance 的减小差异
d
L
o
(
p
,
ω
)
\mathrm{d}L_o(p,\omega)
dLo(p,ω)是初始 radiance 的线性函数(这基于辐射度量学的一个假设:介质吸收 radiance 的比例不会根据光线 radiance 量而改变,而是有一个固定比例)
Emit(发射)
介质的发射将别的能量转化为光能,与吸收类似,发射对介质中 radiance 的变换也与 σ a \sigma_a σa相关,仅考虑发射的影响,有:
d L o ( p , ω ) = σ a ( p , ω ) L e ( p , ω ) d t \begin{equation} \mathrm{d}L_o(p,\omega)=\sigma_a(p,\omega)L_e(p,\omega)\,\mathrm{d}t \end{equation} dLo(p,ω)=σa(p,ω)Le(p,ω)dt
这个方程不依赖于入射光假设,仅依赖于线性函数假设。
Out-scattering(外散射)
光在参与介质中的第三个基本相互作用是散射。当射线穿过介质时,它可能与粒子碰撞并向不同方向散射,这对光束携带的总 radiance 有两个影响:
- 减少了微分区域出射光线的 radiance,因为其中一些被偏转到不同的方向。out-scattering
- 别的方向的光线散射偏转到出射光线方向,增加 radiance。in-scattering
将 out-scattering 和 in-scattering 相加得到的是真实的散射 real scattering,这有别于零散射 null scattering。
介质的散射效应由散射系数(scattering coefficient) σ s \sigma_s σs表示,与吸收类似,仅考虑外散射,有微分方程:
d L o ( p , ω ) = − σ s ( p , ω ) L i ( p , − ω ) d t \begin{equation} \mathrm{d}L_o(p,\omega)=-\sigma_s(p,\omega)L_i(p,-\omega)\,\mathrm{d}t \end{equation} dLo(p,ω)=−σs(p,ω)Li(p,−ω)dt
In-Scattering(内散射)
相较于外散射,内散射将其他方向的 radiance 散射到所求方向,由此增加了出射光的 radiance。
在这里,先引入相位函数 phase function p ( ω , ω ′ ) p(\omega, \omega') p(ω,ω′)描述散射辐射的角分布。相位函数 p p p,有归一化约束: ∫ S 2 p ( ω , ω ′ ) d ω ′ = 1 \int_{S^2}p(\omega,\omega')\,\mathrm{d}\omega'=1 ∫S2p(ω,ω′)dω′=1,此约束意味着相位函数是特定方向上散射的概率分布。
由此,通过散射系数 σ s \sigma_s σs和相位函数,我们可以对入射方向积分得到微分方程:
d
L
o
(
p
,
ω
)
=
σ
s
(
p
,
ω
)
∫
S
2
p
(
p
,
ω
i
,
ω
)
L
i
(
p
,
ω
i
)
d
ω
i
\begin{equation} \mathrm{d}L_o(p,\omega)={\sigma_s(p,\omega)}\int_{S^2}p(p,\omega_i,\omega)L_i(p,\omega_i)\,\mathrm{d}\omega_i \end{equation}
dLo(p,ω)=σs(p,ω)∫S2p(p,ωi,ω)Li(p,ωi)dωi
Radiative Transfer Equation(RTE)
由上文可知,出射方向的 radiance 总量需要考虑吸收,发射,内散射,外散射四项,其中,吸收和外散射导致了 radiance 总量的减少;发射和内散射导致了 radiance 总量的增加。
对于吸收和外散射,我们可以将两者合并的影响称为衰减(attenuation),设衰减系数 attenuation coefficient 为:
σ t ( p , ω ) = σ a ( p , ω ) + σ s ( p , ω ) \begin{equation} \sigma_t(p,\omega)=\sigma_a(p,\omega)+\sigma_s(p,\omega) \end{equation} σt(p,ω)=σa(p,ω)+σs(p,ω)
那么总衰减量即为:
d
L
o
(
p
,
ω
)
=
−
σ
t
(
p
,
ω
)
L
i
(
p
,
−
ω
)
d
t
\begin{equation} \mathrm{d}L_o(p,\omega)=-\sigma_t(p,\omega)L_i(p,-\omega)\,\mathrm{d}t \end{equation}
dLo(p,ω)=−σt(p,ω)Li(p,−ω)dt
——————
我们将单次散射的反照率single-scattering albedo定义为
ρ
(
p
,
ω
)
=
σ
s
(
p
,
ω
)
σ
t
(
p
,
ω
)
\rho(p,\omega)=\frac{\sigma_s(p,\omega)}{\sigma_t(p,\omega)}
ρ(p,ω)=σt(p,ω)σs(p,ω)
在辐射度量学的假设下,单次散射反照率在0-1之间,它代表了在散射事件发生时散射的比例。
此外,我们还用平均自由路径(mean free path)
1
/
σ
t
(
p
,
ω
)
1/\sigma_t(p,\omega)
1/σt(p,ω)代表光线在衰减系数为
σ
t
(
p
,
ω
)
\sigma_t(p,\omega)
σt(p,ω)的介质中,在与其他粒子相互作用前能前进的平均距离(衰减系数的单位为
m
−
1
m^{-1}
m−1)。
——————
对于发射和内散射,我们也可以同时考虑,有总增加量:
d L o ( p , ω ) = σ a ( p , ω ) L e ( p , ω ) + σ s ( p , ω ) ∫ S 2 p ( p , ω i , ω ) L i ( p , ω i ) d ω i \begin{equation} \mathrm{d}L_o(p,\omega)={\sigma_a(p,\omega)}L_e(p,\omega)+{\sigma_s(p,\omega)}\int_{S^2}p(p,\omega_i,\omega)L_i(p,\omega_i)\,\mathrm{d}\omega_i \end{equation} dLo(p,ω)=σa(p,ω)Le(p,ω)+σs(p,ω)∫S2p(p,ωi,ω)Li(p,ωi)dωi
为方便公式书写,我们认为增加的总 radiance 由源函数 L s L_s Ls给出,有:
L s ( p , ω ) = σ a ( p , ω ) σ t ( p , ω ) L e ( p , ω ) + σ s ( p , ω ) σ t ( p , ω ) ∫ S 2 p ( p , ω i , ω ) L i ( p , ω i ) d ω i \begin{equation} L_s(p,\omega)=\frac{\sigma_a(p,\omega)}{\sigma_t(p,\omega)}L_e(p,\omega)+\frac{\sigma_s(p,\omega)}{\sigma_t(p,\omega)}\int_{S^2}p(p,\omega_i,\omega)L_i(p,\omega_i)\,\mathrm{d}\omega_i \end{equation} Ls(p,ω)=σt(p,ω)σa(p,ω)Le(p,ω)+σt(p,ω)σs(p,ω)∫S2p(p,ωi,ω)Li(p,ωi)dωi
那么总增加量即可改写成:
d L o ( p , ω ) = σ t ( p , ω ) L s ( p , ω ) d t \begin{equation} \mathrm{d}L_o(p,\omega)=\sigma_t(p,\omega)L_s(p,\omega)\,\mathrm{d}t \end{equation} dLo(p,ω)=σt(p,ω)Ls(p,ω)dt
由此,我们得到了总 radiance 的变化量,这个公式也被称为 Radiative Transfer Equation:
d L o ( p , ω ) = − σ t ( p , ω ) L i ( p , − ω ) d t + σ t ( p , ω ) L s ( p , ω ) d t \begin{equation} \mathrm{d}L_o(p,\omega)=-\sigma_t(p,\omega)L_i(p,-\omega)\,\mathrm{d}t+\sigma_t(p,\omega)L_s(p,\omega)\,\mathrm{d}t \end{equation} dLo(p,ω)=−σt(p,ω)Li(p,−ω)dt+σt(p,ω)Ls(p,ω)dt
透过率(Transmittance)
Definition
前文描述的散射过程都是根据其在空间点上的局部效应来指定的,但在 rendering 中,我们感兴趣的是它们对沿射线的 radiance 的总影响,即我们需要得到光线上两点间的 radiance 减少,这样就有利于计算从一个光源经过介质到一个物体表面的 radiance 的衰减量。
仅考虑衰减量时,给定衰减系数 σ t \sigma_t σt,radiance 的衰减随距离增长的变化率为:
d L o ( p , ω ) d t = − σ t ( p , ω ) L i ( p , − ω ) \begin{equation} \frac{\mathrm{d}L_o(p,\omega)}{\mathrm{d}t}=-\sigma_t(p,\omega)L_i(p,-\omega) \end{equation} dtdLo(p,ω)=−σt(p,ω)Li(p,−ω)
方程中的 d t \mathrm{d}t dt为经过的微小距离。
通过这个方程以及 Beer–Lambert law 可以得出两点间 radiance 的变化,我们将其称之为光线透过率 beam transmittance T r T_r Tr,有:
T r ( p → p ′ ) = e − ∫ 0 d σ t ( p + t ω , ω ) d t \begin{equation} T_r(p\to{p'})=e^{-\int_0^d{\sigma_t(p+t\omega, \omega)\,\mathrm{d}t}} \end{equation} Tr(p→p′)=e−∫0dσt(p+tω,ω)dt
其中, d = ∣ ∣ p − p ′ ∣ ∣ d=||p-p'|| d=∣∣p−p′∣∣,为 p 和 p’两点之间的距离。
因此若一个表面点 p 朝方向 ω \omega ω的出射 radiance 为 L o ( p , ω ) L_o(p,\omega) Lo(p,ω),点 p’接收到的朝向 − ω -\omega −ω方向的入射 radiance 为:
L
i
(
p
′
,
−
ω
)
=
T
r
(
p
→
p
′
)
L
o
(
p
,
ω
)
\begin{equation} L_i(p',-\omega)= T_r(p\to{p'})L_o(p,\omega) \end{equation}
Li(p′,−ω)=Tr(p→p′)Lo(p,ω)
透过率有以下性质:
-
每个点到自己的透过率 T r ( p → p ) = 1 T_r(p\to{p})=1 Tr(p→p)=1
-
在 σ t = 0 \sigma_t=0 σt=0的真空中,所有点 p’的透过率都为 T r ( p → p ′ ) = 1 T_r(p\to{p'})=1 Tr(p→p′)=1
-
若介质的衰减系数在方向上对称, σ t ( ω ) = σ t ( − ω ) \sigma_t(\omega)=\sigma_t(-\omega) σt(ω)=σt(−ω)或者说衰减系数只与位置相关,则透过率也有对称性 T r ( p → p ′ ) = T r ( p ′ → p ) T_r(p\to{p'})=T_r(p'\to{p}) Tr(p→p′)=Tr(p′→p)
-
透过率是 multiplicative 的,有 T r ( p → p ′ ′ ) = T r ( p → p ′ ) T r ( p ′ → p ′ ′ ) T_r(p\to{p''})=T_r(p\to{p'})T_r(p'\to{p''}) Tr(p→p′′)=Tr(p→p′)Tr(p′→p′′)
-
在均匀介质中, σ t \sigma_t σt为常数,有 T r ( p → p ′ ) = e − σ t d T_r(p\to{p'})=e^{-\sigma_td} Tr(p→p′)=e−σtd
同时, T r T_r Tr中的负指数部分被称为光学厚度 optical thickness,用符号 τ \tau τ表示:
τ ( p → p ′ ) = ∫ 0 d σ d ( p + t ω , ω ) d t \tau(p\to{p'})=\int_0^d\sigma_d(p+t\omega,\omega)\,\mathrm{d}t τ(p→p′)=∫0dσd(p+tω,ω)dt
蒙特卡洛计算透过率
在上文中,我们可以看到光线透过率 T r T_r Tr中仅存在一个关于位置 t 的一维积分,因此有了 t 的分布函数后,就可以用蒙特卡洛法进行无偏估计,有:
e − ∫ 0 d σ t ( p + t ω , ω ) d t ≈ e − [ σ t ( p + t ′ ω , ω ) p ( t ′ ) ] e^{-\int_0^d{\sigma_t(p+t\omega, \omega)\,\mathrm{d}t}}\approx{}e^{-[\frac{\sigma_t(p+t'\omega, \omega)}{p(t')}]} e−∫0dσt(p+tω,ω)dt≈e−[p(t′)σt(p+t′ω,ω)]
但我们在估计时,由于 E [ e − X ] ≠ e − E [ X ] E[e^{-X}]\neq{}e^{-E[X]} E[e−X]=e−E[X],假如直接使用蒙特卡洛会低估最终值(此现象可以用_Jensen’s inequality_以及 e − x e^{-x} e−x是凸函数来解释)
此误差随着透过率估计的误差的减小而减小,很多应用中这个误差都是可接受的(eg. 通过黎曼积分,再计算透过率)。但 pbrt 使用一种 alternative 的无差估计。
根据方程 d L o ( p , ω ) d t = − σ t ( p , ω ) L i ( p , − ω ) \frac{\mathrm{d}L_o(p,\omega)}{\mathrm{d}t}=-\sigma_t(p,\omega)L_i(p,-\omega) dtdLo(p,ω)=−σt(p,ω)Li(p,−ω),设 σ t \sigma_t σt与方向无关,可以得到积分方程:
∫ 0 d d L ( p + t ω ) d t d t = L ( p ′ ) − L ( p ) = ∫ 0 d − σ t ( p + t ω ) L ( p + t ω ) d t \int_0^d\frac{\mathrm{d}L(p+t\omega)}{\mathrm{d}t}\mathrm{d}t=L(p')-L(p)=\int_0^d-\sigma_t(p+t\omega)L(p+t\omega)\mathrm{d}t ∫0ddtdL(p+tω)dt=L(p′)−L(p)=∫0d−σt(p+tω)L(p+tω)dt
由于 T r ( p → p ′ ) = L ( p ′ ) / L ( p ) T_r(p\to{p'})=L(p')/L(p) Tr(p→p′)=L(p′)/L(p),带入方程有:
T r ( p → p ′ ) = 1 − ∫ 0 d σ t ( p + t ω ) T r ( p + t ω → p ′ ) d t T_r(p\to{p'})=1-\int_0^d\sigma_t(p+t\omega)T_r(p+t\omega\to{p'})\,\mathrm{d}t Tr(p→p′)=1−∫0dσt(p+tω)Tr(p+tω→p′)dt
由这个方程可以看出,透过率是根据积分递归定义的,它似乎将问题复杂化了,但这样可以使得蒙特卡洛积分得到透射率的无偏估计成为可能。但这个被积函数很难采样,它在实践中的估计有很高的方差,下一章讲解如何通过一种公式进行采样。
零散射(Null Scattering)
零散射可以解释为引入了一种额外类型的散射,这种散射不对应于任何类型的物理散射过程,但被指定为对光的分布没有影响。由此,零散射可以将非均匀介质视为均匀介质,从而更容易将采样算法应用于非均匀介质。
零散射系数由一个常数
σ
m
a
j
\sigma_{maj}
σmaj定义,类似于将下左图不均匀黑色介质用浅色介质补充完整,使得整体呈现均匀密度,如右图所示。
零散射定义了一个零散射系数 null-scattering coefficient σ n \sigma_n σn。类似于其他散射系数,它代表在介质中传播的每单位距离零散射事件的概率。同时,引入一个大于 σ a + σ s \sigma_a+\sigma_s σa+σs的常数 majorant σ m a j \sigma_{maj} σmaj,将 σ n \sigma_n σn定义为:
σ n ( p , ω ) = σ m a j − σ t ( p , ω ) \sigma_n(p,\omega)=\sigma_{maj}-\sigma_t(p,\omega) σn(p,ω)=σmaj−σt(p,ω)
由此可以得出,所有散射系数的和为 σ a + σ s + σ n = σ m a j \sigma_a+\sigma_s+\sigma_n=\sigma_{maj} σa+σs+σn=σmaj,由此,整个介质都具有均匀的散射系数。
根据此定义,可将 radiance 衰减方程改写为:
d L o ( p , ω ) d t = − ( σ m a j − σ n ( p , ω ) ) L i ( p , − ω ) \frac{\mathrm{d}L_o(p,\omega)}{\mathrm{d}t}=-(\sigma_{maj}-\sigma_n(p,\omega))L_i(p,-\omega) dtdLo(p,ω)=−(σmaj−σn(p,ω))Li(p,−ω)
将其构建成与上文透过率的积分递归方程一致的方程,有:
T r ( p → p ′ ) = e − σ m a j d + ∫ 0 d e − σ m a j t σ n ( p + t ω ) T r ( p + t ω → p ′ ) d t T_r(p\to{p'})=e^{-\sigma_{maj}d}+\int_0^de^{-\sigma_{maj}t}\sigma_n(p+t\omega)T_r(p+t\omega\to{}p')\,\mathrm{d}t Tr(p→p′)=e−σmajd+∫0de−σmajtσn(p+tω)Tr(p+tω→p′)dt
对于一个均匀介质,方程中的第二项积分会消除,第一项对应 beer’s law。
对于一个非均匀介质,方程的第一项可以被视为计算真实透射率的低估值,然后用积分计算其余部分。
相位函数
如上文所述,相位函数是特定方向上散射的概率分布,相位函数是关于入射角和出射角的函数 p ( ω i , ω o ) p(\omega_i, \omega_o) p(ωi,ωo)。
它基于的假设是_粒子间的距离几倍大于它们的半径,我们即可以忽略粒子间的相互作用_。
现实中大部分材质的相位函数值只与入射角和出射角间的夹角 θ \theta θ相关,因此相位函数为 1 维函数,可写作 p ( cos θ ) p(\cos\theta) p(cosθ),这些介质被称为是各向同性的或对称的。
与之相对的各项异性的介质的相位函数则是一个 4 维函数,例如由一致方向纤维组成的晶体或介质。
前文所述的各向同性和各向异性都是针对介质而言的,而各项同性的相位函数则专指所有方向 p ( ω i , ω o ) = 1 4 π p(\omega_i, \omega_o)=\frac1{4\pi} p(ωi,ωo)=4π1的相位函数,其他都是各向异性的(因此可能会有一个各项同性的介质有一个各向异性的相位函数)。
Henyey–Greenstein 相位函数
一个广泛使用的相位函数是由 Henyey 和 Greenstein 创造的(1941)。这个相位函数经过专门设计,易于拟合测量的散射数据,并使用单个参数 g g g(各向异性参数)控制散射光分布。
p H G ( cos θ ) = 1 4 π 1 − g 2 ( 1 + g 2 + 2 g ( cos θ ) ) 3 / 2 \begin{equation} p_{HG}(\cos\theta)=\frac1{4\pi}\frac{1-g^2}{(1+g^2+2g(\cos\theta))^{3/2}} \end{equation} pHG(cosθ)=4π1(1+g2+2g(cosθ))3/21−g2
其中参数 g g g有明确的物理意义,它是给定角度 ω \omega ω和 ω ′ \omega' ω′的相位函数与夹角余弦的积分,也被称为平均余弦(mean cosine)。
g = ∫ S 2 p ( − ω , ω ′ ) ( ω ⋅ ω ′ ) d ω ′ = 2 π ∫ 0 π p ( − cos θ ) cos θ sin θ d θ g=\int_{S^2}p(-\omega,\omega')(\omega\cdot\omega')\,\mathrm{d}\omega'=2\pi\int_0^\pi{p(-\cos\theta)\cos\theta\sin\theta\,\mathrm{d}\theta} g=∫S2p(−ω,ω′)(ω⋅ω′)dω′=2π∫0πp(−cosθ)cosθsinθdθ
公式中的 ω \omega ω和 ω ′ \omega' ω′都朝向外。当相位函数为各项同性时, g = 0 g=0 g=0;当前向散射大于后向散射时, g > 0 g>0 g>0;当后向散射大于前向散射时, g < 0 g<0 g<0。
关于 Henyey–Greenstein 相位函数的采样与 PDF,PDF 非常容易理解,由于相位函数就是概率密度函数,所以 PDF 就为 p H G ( cos θ , g ) p_{HG}(\cos\theta, g) pHG(cosθ,g)的函数值,重要的是如何通过随机数生成方向 ϕ \phi ϕ和 θ \theta θ。方位角直接均匀采样即可, p ( ϕ ) = 1 / ( 2 π ) p(\phi)=1/(2\pi) p(ϕ)=1/(2π),对于极角的采样,当 g ≠ 0 g\neq0 g=0时,可以通过函数 cos θ = − 1 2 g ( 1 + g 2 − ( 1 − g 2 1 + g − 2 g ξ ) 2 ) \cos\theta=-\frac1{2g}(1+g^2-(\frac{1-g^2}{1+g-2g\xi})^2) cosθ=−2g1(1+g2−(1+g−2gξ1−g2)2)采样;反之可以使用 cos θ = 1 − 2 ξ \cos\theta=1-2\xi cosθ=1−2ξ均匀采样。
传递方程(The Equation of Transfer)
由体积散射过程和透过率的概念我们可以了解到,如果我们假设场景中没有表面,那么光线就不会被阻挡,并且具有无限长的长度,传递方程的积分形式就为:
L i ( p , ω ) = ∫ 0 ∞ T r ( p ′ → p ) σ t ( p ′ , ω ) L s ( p ′ , − ω ) d t L_i(p,\omega)=\int_0^\infin{}T_r(p'\to{}p)\sigma_t(p',\omega)L_s(p',-\omega)\,\mathrm{d}t Li(p,ω)=∫0∞Tr(p′→p)σt(p′,ω)Ls(p′,−ω)dt
这个方程的含义即是将光路上所有的出射 radiance 全部加起来,但由于中途会有损耗,所以还需乘上一个透过率。
更一般的,若入射光线的路径被一个反射或发光表面所阻挡,光线则不再需要积分无限距离,假设表面上的点为 p s p_s ps,则传递方程的积分形式就为:
L
i
(
p
,
ω
)
=
T
r
(
p
s
→
p
)
L
o
(
p
s
,
−
ω
)
+
∫
0
t
T
r
(
p
′
→
p
)
σ
t
(
p
′
,
ω
)
L
s
(
p
′
,
−
ω
)
d
t
′
L_i(p,\omega)=T_r(p_s\to{}p)L_o(p_s,-\omega)+\int_0^t{}T_r(p'\to{}p)\sigma_t(p',\omega)L_s(p',-\omega)\,\mathrm{d}t'
Li(p,ω)=Tr(ps→p)Lo(ps,−ω)+∫0tTr(p′→p)σt(p′,ω)Ls(p′,−ω)dt′
引入零散射
若在原传递方程的基础上引入零散射,将介质的密度以固定的参数 σ m a j \sigma_{maj} σmaj表示,则可将传递方程的积分形式改为:
L i ( p , ω ) = T m a j ( p s → p ) L o ( p s , − ω ) + σ m a j ∫ 0 t T m a j ( p ′ → p ) L n ( p ′ , − ω ) d t ′ L_i(p,\omega)=T_{maj}(p_s\to{}p)L_o(p_s,-\omega)+\sigma_{maj}\int_0^t{}T_{maj}(p'\to{}p)L_n(p',-\omega)\,\mathrm{d}t' Li(p,ω)=Tmaj(ps→p)Lo(ps,−ω)+σmaj∫0tTmaj(p′→p)Ln(p′,−ω)dt′
其中, p ′ = p + t ′ ω p'=p+t'\omega p′=p+t′ω不变,但引入了一个 T m a j T_{maj} Tmaj用于表示包含常规散射和零散射的主透过率(majorant transmittance),有 T m a j ( p ′ → p ) = e − ∫ 0 d ( σ t ( p + t ω , ω ) + σ n ( p + t ω ) ) d t = e − σ m a j d T_{maj}(p'\to{}p)=e^{-\int_0^d{(\sigma_t(p+t\omega, \omega)+\sigma_n(p+t\omega))\,\mathrm{d}t}}=e^{-\sigma_{maj}d} Tmaj(p′→p)=e−∫0d(σt(p+tω,ω)+σn(p+tω))dt=e−σmajd。
同时还引入了一个零散射的源方程 L n L_n Ln,它在 L s L_s Ls的基础上加上了一个新的项:
L n ( p , ω ) = σ a ( p , ω ) σ m a j L e ( p , ω ) + σ s ( p , ω ) σ m a j ∫ S 2 p ( p , ω i , ω ) L i ( p , ω i ) d ω i + σ n ( p ) σ m a j L i ( p , ω ) L_n(p,\omega)=\frac{\sigma_a(p,\omega)}{\sigma_{maj}}L_e(p,\omega)+\frac{\sigma_s(p,\omega)}{\sigma_{maj}}\int_{S^2}p(p,\omega_i,\omega)L_i(p,\omega_i)\,\mathrm{d}\omega_i+\frac{\sigma_n(p)}{\sigma_{maj}}L_i(p,\omega) Ln(p,ω)=σmajσa(p,ω)Le(p,ω)+σmajσs(p,ω)∫S2p(p,ωi,ω)Li(p,ωi)dωi+σmajσn(p)Li(p,ω)
T m a j T_{maj} Tmaj由于引入了零散射,透过率始终会小于或等于真实透过率,传递方程中物体表面部分 T m a j L o T_{maj}L_o TmajLo可能会略小于真实值,但其也可以由 L n L_n Ln中给出的项来补足。
Reference
https://www.pbr-book.org/4ed/Volume_Scattering/Volume_Scattering_Processes
PS
本文主要是对PBRT内容的翻译总结,欢迎交流学习~
由于PBRT是一本讲解离线渲染,光追渲染的书,在讲解体渲染时除上文的概念外,还写了非常多实操时蒙特卡洛采样的做法,但由于笔者能力实在有限,无法完全理解相关内容,因此略过了这部分内容,如果有对此方面感兴趣的同学可自行查阅Reference中PBRT的原文~