【Marschner模型】Light Scattering from Human Hair Fibers人类头发纤维的光照散射

Marschner模型源自SIGGRAPH2003《Light Scattering from Human Hair Fibers》论文,也就是本文的标题。

Marschner模型是除Kajiya-Kay模型外另一个应用广泛的头发着色模型。在基于物理的头发渲染领域,Marschner模型处于指导地位。比如Unreal Engine 4中的头发渲染(首先在《Paragon》中实现)便采用了Marschner模型。所以,在开始分析Unreal Engine 4中的头发渲染之前,需要对Marschner模型有个清晰的认知。

Kajiya-Kay模型

上篇《GDC2004头发渲染和着色》的文章已经详细的推导了Kajiya-Kay模型,所以这里简略总结一点它的特点。

Kajiya-Kay模型,是经典的现象学模型,也就是经验模型。它是设计用于表现一个头发纤维最明显的散射特点的模型。在Kajiya-Kay模型中,头发纤维被抽象化为一个不透明的圆柱体,不能够透射和产生内部反射。因此,Kajiya-Kay模型不能表现一些肉眼观察到的头发效果,同时也是能量不守恒的。而Marschner模型则是基于对头发纤维的物理分析,归纳推导出来的模型。

头发纤维

👆图1是电子显微镜下头发纤维的结构

头发是一种电介质材质。金色,褐色,红色或者其他光色的头发是十分透明的(黑色除外),因此Marschner模型和Kajiya-Kay模型不同的一点就是,Marschner模型将头发纤维抽象为一个透明的椭圆柱体。

人类的头发纤维主要是两部分结构:角质层和皮层。

角质层包裹在皮层外面,虽然薄但对于光照的散射十分重要,因为它隔开了空气和皮层。光线有的角质层产生直接反射,有的透射角质层进入皮层,有的又从皮层透过角质层反射出去。

皮层组成了头发纤维的体积,在皮层的中心是髓质。皮层和髓质的色素决定了头发的颜色。

Marschner模型将头发纤维抽象成一个电介质圆柱体覆盖着排布的鳞屑和一个有色的内部。

光路和现象

👆图2是Marschner模型的抽象结构和光路

光线打在头发纤维上,发生了复杂的变化,但是根据头发表现的观察,有三个最重要的光路。

反射光路R:光线到达头发纤维角质层直接被反射。

透射-反射-透射光路TRT:光线透射角质层进入皮层,角质层内层折射,又透射到空气中。可以知道,出射点距离入射点已经产生了偏移。

透射-透射光路TT:光线透射进入皮层,又从中直接透射出去。出射点在入射点的背面。

这三条光路也表现了头发的三个显著的特征。

主要镜面反射高光:表面反射形成。来自R光路,光线到达头发纤维角质层直接反射,表现为颜色为光线颜色的集中镜面反射高光。

次要镜面反射高光:内部反射形成。来自TRT光路,光线到透射到角质层进入皮层,经过角质层内侧反射出去的光线,因为光线在皮层(有色)产生了散射,所以射出的光线同样是有色的。

透光:透射形成。来自TT光路,光线直接穿透头发纤维,形成部分透明效果。

根据Marschner模型的抽象结构和光路可以得知,R和TRT的光路的反射角度与理想的镜面反射角度2α有偏移。重要的是,他们向对立的方向偏移(下文分析),这是产生两个视觉上可分辨的镜面反射高光的原因。主要镜面反射高光是表面反射产生的,为白色(光色)。次要镜面反射高光因为光线穿过头发纤维内部的色素,是有色的。

虽然Marschner模型提取了三种光路涵盖了头发的主要特征表现,但是也不能忽略其余的光路,比如TRT外还有TRRT……一些游戏渲染实现会对这部分进行模拟补偿。

数学分析

在论文中,采用了两个光学属性,一个是头发纤维内部的折射率近似为1.55,另一个是头发内部的横截面吸收率,近似为在纤维中统一均匀分布。

👆图3是散射几何体的符号

在进行数学分析之前,我们需要了解椭圆的数学和光的物理知识(散射/反射/折射,辐射度/辐照度),这些可以参考WIKI。除此之外,还有论文中公式与图示出现的一些符号的设定:

1.头发的切线向量u,从发根Root指向发梢Tip。

2.向量v和向量w组成了一个的右手正交基底,同时将v-w平面作为法向平面。并且设定【如果纤维的横截面是椭圆的,那么v是长轴,w是短轴。】

