Maya教程:分析衰減深度帖圖陰影(2)
Section5
然后把聚光燈到兩個 locator 的距離連接到 plusMinusAverage Utility 節(jié)點上,并將此節(jié)點設(shè)為 Subtract 方式,這是一個將聚光燈到兩個 locator 的距離相減的工具,我們可以了解到兩個距離之差(注意這里是遵循矢量加減法則)。
這個距離上的差值將決定兩個 Ramp texture 節(jié)點如何影響 dmap shadow 的 Filter Size 和 Shadow Color。(圖06)
圖06
Section6
為了確定聚光燈到某個點的距離,必須使用 Light Info Utility 節(jié)點和 Sampler Info 節(jié)點,Light Info 節(jié)點與其他節(jié)點連接時能提供某個被渲染點的信息。
Light Info 與 Sampler Info 不同之處在于需要將一個燈光信息連接到 Light Info 上。你會注意到在渲染網(wǎng)絡(luò)中 dmapSoftShadow 聚光燈的 worldMatrix[0] 屬性連接到了 Light Info 節(jié)點的 worldMatrix 屬性上,它告訴了 Light Info 從場景中的什么地方計算輸出屬性 Sample Distance。
Sample Distance 是從聚光燈中心到某個被渲染點的距離。
注意:Light Info 節(jié)點在確定 Sample Distance 時十分有用。(圖07、圖08)
圖07
圖08
Section7
Section7 和 Section5 的方法類似,我們用另一個 plusMinusAverage 節(jié)點來確定 Sample Distance 和聚光燈到 startShadow locator 的距離差。為方便起見,這個差值命名為 sample point difference。(圖09)
圖09
Section8
上一步中得到的 sample point difference 是用來調(diào)整陰影的。如果這個值比較小,那么被渲染的點就離 startShadow locator 比較近。如果這個值比較大,那么被渲染的點就離 startShadow locator 比較遠(yuǎn)。
但是這個 sample point difference 地值可以是從0到一個很大的數(shù),這個無限的范圍不太適合用于 Ramp 節(jié)點 .Ramp 節(jié)點適合于0-1的范圍,為了解決這個問題,需要使用一些數(shù)學(xué)手段來把這個距離差值轉(zhuǎn)化到0-1的范圍內(nèi)。
我們把 Section5 中得到的聚光燈到 startShadow locator 和 endShadow locator 的距離之差稱為 total difference。
使用 Multiply Divid 節(jié)點,計算出 sample point difference 與 total difference 的比值。即 sample point difference 在 total difference 所占百分比。這樣就把 sample point difference 轉(zhuǎn)換到了0-1范圍內(nèi)。
注意:對于位預(yù) startShadow locator 與聚光燈之間和 endShadow locator 之外的點的返回值將不在0-1之間,我們將在下一個節(jié)點 Clamp 中調(diào)整,因此locator 的位置并不需要十分精確的位于陰影開始和結(jié)束的地方。我們可以以后在做調(diào)整。(圖10)
圖10