By accepting you will be accessing a service provided by a third-party external to https://www.incgmedia.com/
由現任職於 Amazon Game Studios 的 Technical Artist - 劉俐伶 Liling Liu 與我們分享如何在 Maya 裡面基於骨骼綁定製作具有自動碰撞的裙子!
現任職於Amazon Game Studios 的 Technical Artist,目前正製作一款 AAA 遊戲《Crucible》,畢業於舊金山藝術大學遊戲發展所,曾經在 Universal creative,Kinosys Films,Chaosmonger Studios 等其他公司擔任於角色綁定師,本身也是一位 Freelance Rigger 參與其他的遊戲和動畫電影的專案。
由於能夠使用兩者物體之間的碰撞來產生互動,讓動畫師能夠快速方便製作動作,必且可以將物體輸出到遊戲引擎。個人的想法是利用這樣的技術來製作一個裙子的綁定,在互相的碰撞讓裙子能夠自然產生變化。首先要有兩個物體,在這教學使用一個長條和簡單裙子模型(如下圖)。
教學步驟:
概念原理:當物體一快碰撞到物體二之前,讓物體二開始受到變動。首先要在兩者物體之間製作一個圓圈,利用圓圈簡單表示為裙子的構造,讓物體一移動的過程在這圓圈上找到物體一和這圓圈的距離和角度,並利用這角度使的物體二產生碰撞。物體二也要計算和圓圈的距離是多少才能開始受到碰撞。
一:計算物體一與圓圈之間的距離
首先在每一個物體上新增骨頭,並製作一個圓圈(如下圖),由於要得知物體一在移動時與圓圈的距離是多少,建立一個 Locator(loc_hand_sp) ,將放置在長條物體的骨頭底下,利用這個 Locator 與圓圈上的點做計算。在計算之前,必須先知道圓圈上的點目前是處於多少。
建立一個 Locator(loc_cuv) 加選上圓圈線,到 Constrain > Motion Paths > Attach to Motion Path. 在 Motion Path Attribute 可以看到 U Value 被鎖起來,這時候可以解除鎖定,在移動 U Value 可以看到 Locator 在圓圈裡面
移動。
接著計算 loc_hand_sp 和圓圈線 (Cuv_skirt) 的點:
1. 在 Maya 裡面到 Windows > Node Editor,在編輯區新增 NearestPointOnCurve 節點
2. loc_hand_spShape 的 worldPosition 連結至該節點的 position
Cuv_skirtShape 的 worldspace 連結至該節點的 curve
3. 再將此結點的參數輸出至 U Value 的值
如果你對 Maya 的節點不太熟悉,可以到 Autodesk 官網上得知資訊
二:計算物體二(裙子)與圓圈之間的距離
在 Maya 裡面到:Create > Measure Tools > Distance Tool.
將裙子的骨頭與圓圈線上的 locator(loc_cuv) 測量距離
三:判斷物體二(裙子)和圓圈之間距離產生變化
四:計算物體的角度並產生碰撞
創立一個新的 multiplyDivide,將剛剛 remapValue 的值輸出此節點(multiplyDivide3) 的 input1 再將此節點輸出至裙子骨頭上,等等要使用 multiplyDivide3 的 input 2 作為物體的角度判定。如果角度超過一個數值,那就可以開始轉動裙子的骨頭。 對每一個裙子的骨頭重複上續步驟。
角度判定: