薛山
作為一個慵懶佛系的Blender玩家,相信很多讀者朋友跟我一樣,有時候雖然腦子里有思路,但一想到要做復雜的動畫或物理模擬,可能就會開始打退堂鼓了,比如我們今天要做的拉鏈效果,常規思路可能就需要通過建模后的骨骼綁定來進行動畫制作,這其實也是高精度模型效果的必經之路,但如果只是想試驗一下自己的想法,或者并不需要那么高的精度,單純就為了做個過場動畫,這時候幾何節點或許會是個“一勞永逸”的好選擇。
拉鏈效果的核心就在于線性且絲滑的分離合并效果,如果是傳統設計想要做到這一點還是有難度的,因為拉鏈的效果實質上是在定義兩個物體之間的頂點關系,想要做到絲滑的效果有一定難度,最直觀的方法就是使用布料系統,通過第三個物體來重新繪制釘固組權重來實現分離,但這個效果做起來比較麻煩,而且每一次都需要重新調整和烘焙數據,所以如何使用幾何節點來設計就成了重點。

我的基本思路是使用兩條曲線來作為拉鏈的兩條邊,在拉鏈合并時它們緊貼在一起,而當拉鏈拉開時就沿著曲線的路徑逐漸分離,而且為了方便實現后期編輯,我們可以直接用貝塞爾曲線作為模型,直接進入它的幾何節點編輯器里進行操作。
首先,大多數關于曲線的幾何節點操作,都需要使用“曲線重采樣”來細化曲線的頂點數量,因為我們需要使用兩條曲線,但考慮到拉鏈的特殊性,這兩條曲線的形狀其實是一樣的,只是處于不同的位置,所以我們只需要用“設置位置”來進行偏移,再將它與原曲線“合并集合”,就能通過一個曲線來控制拉鏈兩邊的效果了。
那么,要如何“設置位置”才能讓拉鏈絲滑地拉開合并呢?我們可以利用“樣條線參數”作為系數,連接“相乘”“相加”,然后將輸出的結果,通過“矢量計算”的“正片疊底”和“法向”相乘,這時候只需要調整“相乘”“相加”的值,就能控制兩條曲線的靠攏與分離了,對了,記得要把“相加”的“鉗制”屬性勾上,否則兩條曲線在靠攏后會穿過而不是停留,就達不到我們想要的效果了。
但這時候我們只得到了兩條曲線,無法進行渲染,所以接下來還需要把它們都變成網格平面才行,這一步其實也很簡單,通過“曲線轉網格”,并以曲線直線作為輪廓曲線就能實現這個目標。但這時候你會發現兩條曲線會朝著同一個方向來生成面,而我們想要的是它們朝著相反的方向來生成,產生這個錯誤的原因就是兩條曲線的法向是完全相同的,所以我們只需要給其中一條曲線添加180°的“平滑曲線傾斜”,就能得到滿意的效果了。
在第一步完成后,我們的拉鏈分離合并效果就實現了,但看上去更像是在撕扯一張紙,因為拉鏈本身是有鏈條的,所以我們第二步就是給它添加兩組鏈條。這個操作其實也不難,也就是將兩個曲線的頂點作為基礎,通過“實例化于點上”來放置鏈條就行。
如果有仔細觀察自己衣服上的拉鏈,不難發現左右鏈條是互相錯位的,所以我們如果直接使用“實例化于點上”,就會發現兩條邊的鏈條在拉鏈拉上后是重疊的,因此還需要通過一定的設置來讓它們位置錯位。
這一步我們需要使用“采樣曲線”這個節點,將它連接到“平滑曲線傾斜”之后,系數則選擇“樣條線參數”和“相加”,這個“相加”的值就是曲線頂點的位移量,大家可以根據自己的設計來具體調整,然后通過“設置位置”來改變曲線頂點位置,再把它和另外一條曲線的“設置位置”進行合并,最后再用“實例化于點上”來放置鏈條模型。

鏈條模型我們可以用立方體來做簡單的示例,因為拉鏈的鏈條即便在合并的時候也會有一些左右錯位,所以我們可以用“變換”來進行些微的位移,實現我們的最終設計效果。
理清思路就能實現看似復雜的效果
本期制作的拉鏈效果幾何節點最大的優勢就是可以隨意復用,在原始曲線的編輯模式下,我們可以任意調整曲線的長度、角度,拉鏈效果都能正確跟進,非常方便。事實上幾何節點在實現這些看起來可能很復雜的效果時往往都有奇效,因為準確來說它就是編程邏輯的圖像化表現,只要理清了思路,很多設計其實都能迎刃而解,這也是我們為什么一直推薦大家學習幾何節點的根本原因。