模擬光線追蹤陰影?

這篇教程用MAYA模擬光線追蹤陰影,教程難度不大,屬於比較基礎的燈光教程。轉發過來和廣大的朋友們一起學習了,先來看看最終的效果圖:

模擬光線追蹤陰影

製作原理

在用Maya預設渲染器渲染投影的時候,我們可以設定兩種陰影型別,分別是Depth Map Shadow 和Raytrace Shadow,Raytrace Shadow 是基於真實的光學物理運算得到的,但是計算速度很慢,Depth Map Shadow雖然渲染速度很快,但是不能很好的表現體積光源投射的陰影,比如一盞面光燈的陰影。

我們觀察這樣的陰影有其獨特的特性,即從物體和地面的接觸點開始,陰影是由實到虛變化的,如下圖所示,我們可以看出兩種陰影的明顯區別。這個教學介紹一種可以用Depth Map Shadow方式來模擬真實陰影變化的方法

模擬光線追蹤陰影

步驟/方法

開啟場景,或者我們參考上圖製作一個相似的場景。分別在三個關鍵位置建立三個Locator,如圖命名為Lightlocator、Startshadow和Endshadow,分別代表燈光的空間位置、陰影的開始位置和陰影的結束位置

模擬光線追蹤陰影

將三個Locator用滑鼠中鍵從Outliner視窗拖至Hypershade視窗中,同時建立兩個DistanceBetween節點,如圖連結,以計算射燈和兩個Locator的距離值

模擬光線追蹤陰影

繼續建立PlusMinusAverage和MultiplyDivide兩個節點,利用PlusMinusAverage求上圖中1和2的差值。而MultiplyDivide節點則輸出數值提供給下一步的計算,連線方法如下圖所示,PlusMinusAverage的計算方式選擇為Subtract減法計算。 這樣我們可以計算出兩個距離差值。MultiplyDivide節點是為後面的計算作準備

模擬光線追蹤陰影

下面我們建立一個LightInfo節點,連結方式如圖所示,通過這個節點的SampleDistance屬性我們可以得到主燈到被作用物體的取樣距離,這個值是一個隨著物體位置上取樣點不同而變化的值,同時再連結一個PlusMinusAverage節點,為後面的計算做準備

模擬光線追蹤陰影

把這兩部分節點群連結如下圖所示。MultiplyDivide節點設定為Divide除法計算。這樣我們可以把Lightlocator到Endshadow和到Startshadow的距離差值,通過SampleDistance得到的燈光采樣距離進行計算,由於SampleDistance是一個變數,所以這個比值也是一個變化的數值

模擬光線追蹤陰影

建立兩個Remp節點,通過上面得到的數值來控制燈光投影的屬性,連結方法如下,我們建立的Clamp節點的作用是截取了一段資料,這段資料的範圍被設定成0到1,以此來控制Ramp節點的vCoord屬性

模擬光線追蹤陰影

如圖調整Ramp的顏色分佈來控制燈光的陰影深度分佈和陰影的

模擬光線追蹤陰影

通過引數調整得到比較好的測試結果,如下圖所示

模擬光線追蹤陰影

教程, 基礎, 陰影, 燈光, 光線,
相關問題答案