薛山
在很多災難電影里,龍卷風都是常客,而電影拍攝的龍卷風絕大多數都是視覺特效團隊精心制作而來,雖然我們不一定能達到那么高的真實性,但利用Blender的材質著色器,也還是可以實現以假亂真的龍卷風特效,而且并不需要借助物理系統就能搞定,是不是很神奇?接下來就跟著我一步步操作吧!
因為這次我們使用的是材質著色器來制作,所以基本上屬于零建模教學,因此只需要一個默認的立方體就能搞定。接下來我們需要進入著色器編輯器,刪掉材質默認的原理化BSDF,用原理化體積來連接材質輸出的“體積”,然后再把場景中的燈光調整為“日光”并適當設置強度,就能得到如圖1的基本效果了。

“體積”從視覺上來看其實就是霧化效果,我們需要做的就是調整這個霧的形狀,大家試想一下,龍卷風的形狀其實就是一個下小上大的圓柱體,所以我們首先要讓霧呈現為圓柱狀,第一是利用紋理坐標和矢量計算的“長度”,連接顏色漸變來制作出一個球型霧。
接下來在“長度”的前方,利用矢量計算的“正片疊底”來做乘法,設X、Y為1,Z為0,這就相當于讓球體在Z軸方向的長度為無限大,也就把球體拉成了圓柱體,具體設置可以參考圖2。

完成龍卷風的圓柱體雛形后,我們需要把龍卷風設計為上端大而下端小,邏輯上來說就是添加一個矢量乘數,讓這個乘數由下往上線性增大,因為是矢量計算,所以這一步需要先分離XYZ,我們只涉及到Z軸方向,所以用Z連接一個“映射范圍”,而映射范圍的“從最小”和“從最大”就是立方體上下兩面的位置,對于默認立方體來說就是-1和1,然后把映射范圍和“長度”進行矢量計算“正片疊底”,這時候再調整映射范圍的“到最小”和“到最大”,就能得到上端大、下端小的龍卷風形狀了,這時候如果覺得在EEVEE模式下看得不是很清楚,可以在顏色漸變之后再接一個乘法,乘以10左右就差不多了,具體設置可以參考圖3。

顯然,這時候的龍卷風只是形似,缺乏很多細節,比如螺旋向上的不規則風路設計,這時候需要在紋理坐標和正片疊底之間,添加一個噪波紋理,并用線性光進行混合,這時候調整噪波紋理的縮放、細節和糙度就能得到如圖4的效果。
最后一步就是為它添加一個螺旋旋轉效果,在噪波紋理前方加入一個“映射”,這時候調整旋轉Z的數值就能看到龍卷風轉了起來,但我們要的是旋轉向上的效果,而不是這種整體規則的旋轉,所以這時候我們需要從數學角度為Z軸旋轉值添加特定屬性,首先是分離XYZ,然后再把Z連接到合并XYZ,這一步相當于什么也沒做,接下來就在兩者之間加入一個“乘后再加”,乘是讓龍卷風的頂部有更大的旋轉值,底部則趨近于不動,這樣就獲得了螺旋形態,而加則是讓它整體旋轉,這樣我們就只需要給加法做一個“-frame/10”驅動器,就能讓它自動旋轉起來了,具體可參考圖4。


本文所用著色器節點一覽
與此同時,為了讓龍卷風的形態也隨時間變化而變化,我們也可以把噪波紋理的類型設置為4D,然后為W值添加“frame/10”驅動器,這時候切換到Cycles渲染器再播放動畫,就能看到一個如圖5那樣不斷變化形狀、螺旋向上的龍卷風效果了。
其實不難發現,Blender的材質著色器也好,幾何節點也罷,制作過程類似于編程,有一個嚴謹的邏輯推導過程,從立方體變成球體,再變成圓柱體,接著讓圓柱體上大下小,再添加噪波紋理并按乘法加法對Z軸方向進行旋轉,就得到了一個龍卷風效果。這樣的玩法在Blender里可以說是相當常見,因此強烈建議大家多多學習,融會貫通。