体积渲染

以下严谨推导体积渲染公式

在场景中,光线沿ω\omega方向传播,与介质中的点pp发生相互作用,LiL_i为入射光的辐射率,LoL_o为经作用后的辐射率。

吸收

使用σa(p,ω)\sigma_a(p,\omega)表示光线在pp点处沿ω\omega方向行进单位距离后,被吸收的辐射率与入射辐射率的比值,那么仅考虑吸收的情况下,在微小距离dtdt,辐射率的变化公式为:

dLo,abso(p,ω)=σa(p,ω)Li(p,ω)dtdL_{o,abso}(p,\omega)=-\sigma_{a}(p,\omega)L_{i}(p,\omega)dt

外散射

使用σs(p,ω)\sigma_s(p,\omega)表示光线在pp点处沿ω\omega方向行进行进单位距离后,被散射到其他方向的辐射率与入射辐射率的比值,这种情况与吸收类似,那么辐射率变化公式为:

dLo,scat(p,ω)=σs(p,ω)Li(p,ω)dtdL_{o,scat}(p,\omega)=-\sigma_{s}(p,\omega)L_{i}(p,\omega)dt

吸收与外散射都是消耗入射光的能量,那么可以将两种作用进行统一,记σt(p,ω)=σa(p,ω)+σs(p,ω)\sigma_{t}(p,\omega)=\sigma_{a}(p,\omega)+\sigma_{s}(p,\omega),称为衰减系数

此时有:

dLo,exti(p,ω)=σt(p,ω)Li(p,ω)dtdL_{o,exti}(p,\omega)=-\sigma_{t}(p,\omega)L_{i}(p,\omega)dt

假设移动距离为ll,即从ppp+lωp+l\omega,解该微分方程有:

lnLo(p+lω,ω)lnLi(p,ω)=0lσt(p+tω)dtLo(p+lω,ω)Li(p,ω)=e0l(σt(p+tω)dt)\ln{L_o(p+l\omega,\omega)}-\ln{L_i(p,\omega)}=-\int_{0}^{l}{\sigma_{t}(p+t\omega)dt}\\\frac{L_{o}(p+l\omega,\omega)}{L_{i}(p,\omega)}=e^{\int_{0}^{l}(\sigma_{t}(p+t\omega)dt)}

记透明度为T(pp+lω)=Lo(p+lω,ω)Li(p,ω)T(p\rightarrow p+l\omega)=\frac{L_{o}(p+l\omega,\omega)}{L_{i}(p,\omega)},那么容易得出其有以下性质:

T(pp)=1T(p0,p2)=T(p0,p1)T(p1,p2)T(p\rightarrow p)=1 \\T(p_0,p_2)=T(p_0,p_1)\ast T(p_1,p_2)

即具有单位元和传递性,同时如果介质是各向同性即σt(p,ω)=σt(p,ω)\sigma_t(p,\omega)=\sigma_t(p,-\omega),有

T(p0,p1)=T(p1,p0)T(p_0,p_1)=T(p_1,p_0)

即反身性,在单位距离内,通常假设\sigma_t为常数,此时

T(p0,p1)=eσtp0p1T(p_0,p_1)=e^{-\sigma_t\vert\vert p_0-p_1\vert\vert}

在实际渲染中,传递性代表了光线经过多个介质时,可以依次计算其衰减量,反身性代表了可以从摄像机处反向计算光照

以上公式被称为为朗博-比尔定律

发射

假设点pp处沿ω\omega方向微小距离dtdt内产生的辐射率为Le(p,ω)L_e(p,\omega),发射的公式为:

dLo(p,ω)=Le(p,ω)dtdL_o(p,\omega)=L_e({p,\omega})dt

内散射

散射会对四周所有方向产生光线,假设入射光辐射率为单位1,则所有散射光的方向与辐射率形成一种分布,称该分布为相位函数,p(p,ωi,ωo)p(p,\omega_i,\omega_o)表示在点pp处,入射光为ωi\omega_i方向,出射光为ωo\omega_o时,散射光与入射光辐射率的比值,即

p(p,ωi,ωo)=Li(p,ωi)Lo(p,ωo)p(p,\omega_i,\omega_o)=\frac{L_{i}(p,\omega_i)}{L_o(p,\omega_o)}

显然,相位函数满足:

spherep(p,ωi,ωo)dωo=1\int_{sphere}{p(p,\omega_i,\omega_o)d\omega_o}=1

同时散射光沿ω\omega方向也将遵循朗博-比尔定律,由于是从其余方向散射而来,并不受吸收作用影响,那么在点p处沿ω\omega方向微小距离dtdt内辐射率的增加量为:

Ls(p,ω)=Le(p,ω)+spherep(p,ωi,ω)σs(p,ω)Li(p,ωi)dωiL_s(p,\omega)=L_e(p,\omega)+\int_{sphere}{p(p,\omega_i,\omega)\sigma_s(p,\omega)L_i(p,\omega_i)d\omega_i}

Ls(p,ω)L_s(p,\omega)为源项

传输方程

综合考虑衰减和源项后,有

dLo(p,ω)dt=σt(p,ω)Li(p,ω)dt+Ls(p,ω)\frac{dL_o{(p,\omega)}}{dt}=-\sigma_{t}(p,\omega)L_{i}(p,\omega)dt+L_s(p,\omega)

该式称为传输方程的微分积分形式,可以用于ray marching算法计算

在不考虑自发光与散射的情况下,该式退化为简单体积渲染的情况,即朗博-比尔定律