2009年4月11日 星期六

簡化動畫曲線 ( animation curves )

當你把某個物件的動畫 bake 之後 (edit->keys->bake simulation), 你會發現動畫的每一個 frame 都會有 key. 如果這是你的final animation (雖然在 production 時幾乎沒有所謂的"final") 那就沒什麼問題. 如果你之後還需要改變動畫, 你就會發現你的 animation curve 都是塞滿 key, 要對它做修改的話好像乾脆重做都比較快 :sad:.

沒關係,Maya的 graph editor 裡就是有個功能專用來處理這種事. 這功能叫做 Curves->Simplify curve. 它可以把"不必要"的 key 刪掉,只留下真正對一個curve 有"貢獻"的keys.神奇吧!

話不多說,我們就來用看看!

-> 首先在maya裡產生一顆球與一個平面.



-> 把球變成一個 active rigid body (選取球然後執行 Soft/Rigid Bodies -> Create Active Rigid Body)

-> 把平面變成一個 passive rigid body (選取平面然後執行 Soft/Rigid Bodies -> Create Passive Rigid Body)

-> 加 gravity 在球身上(選取球然後執行 Fields->Gravity)

執行到這裡,你把animation 往前跑的話 球就會在平面上彈跳.我們現在要把球彈跳的動畫bake 成 keyframe.

-> 選取球的 translate channels, 然後執行 Edit->Keys->Bake Simulation []



-> maya 把動畫bake 完之後,打開 graph editor. 在 translateY 的 animation curve 你會發現每一個 frame 都有 key的. 我們現在要做的是減少這些 key 的數量並且可以維持 animation curve 的形狀.



-> 執行 Curves->Simplify Curve[]


simply curve 的演算法有兩種 :classic & Dense data. 建議使用 Dense data,因為 Dense data 比較適合對密集 keyframe 狀況 做簡化.
time tolerance : 數值越高,出來的key數量就越少,形狀差異越大.

-> 按下 apply 或 simplify



出來的結果, key 數量果然減少了,而且球的動畫根原來的相較之下差異並不大.之後要修動畫的時候,這種 animation curve 就好修多了.

1 則留言:

  1. 一個知道卻不知從哪下手的小技巧。3Q~

    請問閣下是從哪悟得這些東西呀!

    回覆刪除