薛山
熟悉動畫制作的朋友們應該都知道,高精度模型因為頂點數量龐大,無論是物理效果模擬還是動畫綁定與制作都需要花費大量的時間,所以在很多時候我們都不得不選擇“曲線救國”的道路,利用其他方法來實現近似的效果。比如制作一個復雜的管道或鎖鏈模型搖擺效果,如果直接用剛體系統來模擬,不僅需要準確設置物體碰撞模式,還要花費不少的時間來進行調參,反復試錯后或許才能達到滿意的效果,但如果結合布料系統和正確的修改器,其實可以很容易地完成這一效果。
既然是模擬金屬鏈條(比如挎包的金屬肩帶)自然垂擺的效果,它的運動軌跡其實完全可以用布料系統來替代,通過模擬線段的布料物理效果,然后把這個效果加載到高精度模型,不就解決問題了?所以咱們首先需要新建一條線段,Blender預設網格模型里沒有線段,我們一則可以先新建平面,然后刪掉其中2個頂點的方式來讓它的一條邊成為線段,二則也可以新建一個路徑曲線并轉換為網格模型來實現。無論使用哪種方法,都需要注意讓線段的頂點數盡量多一點,這樣才能讓模擬效果更加真實。
接下來我們需要在線段的兩端,如圖1所示分別通過“Ctrl+H”來鉤掛一個新的空物體,這個空物體其實就是咱們控制線段運動的控制器,你就把它們想象成是捏著線段兩頭的雙手吧,接下來再把兩端的兩個頂點設置分配一個單獨的頂點組,這樣做的目的是為了讓兩端能夠在布料系統中不受重力影響,固定在我們想要的位置并跟隨兩個空物體移動,完成后的修改器界面如圖2。


接下來我們為線段添加布料系統,記得在“形狀”里將釘固頂點組選擇為我們剛剛新建的頂點組,這時候播放視頻就能看到線段如我們所想的那樣向下垂擺了,但因為我們是為物體碰撞做的效果,所以還需要先利用蒙皮修改器來為線段添加面,這樣才能實現我們想要的碰撞效果,但注意,蒙皮的厚度也決定了咱們后續要做的鏈條的直徑,因此在調整時需要稍微注意一點。
如圖3 所示,結合碰撞物體并烘焙布料系統數據之后,我們就能得到一個比較滿意的效果了,接下來的工作就是用高精度的鏈條模型來進行替換。

為了方便演示,我們使用圓環和“陣列”修改器做了一個鎖鏈鏈條,但記住這個鎖鏈鏈條的長寬高必須限制在咱們線段的蒙皮范圍之內,超出則無法實現正確的形變效果,具體可參考圖4。

設計完成后應用“陣列”修改器,當然也可以復制一個作為備份,方便后續可能需要的調整。接下來就是為咱們的鏈條添加“表面形變”修改器,將目標設定為第一步已經做好的線段,然后點擊“綁定”,完成后再播放視頻你會發現它已經正確綁定我們想要的效果,鏈條如圖5所示,跟隨“挎包”的邊緣緩慢滑落,結合運動效果則可以更自然地反饋,關鍵是這種設計思路可以大幅節約計算資源,省去了做高精度模型物理效果的時間。

也正因這種設計思路可以節約大量時間和資源,所以在游戲和動畫設計領域也是非常常用的技巧,比如服裝和頭發效果,可以先用一個低精度模型來制作物理模擬效果,然后高精度模型再通過“表面形變”或類似的功能來進行綁定,比如圖6,就是一個約1000萬個頂點的衣服模型,套用在了一個3000多個頂點的衣服模型布料效果上,大家有機會可以自己嘗試一下直接烘焙有千萬頂點級別的布料系統,看看100幀到底會花多少時間。

對于動畫設計,尤其是3D電影和游戲角色動畫設計來說,“表面形變”修改器幾乎是必備技能,在角色設計時有時候也會出現因為低精度模型的動畫效果頂點數量不足,導致高精度模型套用后穿模的情況下,解決方案其實也很簡單粗暴,直接把被服裝遮蓋的角色人體部分遮罩就完了,這也是為什么很多游戲角色建模只有裸露在外的部分才有皮膚,被衣服遮住的地方就沒有模型的原因,人體的模型只是為了制作碰撞效果而已,得到碰撞數據后就反而成了隱患,所以干脆就遮罩掉讓玩家無法看到啦。