薛山
體積煙霧是Blender比較重要的視覺效果之一,一般情況下我們都通過物理模擬的方式來實現,當然,Blender在3.0版之后就可以直接將網格物體轉換為體積霧,可以實現非常不錯的視覺效果,不過最大的遺憾就是幾何節點不支持這一功能,畢竟幾何節點的操控自由度很高,而好消息是在Blender最新的3.3、3.4試驗版幾何節點編輯器中,新增了一個“體積立方體”功能,也就是提供了一個轉換為體積霧狀態的立方體,而正是因為有了它,咱們的可玩空間一下就變大了不少!
我們先來看常規思路的體積霧網格物體需要怎樣制作吧,首先要新建一個網格物體,比如猴頭,然后再新建一個空的體積物體,接下來為這個空的體積物體添加“網格到體積”的修改器,更高的“體素數量”就能獲得更高精度的體積霧效果,這一步完成后,我們就可以獲得如圖1所示的體積霧猴頭了。

接下來我們需要將渲染模式切換為Cycles,因為EEVEE實在是無法正常顯示效果,并打開體積霧猴頭的著色器編輯器,你會發現默認就加載了“原理化體積”模塊,這時候我們就可以通過控制它的“密度”值,來調整體積霧的分布區域,從而獲得類似表面裂紋的效果,比如連接沃羅諾伊紋理來實現如圖2的視覺效果。

但問題在這時候就接踵而至了,我們雖然獲得了一個挺酷的體積霧效果,但如果我想把它轉換成網格物體該怎么辦呢?需要新建一個其他的物體,比如立方體,然后為這個立方體加載“體積到網格”修改器,但隨后你就會發現,咱們圖2里做出的編輯效果并不會反饋到“體積到網格”中,它只會調用原生的體積數據來轉換,所以如果想要在網格上實現編輯效果,這個方法完全行不通。
這也就意味著,如果我們想做一個起司蛋糕那種滿是洞洞的效果,常規的體積霧網格化操作是行不通的,只能考慮通過圍繞蛋糕本體建立一圈球體,然后用布爾差值計算來獲取近似的效果,但這個操作其實也并不算簡單,而在3.3版本之后,Blender就在幾何節點里添加了“體積立方體”功能,也就是說我們在此前的一系列操作都可以在幾何節點里完成,并且最重要的是幾何節點可以直接“體積轉網格”,這意味著所有的操作都可以完全反饋。
以起司蛋糕為例,我們只需要在任意物體的幾何節點編輯器里新建一個體積立方體就能看到效果了,但要怎樣讓咱們的其他物體,比如自己設計的模型也變成體積霧呢?其實也比較簡單,我們只需要導入模型,然后用“幾何接近”這個節點來獲取物體的距離值,接下來通過小于計算并連接到體積立方體的“密度”,就能得到模型的體積霧輪廓了,此時再連接“體積到網格”節點和“設置著色平滑”就能得到如第一步那樣的網格化結果,具體節點設置可以參考圖3。

那么如何實現對體積霧的編輯呢?思路跟之前在著色器編輯器的操作相同,還是用沃羅諾伊紋理,結合減法計算來定義我們想要減去的位置,然后用乘法把它和“幾何接近”得到的結果相乘,連接體積立方體的“密度”,再通過調整起司蛋糕的材質,我們就能得到如圖4的效果啦。


本文所用幾何節點編輯器一覽
幾何節點作為Blender在今年著重發力的新功能,力圖整合多個功能模塊的想法很強烈,而且從工作效率的角度來說的確可以起到事半功倍的作用,但目前來看像體積立方體這種功能還處于相對早期的嘗試階段,Blender每個版本可能都會刪改一些項目設計,所以這個功能更大程度上適合大家研究,而不是真正依賴它去做項目,這其實也是Blender最有意思的一點,它總是在不斷進化,作為生產力軟件,有這樣的生命力足以讓用戶興奮,至少我每次看到新功能都會嘗試,可以得到很多啟發,建議大家也都玩起來吧!