Maya通過粒子的物理運算來輔助角色次要動畫的製作(上)

此文先是發於新浪博客上, 無奈新浪博客太垃圾, 決定轉戰知乎.

寫這個的原因:

2016年受Richard Lico的一個利用Maya中的粒子來做角色secondary animation 的視頻的啟發(原視頻: vimeo.com/196234485), 在Maya里把這個流程用 python 寫了出來, 但是因為這幾年一直做mocap 比較多, 而這個方法主要實用於keyframe的動畫, 所以只是完成了function部分,並沒有繼續深入的做成一個完整的工具.

直到最近看到國內微信上某個CG公眾號分享的一篇文章, 某歐洲的公司把這個流程做成了一個有用戶交互界面的工具,並且以150歐元的價格出售. 於是為了打他們的臉, 我花了一天的時間, 在之前寫好的 function的基礎上做了用戶交互界面, 打算把腳本放網上讓群眾免費下載.

這篇主要討論思路步驟,頁末會放出腳本下載鏈接. 下一篇會放出工具的使用方法.

工具如下圖

此方法適用於手調動畫,在關鍵幀和中間幀的基礎上,通過粒子的物理運算和對關節創建目標約束,來增強關節運動的迭代效果(overlap).

下圖左邊為只有兩個關鍵幀的簡單動畫,右邊為通過粒子輔助加強迭代運動後的效果.

https://www.zhihu.com/video/949798176333455360

接下來講講步驟和思路,為了方便演示,以下步驟我會用一個關節來舉例.

1.創建一個目標物體,目標物體的位置不能和關節的pivot重疊, 其它任何位置都可以. 將所選關節的動畫烘焙到目標物體上.(創建parent/child 約束並保持offset, 烘焙目標物體, 刪除約束)

此目標物體將作為粒子的goal,讓粒子跟隨。這裡目標物體我用了locator.

https://www.zhihu.com/video/949799888377106432

2.創建一個粒子,位置align到目標物體上,將目標物體設置為粒子的goal,權重暫時設置為一個隨機數.

conserve = random.uniform(0.9, 1)

weight = random.uniform(0.65, 0.75)

temp_particle = cmds.particle(n = "{0}_temp_particle".format(object), p = [0,0,0], c = conserve)[0]

cmds.setAttr("{0}.particleRenderType".format(temp_particle), 4)

cmds.goal( temp_particle, g = target, w= weight )

調節粒子的 conserve 和 goalWeight[0]兩個屬性數值,得到不同的迭代效果.

https://www.zhihu.com/video/949800935355133952

3.創建第二個locator, 將locator的translate 屬性關聯到到粒子的cachedWorldCentroid屬性. 這時新創建的locator會跟隨粒子的中心點運動。(注意此時粒子的中心點和pivot不在同一位置) 此locator將作為下一步對關節目標約束的目標物體.(為區別第一步創建的locator, 我把第二個locator設置成了紅色)

target_control = cmds.spaceLocator(n = "{0}_temp_target_control".format(object))[0]

cmds.connectAttr( "{0}.cachedWorldCentroid".format(temp_particle),{0}.translate.format(target_control) )

https://www.zhihu.com/video/949802019804987392

4.創建目標約束,第三步創建的locator作為關節的目標。此時關節會指向粒子並隨粒子運動.

cmds.aimConstraint(target_control, object , n = "{0}_temp_aim".format(object),maintainOffset = True,worldUpType = "None" )

https://www.zhihu.com/video/949802840319909888

5.將關節動畫烘焙到override 動畫層。 這時可以刪除創建的locator, 粒子和目標約束。烘焙到動畫層的好處是迭代動畫不影響原始層的關鍵幀動畫, 可以調節override 層的權重來控制影響效果, 如果不滿意可以隨時刪掉動畫層.

https://www.zhihu.com/video/949803784889663488

以上是對用粒子物理運算做旋轉的迭代效果做法的方法, 對於移動的話, 一樣的思路, 更簡單, 不需要目標約束,小夥伴可以自行思考.

工具腳本下載鏈接

https://www.dropbox.com/s/s3iex0fvlbk74cg/secondary_animation_v1.py?dl=0www.dropbox.com

上篇完


推薦閱讀:

為什麼說《魔弦傳說》填補了教育中的空白
定格動畫的優劣勢是什麼?
發點圖殺貓,項目分享
定格動畫是什麼?
Maya通過粒子的物理運算來輔助角色次要動畫的製作(下)

TAG:動畫製作 | 三維動畫 | AutodeskMaya |