在很多糖果廣告里,我們會看到一顆顆晶瑩剔透的糖果掉落在桌面上,鮮艷的色澤總能讓人不爭氣地抿嘴,在Blender里我們也同樣可以利用多種修改器和布料或軟體效果來實現這一目的,話不多說,立馬上手吧!
首先我們需要制作糖果的模型,大家可以自由發揮創意,比如用SVG格式的中文曲線或直接用英文字幕,也可以用一些常見的糖果形狀等等,在這里我們就不為大家做決定了,而為了方便演示,我們就以最簡單的方塊為例來拋磚引玉吧。
這些糖果模型在一開始必然是過于棱角分明的狀態,所以我們需要讓它不那么生硬,所以第一步就是添加倒角修改器,使其邊緣更柔和,因為無論布料系統或軟體系統都需要利用諸多頂點來實現效果模擬,所以這時候我們需要接著給糖果加載一個3級左右的簡單型表面細分,這個級數不宜太多,因為我們需要做多塊糖果,頂點數量太多會直接影響緩存和渲染效率,具體設置參考圖1。

接下來我們就利用陣列修改器來實現多個糖塊的組合,在這里我設置為3個糖塊,并以圖2的形式進行錯位擺放,這樣我們就可以設計一個糖果從不同高度落下的效果了。
接下來我們進入這次的重點:布料系統。當然,大家也可以用軟體系統來實現這個效果,但就這次教程來說,布料系統其實也能模擬得有模有樣,設置也同樣比較簡單,再考慮到布料系統相對應用面更廣,所以還是更建議大家傾向于使用布料系統來進行學習。
在布料系統中,我們首先要調整頂點質量,這個數值設置的其實是密度,會跟隨頂點數量變化而變化,在這里我們可以嘗試將頂點質量設置為0.15kg,Blender的物理系統對于這種相對較大數值的計算往往更精確一些,不容易出現問題。

接下來需要勾選“內部彈簧”并把“最大彈簧創建長度”設置為1,這個設置是實現糖果表面反彈效果的關鍵。接著再勾選“壓力”,將壓力值設置為5,這個設置會讓糖塊膨脹起來,看起來會更像一顆糖果,而不是一張沒有內部壓力的布,最后再開啟物體碰撞里的“自碰撞”,這樣一來3塊糖果就能互相碰撞了,總體設置可參考圖3。

當然,這時候你可能會發現3塊糖有些不夠,這時候有兩種解決方案,一是額外向上復制2組我們剛剛做好的糖塊,調整各自的陣列值實現錯位擺放的效果,然后再各自添加一個碰撞系統,這樣就能在糖塊落下時實現互相碰撞的效果了。
這種方法雖然很直觀,但不那么簡潔高級,咱們來做個相對高級的方案,簡單來說就是直接再加載一個陣列修改器,讓3個糖塊向上進行復制,但因為我們要做錯位的效果,讓每一列糖塊落下時都有時間差,所以默認的陣列并不能達到讓人滿意的效果。
這時候我們需要將原點設置到糖塊的質心位置,然后新建一個空物體,并復制已有的陣列修改器,這時候系統會默認把它放在第一個陣列修改器的下方,然后我們把X位置修改為0,這時候它就是以3個糖塊為一排向上堆疊的狀態,這時候我們需要將“物體偏移”的目標設定為空物體,然后將空物體沿Z軸旋轉180°,再沿X軸進行移動,以實現如圖4的擺放方式。

注意,這個方案雖然不需要再單獨設置碰撞系統,但需要重新調整布料系統的設置,比如頂點質量和壓力值都需要增大,同時還需要減小表面細分級數來降低頂點數量和緩存時間,最終可以獲得如圖5的果凍糖跌落效果。

糖塊使用的著色器節點一覽
其實嚴格來說,軟體系統來做這種軟糖效果會更真實一點,但還是那句話:布料系統的應用面更廣,而且在大多數情況下它就已經可以實現很不錯的視覺效果。Blender的各種物理效果其實最折磨人的地方還是在于需要不斷調整參數,不斷重新烘焙緩存,有時候這個過程甚至會持續一下午,哪怕只是一個最終看上去很簡單的效果,這也是很多電影制作需要單獨開發軟件的原因之一。但無論如何,Blender布料系統仍有諸多特點可以挖掘,大家也開動腦筋,自己多嘗試吧。