3.光照的方向是ωi,计算或测量的散射光方向是ωr【注意:测量的方向就是摄像机方向】,ωi&ωr从中心向外射出。使用球面坐标表示ωiωr与法向平面的倾斜角表示为θi和θr(设定0º垂直于头发/位于法向平面,90º为切线u,-90º为-u)。与头发的方位角表示为φi和φr(v为0º,w为90º)。

4.我们也有几个推导的角度。位差角(θr-θi)/2为θd,相对方位φr-φi表示为φ。半角(θi+θr)/2为θh,(φi+φr)/2为φh。

纤维的双向散射函数S和表面的双向反射分布函数BRDF不同,尽管他们的物理单位相同。对于入射和反射的光照我们使用曲线辐照度或者单位长度能量、曲线强度或单位长度强度来表示。这些单位和表面上的辐照度/单位面积能量和辐射度/单位面积强度相似。

双向散射函数中的“双向”和BRDF也有区别,分别是光照的方向ωi,散射反向ωr而不是反射方向。

双向散射函数的公式

 是无穷小长度纤维散射的曲线强度。是纤维上这一部分的曲线辐照度。辐照度与入射的辐射度是成比例的。

曲线辐照度的公式

是纤维的直径(对于一个椭圆横切面的纤维,直径取决于φi)。辐照度的测量范围是是沿着头发纤维无穷小的一段弧长。

 根据上面的双向散射函数和曲线辐照度的公式,我们可以给出散射积分的定义:

可以注意到,与表面积分只进行(上)半球积分不同的是,散射积分是整个球面计算积分的。的存在也说明了,粗的头发纤维会截断更多的光,因此在一段距离观察比细的纤维看起来更亮

数据测量与分析

目的是对头发的现象提供定性和定量的理解,最后使用一个散射模型来解释。

实验方法:使用狭窄的光束照亮一根头发,使用基于四周测角仪的设备在不同的方向测量散射光。在样品的任意方向放置一个光源和CCD摄像机。我们使用一束聚焦光只照明头发的一小段长度,大约1-2cm。被照亮的这一段确定了测量头发的长度,这减少了头发长度变化对测量结果的影响。

2D的平面测量包括入射面测量和法向平面测量。

 入射面测量

即散射函数的2D切片,光源,测量仪器和头发纤维共面。

光束的入射角为45°,在各个方向测量散射值。我们进行了两次测量,一次从发根到入射光的角度为45°(θi=-45°),一次发梢到入射光的角度为45°(θi=45°)。每次测量都以可见光波长范围内三个色相带R/G/B表示。请注意,每张图入射角附近的小间隙是由于摄像机遮挡了入射光造成的。

测试的头发为黑发Black hair,金发Blond hair和假发Synthetic。

👆图4为入射平面的散射值测量结果。每列为不同的头发样本,每行为不同的光线入射角,头发方向为发根——发梢。

观察结果:

1.散射函数中最显著的特性是镜面反射的高光近似产生在θr=-θi时。对于假发来说,高光恰好在镜面反射蓝色线段的方向上,但是对于真发来说,不管光照方向,高光均在向发根偏移6-10度的方向上产生。

2.金发的瓣(色相带)存在颜色相关的不对称性(RGB不重合),有一个副瓣比起主要高光看起来更接近镜面反射方向。漫反射的背景使得金发拥有更大更鲜艳的颜色。在其他的测量中,我们依然观察到有次要的高光(除了黑发),但是强度和宽度相当的不同。

 

为了研究散射函数在入射面上θr和θi的影响,我们为一根金色的头发纤维做了第二个测量。这个测量是使用θh(θi+θr)/2θd(θr-θi)/2作为参数的。每一次的扫描都是使光源和摄像机固定,从而保持θd不变,旋转头发(w为旋转轴)来变化θh。

说明:以w为旋转轴旋转,会使坐标系发生变化。在这样的旋转下,散射方向和入射方向的差值不会改变,但是半角会根据坐标系的旋转而改变。

👆图5为金发的测量结果。光源和摄像机保持固定,每张图θd不变,θh变化。红蓝线表示对应色光的波长。实线和虚线是两个方向相反的测量合并以扩展仪器的范围。

个人分析:θh=0°为镜面反射的方向(说明入射方向和散射方向的倾斜角互为相反数),<0°的区域为向发根偏移(主要高光),>0°的区域为向发梢偏移(次要高光)。

观察结果:

