然后把聚光燈到兩個 locator 的距離連接到 plusminusaverage utility 節點上 . 并將此節點設為 subtract 方式 . 這是一個將聚光燈到兩個 locator 的距離相減的工具 . 我們可以了解到兩個距離之差 ( 注意這里是遵循矢量加減法則 )
這個距離上的差值將決定兩個 ramp texture 節點如何影響 dmap shadow 的 filter size 和 shadow color.
section6
為了確定聚光燈到某個點的距離 , 必須使用 light info utility 節點 . 和 sampler info 節點相似 ,light info 節點與其他節點連接時能提供某個被渲染點的信息 .
light info 與 sampler info 不同之處在于需要將一個燈光信息連接到 light info 上 . 你會注意到在渲染網絡中 dmapsoftshadow 聚光燈的 worldmatrix[0] 屬性連接到了 light info 節點的 worldmatrix 屬性上 . 它告訴了 light info 從場景中的什么地方計算輸出屬性 sample distance.
sample distance 是從聚光燈中心到某個被渲染點的距離 .
注意 :light info 節點在確定 sample distance 時十分有用 .
section7 和 section5 的方法類似 , 我們用另一個 plusminusaverage 節點來確定 sample distance 和聚光燈到 startshadow locator 的距離差 . 為方便起見 , 這個差值命名為 sample point difference.
section8
上一步中得到的 sample point difference 是用來調整陰影的 . 如果這個值比較小 , 那么被渲染的點就離 startshadow locator 比較近 . 如果這個值比較大 , 那么被渲染的點就離 startshadow locator 比較遠 .
但是這個 sample point difference 地值可以是從 0 到一個很大的數 . 這個無限的范圍不太適合用于 ramp 節點 .ramp 節點適合于 0-1 的范圍 . 為了解決這個問題 , 需要使用一些數學手段來把這個距離差值轉化到 0-1 的范圍內 .
我們把 section5 中得到的聚光燈到 startshadow locator 和 endshadow locator 的距離之差稱為 total difference.
使用 multiply divid 節點 , 計算出 sample point difference 與 total difference 的比值 . 即 sample point difference 在 total difference 所占百分比 . 這樣就把 sample point difference 轉換到了 0-1 范圍內 .
注意 : 對于位預 startshadow locator 與聚光燈之間和 endshadow locator 之外的點的返回值將不在 0-1 之間 . 我們將在下一個節點 clamp 中調整 . 因此 locator 的位置并不需要十分精確的位于陰影開始和結束的地方 . 我們可以以后在做調整 .
新聞熱點
疑難解答