物理渲染学习笔记(二)——光的传播

一、假设
首先我们假设介质又许多非常小并且随机分布的微粒组成,微粒之间的距离相比与微粒本身大小可视为无限大,因此每个微粒的光照行为是独立事件,但我们不描述单个微粒的光照过程,我们只描述光穿过介质时整体的概率分布。


二、光子的交互


当一个光子穿越一堆微粒时,可能一个也碰不到直接通过,也有可能撞到微粒,撞到的概率与介质的系数 σt 相关,撞到的时候,有两种可能,吸收或者散射,与其相关的介质系数分别为 σa σs , 两种都会导致该方向的 radiance 变化,最后,我们可以得到 σt=σa+σs


2.1 Absorption
考虑一束极小的光束沿 ω⃗  穿过介质,则 x 点射进去的光子数量与入射radiance L(xω⃗ ) 成比例,光束上的每一部分 Δt , 一部分光子与介质交互并被吸收,若该步长内的吸收系数为 σa(x+tω⃗ ) , 则 σa(x+tω⃗ )Δt 部分的光子被吸收,因此,剩余的光子可被表示为:

L((x+tω⃗ )ω⃗ )=L(xω⃗ )(1σa(x+tω⃗ )Δt)
整理可得:
L((x+tω⃗ )ω⃗ )L(xω⃗ )Δt=σa(x)L(xω⃗ )

当步长无限小时,可得:
limΔt0L((x+tω⃗ )ω⃗ )L(xω⃗ )Δt=(ω⃗ a)L(xω⃗ )=σa(x)L(xω⃗ )

其中 a 表示光子被吸收的梯度, (ω⃗ a) 则表示方向导数


2.2 Out-scattering
同理我们可以得到out-scattering造成的radiance变化:

(ω⃗ o)L(xω⃗ )=σs(x)L(xω⃗ )

同时考虑吸收和Out-scattering,可以得到:

(ω⃗ t)L(xω⃗ )=(σa+σt)L(xω⃗ )=σt(x)L(xω⃗ )

上面的公式,其实可以表述为透射率 Tr , 透射率表示为能不与微粒进行碰撞的光子比例,对上式进行积分可得:

Tr(xx)=eτ(xx)

参数 τ 被称为光学厚度,定义如下:
τ(xx)=d0σt(x+tω⃗ )dt

其中 t[0,d] ,在均匀介质中, τ 可被计算为:
τ(xx)=dσt

回到透射率,透射率通常在0到1之间,当只考虑吸收和out-scattering时,透射率可用来计算减少的radiance:

L(xω⃗ )=Tr(xx)L(xω⃗ )

此外,一个点到自身的透射率总为1,直线上的三个点透射率满足下的等式:
Tr(xx′′)=Tr(xx)Tr(xx′′)


2.3 Emission和In-scattering

In-scattering:

(ω⃗ i)L(xω⃗ )=σs(x)Li(xω⃗ )

Emiision:
(ω⃗ e)L(xω⃗ )=σa(x)Le(xω⃗ )

2.4 相函数


就像BRDF,相函数满足可交换性:

p(x,ω⃗ ω⃗ )

归一性:
Ω4πp(x,ω⃗ ω⃗ )dω⃗ =1,ω⃗ 

各向同性相函数:

漫反射就是完美的各向同性散射,其相函数为常数:

pI(x,ω⃗ ω⃗ )=14π

Henyey-Greenstein相函数:
使用最为广泛的相函数,只取决于 θ , 定义如下:

pHG(x,θ)=1g24π(1+g22gcosθ)1.5
其中 g[1,1] , 决定了前向和后向散射的强度,在物理上, g 表示散射方向的平均余弦值,大于零时是前向散射,小于零时是后向散射,等于零时则表示各向同性。同时,更加复杂的散射函数可用Henyey-Greenstein用如下计算做近似:
g(x)=Ω4πp(x,ω⃗ ω⃗ )cosθdω⃗ 


三、体渲染方程
综合上述的absorption、out-scattering、in-scattering、emission,我们可得得到光在介质中传播的完整函数:

(ω⃗ )L(xω⃗ )=σa(x)L(xω⃗ )absorptionσs(x)L(xω⃗ )outscatteringextinction+σa(x)Le(xω⃗ )emission+σs(x)Li(xω⃗ )inscattering


如图所示,对上式两边在全方向进行积分,并代入透射率 Tr 可以得到:

L(xω⃗ )=Tr(xxs)L(xsω⃗ )reduced surface radiance+s0Tr(xxt)σa(x)Le(xsω⃗ )dtaccumulated emitted radiance+s0Tr(xxt)σs(xt)Li(xsω⃗ )dtaccumulated inscattering radiance

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值