1.在这些图中,主要和次要的高光都是可以观察到的(两个波峰),在θh=0°的两边,与镜面反射的方向相对应。

2.在这个配置中的头发在大多数的角度中有个非常强的次要高光(θh>0°),比起主要高光强。

3.随着散射角度增加(θh=5°-15°-30°),次要高光逐渐减弱,主要高光维持不变幅度。两者的峰值都保持近似的一个常量宽度。

4.在较高的角度上(如θd=70°),主要高光锐利的峰顶十分接近镜面反射方向(0°),即等角峰顶equal-angle peak

 法向面测量

目的是理解散射函数完整的3D复杂度,特别是次要高光。光源和摄像机所在平面的方向近似与纤维垂直,即与符号图的法向面重合。在这个平面中,方位角φi和φr都是独立变化的。

为了更精确的测量,入射方向在法向平面中,但是散射方向在θr=10°的圆椎体中。这是因为我们已经观察到纤维的倾斜鳞片会造成高光的偏移,如果精确在法向平面,会阻止我们观察到次要高光。

我们只展示红色波长的结果,因为在上面的测量中,次要高光中的红色波长最明显。

👆图6是法向平面使用大量不同偏心率的金发进行散射的测量结果。所有的图示中,光照均位于右侧。绿色的椭圆表示头发的方向,黑色的实线是测量的结果,绿色的不规则区域是头发着色模型上蒙特卡洛散射模拟结果。

观察结果:

1.头发纤维有两个明亮的超出平面的峰值,纤维之间峰值的强度和φ位置均不相同。我们根据它产生的视觉效果称之为“闪烁”。

2.明亮的闪烁出现的位置和强度与头发的方向有关,即一个关于φi的函数。同时我们可以观察到,头发不是旋转对称但是图示中有两种对称性存在。一个是φi的180°的旋转对称(φi旋转180°测量的结果相似),另一个是负的φi和φ对称(垂直方向对称)。所以,头发是一个旋转180度对称,且在横截面上是左右对称的。

3.当闪烁模式是关于入射平面(φi=0)对称的,它看起来像是由于在圆形横切面的球体或者圆柱体折射导致的焦散的形成。一般来说,峰值的形成是因为纤维旋转与来自一个透明椭圆柱体的内部反射相似。来自相同个体的另外一根纤维的微观检查显示它的偏心率为0.7:1。

入射角与闪烁的变化测量

当改变入射角的时候,将次要高光作为φ的函数来检验是很有意义的。这展示了随着头发对光源的倾角的改变,闪烁是否以及如何改变。

实验步骤:将光源和摄像机放在法向平面的两边近似等于入射的角度θ。保持光源固定,依靠摄像机沿着他的椎体扫描测量φ。

在之前的测量一样,摄像机需要比起光源来说稍微朝向发梢,以观察到最大的闪光强度,所以当我们改变θi的时候,依然保持θi+θr=10°。

注意:这是3D的测量。

👆图7为在接近圆的头发上,入射角与闪烁的变化。对于每个θi,当相机沿着镜面反射椎体扫描的时候,光源是固定的。虚线为着色模型的质量上的匹配结果。

观察结果:

1.闪烁发生的方位随着入射角的函数变化,随着入射从法向移动到掠射,闪烁向入射平面(φ=0°)移动。他们在θi=60°附近合并

2.这样的合并变化是圆柱体内部反射形成的焦散的特征,纤维测量的偏心率近似为0.8:1。

半球散射测量

半球散射测量通过和θr一样变化φr扩展了1D的入射平面测量,所以散射的方向在一整个半球的范围内变化。对于一个固定的入射方向,这是一个完整的散射函数的测量(或者是散射函数的一半,满足给出的双边对称性——如果我们不允许φi改变的话,一个合理的假设)。

 👆图8是一个固定入射方向(45°)的半球散射分布测量。主要高光,次要高光,透射分量均可明显观察到。

观察结果:

1.主要镜面反射高光出现在θr=40°,明显的次要高光出现在约50°-80°。

2.在不同的曲线间对比,主要高光维持一个相对固定的幅度并且偏离镜面反射椎体(图示中的蓝线——看起来更像紫色)。次要高光越来越强,峰值出现在30°,然后消失。

3.散射函数的前向散射(相对于入射方向,散射角小于90°)的部分,在较低的轴上有更大的范围,被一个没有明显的偏离镜面反射锥体的强前向散射的分量所控制。

总结

