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 = h 是入射角度,η`·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因素而不是菲涅爾因素上近似偏心率效果,限制了能量分布的數量的精度。我們的模型用最簡單的方式解釋了與外觀現象一致的表面粗糙度的效果和鱗屑角度的效果。這些表面特性的真實效果十分復雜,並且依賴與散射的幾何體。這些效果的更精確的模型會導致一個掠射角更精確的散射模型。
我們的分析應用到很多種的透明纖維,所以這對渲染動物毛發,假發或皮毛和各種布料有所啟發。