http://renderman.pixar.com/view/implementing-a-skin-bssrdf

在有关地下散射的本文中,我试图了解如何使用重要性采样来计算单个散射。

它说,单个项$ L_o $的散乱辐射可以重写为$ s'_o $中指数衰减的乘积,并具有另一个函数:


$ L_o(x_o,\ vec {\ omega} _o)= \ bigg [
L_i(x_i,\ vec {\ omega} _i)\ cfrac {\ sigma_s(x_o)F_p(\ vec {\ omega}'_ i \ cdotp
\ vec {\ omega}'_ o)} {\ sigma_ {tc}} e ^ {-s'_i \ sigma_t(x_i)} \ bigg]
e ^ {-s_o \ sigma(x_o)} $

通过根据$ x \ sim \ sigma_t e ^ {-\ sigma_t x} $选择样本,将
集成到$ L_o $可以通过应用重要性抽样求和来近似。同样,通过选择$ s'_o =
\ cfrac {-\ mathbb {log(random())}} {\ sigma_ {tr}} $,您可以汇总所有
贡献而无需计算衰减$ s_o $中的项。




我知道您可以使用重要性采样来近似积分,但是我没有遵循它如何应用于渲染方程式。请您能详细描述一下它的工作原理吗?

$ E [f(x)] = \ int f(x)p(x)= \ int f(x)\ cfrac {p( x)} {q(x)} q(x)\ approx \ cfrac {1} {n} \ sum \ limits_ {i = 1} ^ nf(x_i)\ cfrac {p(x_i)} {q(x_i) } $

,单次散射适合一般渲染方程的地方吗?

$ L _ {\ text {o}}(\ mathbf x,\,\ omega_ { \ text {o}})\,= \,L_e(\ mathbf x,\,\ omega _ {\ text {o}}))+,\ int_ \ Omega f_r(\ mathbf x,\,\ omega _ {\ text {i}},\,\ omega _ {\ text {o}})\,L _ {\ text {i}}(\ mathbf x,\,\ omega _ {\ text {i}}))\,(\ omega_ {\ text {i}} \,\ cdot \,\ mathbf n)\,\ operatorname d \ omega _ {\ text {i}} $$

#1 楼

通常,重要性抽样的想法是以与要集成的功能匹配的方式(或更实际地,与其中的某些因素匹配)来分配样本。这样可以减小输出值的方差,从而使Monte Carlo积分收敛更快。

在体积散射中,当介质是均匀的时,我们具有比尔-朗伯定律,该定律规定透射率下降深度成倍增加。这就是这些方程式中诸如$ e ^ {-\ sigma x} $之类的因素的来源。因此,在通过介质进行光线行进时,靠近光线起点的区域通常会为输出贡献更多的光,而较远的区域会沿途吸收更多的光。

因此,如果您样本沿射线从指数分布指向,样本聚集到更近,更重要的区域。然后,您只需要评估这些点的散射并求平均即可。

通过对另一个问题的答案,很好地解释了表面散射情况下的重要性采样。


关于您的第二个问题,“单个散射在一般渲染方程中适合什么地方?”,嗯,不是!人们所谓的“通用渲染方程”实际上仅包括表面散射,而不包括体积散射。因此,并不是真正的“一般”。用于体积散射的一般渲染方程可能类似于:

$$ \ nabla_ \ omega \,L(x,\ omega)= \ sigma_e(x)L_e(x,\ omega)-\ sigma_t(x)L(x,\ omega)+ \ sigma_s(x)\ int p(\ omega,\ omega')\,L(x,\ omega')\,d \ omega $$ $$

这表明,沿着射线移动时,辐射的导数由体积中发出的光的总和,减去消光以及散射引起的。

将表面与体积相结合散射,我们通常只说方程的表面形式适用于表面上的点,而体积形式适用于其他任何地方。

评论


$ \ begingroup $
偶极近似值是否与比尔-兰伯特定律有关?
$ \ endgroup $
–maogenc
16年1月22日,下午3:16

$ \ begingroup $
@maogenc偶极子近似涉及具有很高散射系数的均质材料,因此它们以多重散射为主。啤酒–兰伯特法律也将适用于此类材料。
$ \ endgroup $
–内森·里德(Nathan Reed)
16 Jan 22'6:38