在经过上述的一系列测量之后,我们重新做一个总结:

R:主要镜面反射的峰值朝向发根偏移。这个偏移假设是由于头发纤维上鳞片倾斜造成的。

TT:来自浅色头发的强的前向散射分量。这使得当从光背面照射的时候,金、褐、灰、和白发看起来十分明亮。

TRT:一个有色的次要高光峰值自白色的主要镜面反射峰值向着发梢偏移。在一头浓发中,这造成了次要镜面高光在主要镜面反射高光上面比较明显,有时会看起来像主要高光的有色的边缘而不是单独的特性。次要高光作为φ的函数变化,它通常包含两个峰值或者闪光。峰值的位置取决于入射的角度,并且随着θ增大他们汇聚在入射平面。对于头发来说,横截面不是圆形,闪光的强度和位置绝大部分取决于头发沿着它的轴的旋转角度,这给了头发众不同的闪闪发光的表现。次要镜面反射的能量绝大多数包含在两个闪烁之中。

相关理论

反射轨迹——圆柱体纤维反射和折射的几何结构

圆柱体纤维的法线向量集合位于一个与纤维轴垂直的平面上,这个平面称为法向平面(normal plane)。使用一个单位球可以轻松的形象化几何结构。单位球上的每一个点代表一个不同的方向。在这个球上,纤维的轴位于北极,而法线向量的集合位于赤道。

为了分析一个给出的入射方向vi的反射,考虑一个特别的表面法线n,和对应的反射向量vr。反射定律表明vi,n,vr是共面的,并且n·vi=n·vr。通过发现相似三角形,反射规则也强制vi和来自赤道的vr的距离相等。等距离的条件对于任意的反射向量均成立。因此,对于给定的入射方向的反射向量集合组成必须位于一个固定高度的水平圆上,和vi一样与赤道的距离是相同的。这是对已知结果的正式证明,在3D中,来自一个圆柱体的反射集合组成了一个圆锥。

b与前一个图像类似,但是展示的是折射方向。折射的规则(Snell定律)和反射是相似的。首先,vi,n和vt是共面的。第二,Snell定律说明ηsinθt=sinθi,并且使用相似三角形,这个定律暗示到赤道的垂直距离hi和ht的比率也是η。这意味着透射的向量全都位于一个圆上,这是比vi更靠近赤道的一个η的因素。

通过相同的论据,在离开圆柱的过程中再次折射的射线也遵循等距离的条件。此外,内部反射和外部反射并没有什么不同。这个结论是所有的射线离开一个圆柱的纤维会位于反射射线一样的圆锥体上。

布拉韦率Bravais index

圆柱体的纤维是沿着轴扫描一个横截面组成的。布拉韦已经展示了3D圆柱纤维的光学可以被降低到它的横截面的2D分解。入射方向首先投影到横截面平面,之后在2D中反射和折射。然而,为了在2D中正确的物理建模,折射率必须作为入射角的函数被改变。布拉韦定律经常被用于分析通过晶体的折射。

c展示了穿过水平表面的折射的几何结构。方向vi被折射到方向vt。为了降低它为一个2D的问题,向量vi和vt被投影到包含法线的垂直平面上。投影的向量被标为vi`和vt`。目的是为了找到一个有效折射率η`,如此如果vi`在边界被折射,它就会产生vt`。首先注意到Snell定律表明sinθi=ηsinθt。那么,vi在水平面投影的长度是vt投影长度的η倍。因为vi和vt位于一个平面,在水平面展示的两个三角形是相似的。左边三角形的每条边的长度是右边三角形对应边长度的η倍。再者,垂直的法线平面遵循Snell定律。这里,sinθi`=η`sinθt`。但是当γ是入射向量和它在法向平面上投影之间的角的时候,sinθi`=sinθicosγ。同样的,当δ是透射向量和它在法向平面上投影之间的角的时候,sinθt`=sinθtcosδ。代入,得到sinθicosγ=η`sinθtcosδ,并且等式代入Snell定律可以得到ηcosγ=η`cosδ,相当于:

这个的应用的是,对于一个入射射线与投影平面有夹角γ,我们可以计算使用Snell定律但是代入有效折射率η`的来自入射方向投影的折射方向投影。

接触面的菲涅尔投影可以用相似的方式计算。对于平行的分量,根据菲涅尔公式,可以很直接的证明斜入射的因素可以通过使用η`的反射和第二个指数的垂直分量的投影角计算:

