Answers:
该模型所基于的假设与许多其他皮肤渲染模型相同。地下散射可以近似为扩散现象。这是好的,因为在高度散射的介质中,光的分布失去了与角度的依赖性,并趋于各向同性。
偶极近似是一种以解析方式解决此类扩散问题的公式。
基本上,它们从将BSSRDF近似为多重散射和单个散射分量开始。然后将多重散射定义为:
其中是菲涅耳项,是扩散轮廓,表示为入口点和出口点之间的距离的函数。
该被称为扩散分布,并且它们通过偶极近似来公式化该分布。入射光线的贡献被认为是两个虚拟光源之一:一个在表面下方的负值,另一个在表面上方的正值(这就是偶极子的原因)
该模型仅考虑了多个散射事件,但对于皮肤来说已经足够了。但是必须注意,对于某些半透明材料(例如烟和大理石),单个散射是基本的。该论文提出了一种单一的散射公式,但价格昂贵。
对于实时应用,通常将扩散曲线近似为一系列高斯模糊(例如D'Eon等人的开创性作品,然后在GPU Gems 3中用于Jimenez的SSSSS),以便使其在实时场景中实用。在这篇精彩的论文中,有关于这种近似的细节。这张纸上的图片实际上显示了这种表述有多好:
另外,偶极近似假设材料是半无限的,但是这种假设不适用于薄平板和多层材料(例如蒙皮)。Donner和Jensen [2005]在偶极子工作的基础上,提出了解决偶极子问题的多极子近似方法。利用该模型而不是单个偶极子,作者使用一组模型来描述散射现象。在这种公式中,可以通过将所涉及的不同偶极子的贡献相加来获得反射率和透射率曲线
编辑:我在评论部分中将几个@NathanReed的问题的答案放在这里:
即使采用扩散轮廓近似值,BSSRDF模型仍需要对表面上附近点的半径进行积分以收集入射光,对吗?例如,如何在路径跟踪器中完成该操作?是否必须建立一些数据结构,以便可以在给定点附近的表面上采样点?
仍然需要在特定区域上集成BSSRDF近似值。
在链接的论文中,他们使用了蒙特卡洛射线示踪剂,在一个点周围随机采样,其密度定义为:
其中sigma值是下面定义的有效消光系数(它取决于材料的属性散射和吸收系数),d是到我们评估点的距离。这样定义密度,因为扩散项具有指数衰减。
在[Jensen and Buhler 2002]中,他们提出了一种加速技术。主要概念之一是使采样与扩散项的评估脱钩。这样,当评估扩散时,他们对在采样阶段计算出的信息进行分级评估,以将远处的样本聚类在一起。本文描述的实现使用八叉树作为结构。根据该论文,该技术比完整的蒙特卡洛积分要快几个数量级。
不幸的是,我从来没有参与过离线实施,所以我无能为力。
在实时高斯和和近似中,当定义需要应用的高斯模糊的方差时,会隐式设置正确的半径。
为什么有一个正负一盏灯?他们的目标是以某种方式互相抵消吗?
是的,偶极子源法(日期早于詹森的论文)定义为满足某些边界条件。具体地,能量密度必须是零以一定的外推边界具有从表面的距离其中
作为,考虑了平板的菲涅耳反射率,并且该sigma值是下面所述的减小的消光系数。
EDIT2:我在博客文章中对此回答中的一些概念进行了一些扩展:http : //bit.ly/1Q82rqT
对于那些不被公式中的许多希腊字母吓到的人,以下是我论文的摘录,其中每个术语均简要描述了反射率曲线:
为了轻松理解“偶极子理论”,我们首先要了解“偶极子理论”的来源。
它来自通过求解辐射传输方程(RTE)模拟参与介质中的光传输。
经典扩散近似通过仅考虑辐射度的一阶球面谐波展开来求解RTE。如果我们进一步假设源函数是无限均质介质中的单位幂各向同性点源,则可以得到经典的扩散格林函数(单极)。
渲染半透明材质时,可以方便地将这个问题重新公式化为类似于局部表面反射积分的形式。这导致了一个积分方程,该积分方程在所有入射位置和方向上计算入射光Li和BSSRDF S的卷积,计算出位置和方向上的输出辐射Lo。
现在,利用格林的扩散函数,我们不再考虑材料表面所施加的边界条件。对于介质内部的每个正源,可以通过在介质外部放置一个镜像的负源来简单地处理这些条件,以使通量在表面上方的外推距离处归零。这是偶极近似。
因此,在没有边界条件的情况下,我们的通量在介质中以体积表示。为了渲染次表面散射,我们必须计算在表面上留下不同点的光。为此,我们必须计算由于偶极引起的扩散剖面,以便评估注量在表面法线方向上的方向导数。
BSSRDF的最新进展来自将临时的体积和参与介质方法与临时性材料相结合,更好地考虑了表面边界条件。
至于..
BSSRDF模型仍然需要对表面附近点的半径进行积分以收集入射光。
是的,我们将入射光强度计与BSSRDF集成在所有入射位置和方向上。
现在,我们可以在这里采用蛮力法或用俄罗斯人的粗鲁掷镖法。但是它们都是幼稚的方法。
当开发一种近似方法以使用八叉树数据结构使用分层光收集功能时,SSS才投入生产(Pixar Renderman),在八叉树数据结构中烘烤漫射光照以在群集中可用以进行SSS计算。对于Renderman,这是自然的方法,因为REYES可以使REYES生成的每个微多边形都可以轻松地“散布”到一个点中并插入八叉树中。
第二波改进依赖于基于磁盘的重要性采样(Arnold),现在,对于许多SSS实现,它已成为事实上的方法。通常,我们定义一个搜索体积(球体),将样本分布在表面上方的磁盘上,然后沿法线方向和正交方向进行探测,以找到该体积内的所有命中点。