我们对这个轻微的广义菲涅尔将使用标记F(η`,η``,γ)。

圆柱体的散射——基于表面光滑的圆柱体

性质1:一束以特定轴倾角进入电介质圆柱体的射线,总是以相同的倾角离开,不论它的经历的反射和折射的先后顺序。

这说明了一束来自与方向ωi平行的入射射线,将会产生一个散射射线的集合,散射射线的方向均位于以纤维的轴为中心的椎体上并且包含-ωi。头发内部折射的方向也在锥体内。因为散射只在θi=-θr时发生有效的将散射方程从4D降低到3D(减少一个参数)当然,这个等式只圆柱体表面粗糙的时候成立,并且它需要假设圆柱体内没有体积散射发生。

性质2:散射分布在φr的依赖可以通过只检查在与头发垂直的平面的投影分析。

可以知道R分量可以只通过投影计算——入射和反射向量如同3D空间一样,是关于在投影的表面法线对称的,所以来自3D圆柱体的镜面反射在投影上依然保持镜面反射。这对于折射来说也是一样成立的,也是Bravais定律的结论,表明了如果在电介质表面交界的入射和透射向量投影到一个包含表面法线的平面,投影后的向量依然遵循Snell定律,但是折射率η被η`(η,θ)>η代替。注意η`只取决于入射光线超出投影平面的倾角θ,与投影平面的角度无关。因此,我们知道所有来自特定入射方向的射线保持与法线平面相同的的倾角。对任意折射率在法线平面一个2D的分析足够描述3D散射方程。

这两条性质允许我们将平滑的圆柱体的任意横截面散射方程写为:

第一个因子表示散射只发生在镜面反射锥体中,第二个因子N表示方位角的散射函数;pow(cosθ,2)说明镜面反射椎体投影的立体角。我们简单的用θ来强调θi=θr。因为θ只是间接通过η`影响N,我们可以使用一个2D分析独立推导N。在下一章,我们将会归纳这个表达式为:

 

我们会为θ考虑一个更复杂的依赖,我们会引用M作为纵向散射方程。

圆柱体横截面的散射

我们假设一个圆形的横截面来推导N。根据圆的对称性,N只依赖φ,φiφr的差值,所以2D的方位角散射函数更进一步降低到1D,在这一点,我们用一个角度参数来写N。来自一个电介质圆形的散射已经有过深入研究,Descartes在解释阵雨的彩虹形成 第一次分析它。
注意这有效的折射率η`是一个下面整个讨论提到的参数,因此,为了清晰起见,当它没有被讨论时,它是一个隐式参数。我们可以通过当射线折射通过一个圆形射线追踪确定远场强度。考虑一个射线入射一个单位圆,并且中心偏移-1<h<1。角度sinγi = 是入射角度,η`·sinγh是折射射线的角度,通过跟随一个射线进入一个圆形随着它折射和反射,我们可以计算这个离开的角度φ(h)。

  👆图9是圆形横截面散射的几何结构

从上图中我们可以得知,当入射光线进入这个圆形的时候偏离γt-γi,每一次内部反射偏离pi+2γt,当它离开的时候偏离γt-γi,总体

为:

p是内部路径的段数。这个表达式包含我们所有感兴趣的三个散射模型。对于不同的p值,表面反射R(p=0),折射透射TT(p=1),并且内部反射TR(p=2),对于剩下的分解,我们忽略p>2的项。

上面的射线追踪计算以h为参数。然而,对于散射计算,我们经常需要找到对于给出的方向θ上的散射有贡献的所有路径。通过解函数φ(p,h)-φ=0的根得到这些路径h的值。我们使用函数h(p,r,φ)表示这些根,r的不同值表示不同的根。在p=0和p=1的情况下,只有一个根,因此只有一条的路径。但是对于p=2的情况,这可能有一个或三个根因此表示有一条或三条路径。

因为函数φ是平滑的,来自一条到三条离开的射线的透射表示一个在φ(2,h)折叠,h0,并且这个折痕在dφ/dh=0的时候出现。笛卡尔第一个展示了这个折痕发生的时机:

这个表达式是对称的,并且预示存在两个对称的极限。

 注意,我们有表达式φ(p,h)来关联φ和h,通过使用能量守恒定律我们可以计算散射光的强度。当以曲线辐照度E照亮一个纤维,统一的辐照度E(h)=E/2在横截面其宽度上衰减。暂时搁置衰减。入射光束来自一个小的间隔dh的能量被散射到一个出射强度分布上的dφ角度积分的(见上图)。

 

或者

这个等式说明在函数φ的折痕处强度趋于无穷,这个强度奇点称之为焦散。

在这个圆的圆柱体的案例中,这一对的焦散产生了散射。因为在圆柱体布拉维指数η`随着θ增加,随着入射光线越来越向头发倾斜,这两个焦散向接近平面方向移动。当η`达到2的时候,焦散不再形成。这个焦散合并转换可以在图6测量中观察到。

吸收和反射的衰减

在这一节我们增加了纤维内部体积吸收和交互面的菲涅尔反射的条件。

对于吸收,我们需要知道纤维内部的路径长度。对图9的三角形应用余弦定律得到2+2cos(2γt)倍头发半径的每一个内部路径段的长度。σa为单位长度的体积吸收,单位长度定义为头发的半径。之后头发内部的每一个p片段贡献了一个对于吸收因素T(σa,h)=exp(-2σa(1+cos(2γt)))。

现在我们可以在一条路径贡献的强度之前引入一个衰减因素

就如同Bravais 定律使得法向-入射几何体因素对倾斜入射有作用一样,我们可以通过改变参数将倾斜入射简化概括为A。附录B展示了使用常用的菲涅尔公式+两个可见的折射率η`(θ)和η``(θ)来计算正确的菲涅尔项。相似的,因为所有的内部路径片段有对于轴相同的倾斜θt,他们通过一个1/cosθt因子延长,所以将σa替换为σ`a(θ)=σa/cosθt完成到3D概括:

完整的法向平面散射方程:

和除以不同类型(p)的包括多个根(r)的所有路径。

总结

本章提出了预估一束定向光束的光将会被散射到一个完美的椎体并且椎体周围的分布是三个独特的散射模型的和的理论。这导致了我们新的散射模型是下面的形式:

这个等式根据等式2推导而来,但是包含了一些概括,这将容许我们在下一节中引入几个有用的近似。三个项MR,MTT,MTRT是三个不同的纵向散射函数。他们允许三种模型模拟不同的角质层鳞屑。三个项NR,NTT,NTRT是三个方位散射函数的模型。前两个是:

是等式8直接定义的,计算NTRT会在下一章更详细的讨论。函数η*让NTRT的有效折射率取决于φh,这给出了在下一章展示的椭圆横截面的近似。

注意只有角度θd,φ,θhφh出现在等式9的右手侧,用总数以及差值来书写Ms和Ns,以这种方式强调S的自然地对称性,并且更容易得知模型是相反的。

着色模型

 这章我们扩展之前章节的结论到适合整合进渲染器中的一个完整的,实用的模型。为此我们为纵向散射分布函数引入了一个经验主义的函数,这是平滑的圆柱体不能验证的理论。我们也描述了我们在表面粗糙度存在的情况下计算NTRT和h(p,r,φ)的近似用于计算NR,NTT,NTRT的方式。最后,我们引入了一个可信的参数用于控制模型。

知道这章给出模型的目的是捕获渲染中十分重要的现象是很重要的。这个模型的组成和基本的能量分布来自在之前章节展示的理论,但是有许多的细节是简单分析所不及的,这些我们从经验上弥补。

纵向散射函数M

 光滑圆柱体的分析表明反射的光线会精确的保持在一个镜面反射圆锥体内。我们的头发模型包括两个造成这个表现的偏差的特性。首先,接触面是粗糙的。光线通过圆柱体传播的时候,粗糙度会导致他们的方向从模型计算的方向随机偏离。整体效果为模糊了散射分布,不同的散射模型的模糊程度不同。第二,角质层的鳞屑造成了和理想的圆柱体表面相比法线的倾斜,这造成了散射的瓣(lobe)不在镜面反射圆锥体的中心。

图一表明了我们可以期待的瓣偏移的位置,R模式向偏向发根2α角度位移,TRT向远离发梢很远的地方位移,TT是向发梢位移,我们通过偏移每个瓣不同M的平均值近似鳞屑效果。

这里g(β,x)是一个单位积分,宽度为β的平均值0的lobe函数。在我们的实现中,使用一个标准差为β的标准化的高斯函数。

方位散射函数N

在这一节,我们介绍方位散射函数的三个近似。第一个,解决路径的有效方法;第二个,次要高光的现象模型;第三个,闪烁的简化模型。

1.路径解决

为了找到一个通过圆形的路径,我们必须解出等式3的值或者h(p,r,φ)的值,结果为散射角φ。因为φ的公式遵循Snell定律并且因为arcsine,对于h的精确解从计算来看是很耗费的。

为了简化角度的依赖,我们用一个在+/-90°上符合精确表达式的值和倒数的立方体的多项式来近似Snell定律:

这里c=sin(1/η`)^(-1),在这个表达式γ用弧度表示。最大的近似误差在η>1.5时小于0.75°。

使用这个近似,φ是γi中的一个立方:

等式的根从容易构建h的γi给出(?)。对于R和TT的情况,总是有一个根,然而TRT会有一个或者三个根。

2.TRT近似

 我们的理论是基于光滑表面的,预测到TRT分量中的焦散在无限强度的S中产生了奇点。因为这是一个不现实的,特别是存在表面粗糙度的情况下,我们从NTRT中移除焦散并且在焦散位置的中心使用一个光滑的lobe代替。因为粗糙度lobe的宽度模拟了焦散的模糊。

在这焦散出现的角度φc被定义的时候,可以根据笛卡尔公式计算,但是对于经过焦散合并的入射角它没有定义。为了保持连续性,我们在φc=0的时候继续插入焦散并且在合并后的短入射角度范围内,将其平滑地淡出。通过给出用来计算的程序精确的描述这个分量很简单:

在这个程序中,我们通过使用(dφ/dh)^2来判断在h中φc的映射wc的间隔尺寸Δh粗糙的近似了能量。这limitΔhM是必要的,因为在焦散合并处(dφ/dh)^2趋向于0。函数smoothstep(a,b,x)是对于x<a为1,x>b为0,并且在其中平滑。

对于这个方程式,使用者可调整的参数是wc,kG是焦散的模糊宽度,kg是一个调整闪烁的强度的因子,Δη`是η`在合并后在它上面消退焦散的范围,ΔhM,是在焦散能量上的极限。

3.偏心率近似

一旦纤维的横截面是椭圆而不是圆,那么N的简单分析解决方案便不可用了。然而,TRT的表现是受轻度偏心率显著影响的:在这焦散出现的角度φc在a=0.85到a=1/0.85的范围上+/-100°的改变。因为在这个范围内的偏心率十分普遍,在TRT分量上近似偏心率的效果很重要。我们通过使用等式9中的函数η*来完成这个目标。

从质量上说,改变折射率和改变偏心率有相似的效果。在TRT分量中简单分析这种关系的一个例子是在主轴上对称的近轴路径(paraxial path)。对于这些路径 φi=-φr,并且反射在主轴上发生。如果γt`是在内部反射中的入射角,那么可以这么表示:

我们可以通过圆形模型中的折射率η*=2(a^2)*(η-1)-η+2使用这个第一顺序的近似来粗糙的匹配圆形模型到椭圆的表现。

这给出了我们当φh对准主轴之一的时候,散射函数的TRT分量如何改变轻微偏心率的近似。为了将这个近似合并到实用模型中,对于所有φh的中间值,我们简单插值正弦曲线来定义η*:

正如等式9所展示的,我们简单的传递折射率η*到代码中,使用在圆形案例中推导的公式模拟偏心率。

总结

我们已经解释了等式9中展示的所有项。这三个纵向散射分布函数MR,MTT,MTRT是高斯分布的。方位角散射函数NR,NTT,NTRT是直接从等式8中求得的,使用等式10来计算h。方位角散射函数NTRT是首先用折射率η*使用等式8和等式10计算,在h可能的多个值上求和,然后通过上一节的程序平滑焦散来修改。

依靠渲染器的类型,在实际应用中包含少量的漫反射可能会有所帮助。尽管我们的模型不包括一个漫反射的分量,可以轻易地通过在等式9中引入一个常量项MD来增加漫反射。

下表为引用的模型参数的集合

验证

我们提供了证据来证明我们的设想的头发结构是合理的,并且从质量上,着色模型也可以再现我们在测量中观察到的表现。

根据测量结果来验证头发结构模型。在图6中法向平面测量,很好的表明了闪烁与一个椭圆柱体的头发模型表现完全的一致。为了展示它,对于这个个体,因为TRT模式在这个粗糙椭圆柱体中偏心率与测量值匹配,我们使用了蒙特卡洛程序来计算散射。图示表明了这个用物理实验结果标绘的数值实验的结果。在峰值的角度和强度变化的匹配都是显著的,对于闪烁作为内部散射焦散的解释和头发横截面为椭圆的模型提供了清楚的证据。课题真实的数据包括一些贡献来自其他的散射模型,在正向散射中十分明显,是TRT模型没有贡献的。

  👆图10是着色模型的图是,使用和图4相同的几何条件,参数调整的匹配金发

根据测量结果来验证着色模型。为了从质量上证明我们的着色模型符合真实头发表现的能力,我们设置参数去适应之前的两个测量。在图10中,我们展示了一个调整的表现像入射面测量的金发模型的图示。注意小的偏lobe和朝向掠角的宽的lobe都能够表现出来。

在图6的测量展示了一个随着倾角改变的焦散合并。着色模型用沿着数据周围的虚线表示,用一系列的参数表示这个更轻度偏心的头发。质量上,两个闪烁合并和消失的表现符合。

渲染

我们实现了之前章节描述的着色模型,并且从程序化生成的头发纤维组件用它来模拟光照反射。我们使用了商业渲染软件来进行头发建模,每一个模型包括50,000到100,000的样条曲线,对应人类头发的平均数量。每个纤维的着色参数是常数,但是在一些情况下(下面说明)我们使用一个头皮上的噪波函数来分配每个纤维的随机的吸收。椭圆纤维的方位角方向是来自纤维与纤维之间随机的,但是沿着每个纤维平滑。所有的渲染都是η=1.55,并且ΔhM=0.5。.参数αTT和αTRT是从αR定义的,按照表1中推荐的比率。

我们使用光线追踪来渲染图像,解释头发之间的遮挡和阴影但是不是多重散射。我们以永远面向射线的方向平的带状表现头发,宽度等于头发的直径。这比使用圆柱体更高效,并且因为我们的散射函数把低于线级别的所有交互都抽象出来了,这是恰当的。

在接下来的结果中,射线交互控制计算所以尽管我们的模型大体上比起Kajiya的十分简单的模型计算更昂贵,但渲染时间的增加是适度的。

第一组渲染的灵感来自于图11所示的照片。因为头发被结合到一个相对平的表面,次要高光是相当显著的。有少量的漫反射,从头发的顶部和底部的黑色表现就可以看出这一点。

我们构建了一个理想的几何体模型来粗糙的匹配头发的整体形状,没有尝试去重现的纤维的正确放置。在图12中我们可以看到,这个模型使用为轻微椭圆褐色头发的近似设置来渲染。在相同的光照使用Kajiya模型渲染相同模型的结果也用于对比展示。需要提供一个整体的褐色的漫反射模型不能够充分的预测发生在真实头发的着色变化,这里的褐色来自次要高光。相同的程序化颜色变化也在图12展示出来;来自建议模型的额外的贴图是由于偏心率。为了表明模型的组件和偏心率的效果,图14展示了两个独立的高光和其余参数均为常数的圆形与椭圆头发的对比。

为了更远的证明模型的能力,在图15我们包括了变化光照方向的额外的结果,在图13包含了复杂的光照。

总结

在本论文中,我们聚焦于现实中,理论上以及渲染实际中来自人类头发的光照散射。我们的测量展示了独立头发纤维的散射表现与我们之前在着色模型中假设的相当的不同。电介质圆柱的散射理论解释了这些不同的来源:并且我们展示了补货相关可见效果的着色模型,在实际中,渲染使用的可调整的模型。

这个工作最重要的影响是头发的真实渲染需要解释发生在圆柱体的多个散射模型。颜色主要来自漫散射的标准假设在纤维的实例中证据不支持,并且我们的图像展示了这个假设限制了当前头发着色模型的结果的质量。

我们介绍的着色模型在未来的研究中可能会更精确。提升的两条途径是偏心率和表面粗糙度。为了让我们精确的建模更多类型的头发,处理更极端的来自圆状的偏差十分有帮助。同样的,当前模型在射线modular因素而不是菲涅尔因素上近似偏心率效果,限制了能量分布的数量的精度。我们的模型用最简单的方式解释了与外观现象一致的表面粗糙度的效果和鳞屑角度的效果。这些表面特性的真实效果十分复杂,并且依赖与散射的几何体。这些效果的更精确的模型会导致一个掠射角更精确的散射模型。

我们的分析应用到很多种的透明纤维,所以这对渲染动物毛发,假发或皮毛和各种布料有所启发。

posted @ 2017-09-11 17:50  JaffHan  阅读(4295)  评论(0编辑  收藏  举报