你好,我是跟着大智學Unity的萌新,我叫小新,這是我本週的學習總結報告哦。
在Timeline中,Animation Track可能是我們用的最多的一個軌道了,而且功能也相對比較多,今天小新就來總結一下Animation Track經常用到的那些功能。
在Timeline中錄製基本動畫
你可以直接在Timeline的Animation軌道上錄製動畫,這樣直接錄製出來的動畫稱爲無限片段(Infinite Clip)。
爲什麼叫無限片段呢?無限片段貫穿整個Timeline,包含了關鍵幀動畫。無限片段不能改變位置、修改長度或者分割,因爲它的長度是無限的,貫穿整個軌道。
錄製動畫之前,你需要有一個空白的Animation track。當然了,創建Timeline的時候已經自動創建了一個選中物體的Animation track。你也可以點擊上面的加號,創建一個新的空白Animation track。
在軌道列表中,點擊紅色的圓形錄製按鈕開啓錄製模式。
在錄製模式中,clip區域會顯示紅色,並且上面有”Recording…“的信息,錄製按鈕也會閃爍。
錄製時候的操作和之前學過的Animation窗口錄製動畫就很像了。錄製模式下對任何屬性(動畫支持的屬性)的修改都會作爲關鍵幀被記錄在當前時間位置。
一般的流程如下:
-
首先將Timeline的時間軸移到第一幀
-
在Inspector窗口中,在需要動畫的屬性上面右鍵,選擇 Add Key 。這會添加一個動畫關鍵幀。在Clip上會顯示一個菱形的小圖標,代表關鍵幀的位置。
-
移動時間軸,修改GameObject的屬性,Timeline會自動在clip中添加一個關鍵幀,保存修改後的屬性。
-
同樣可以在場景中進行操作,對物體的移動、旋轉、縮放都會記錄成關鍵幀。
錄製完成後,再次點擊錄製按鈕,就可以結束錄製,退出錄製模式。
錄製完成後,就沒辦法直接在Timeline中修改無限clip了,如果需要修改,可以雙擊clip區域打開動畫編輯器窗口。也可以展開曲線編輯區域進行編輯。
最後保存場景或者工程,會將錄製的動畫保存到Timeline資產中。
如果再增加錄製動畫,每個動畫片段都會按順序命名。比如三個動畫片段會命名成 “Recorded”, “Recorded (1)”,“Recorded (2)” 。如果你把Timeline資產刪除了,裏面錄製的動畫片段也會隨之刪除。
將無限片段轉換成動畫片段
無限片段在Timeline窗口中顯示成一個個關鍵幀。無限片段不能移動、修改長度、分割,因爲它沒有一個具體的時長。如果你想移動它,有一個辦法,就是將無限片段轉換成動畫片段(Animation Clip)。不過需要注意的是,一旦轉換成動畫片段(Animation Clip),就不能再轉回去了。
轉換的方法很簡單:在Clip上右鍵,選擇Convert To Clip Track
。
轉換過後,就會顯示成一個動畫片段。
處理人形動畫
下面雖然主要說的是人形動畫,但是介紹的方法適用於所有動畫。主要討論的問題包括:
- 如何匹配動畫之間的偏移
- 手動調整偏移
- 創建動畫混合解決跳動和滑步的問題。
在接着閱讀下面內容之前,你可以去mixamo.com上下載一些人物的動畫作爲素材。
首先你需要在角色物體上創建Timeline實例,創建後如下圖所示:
從工程中拖一個動畫clip到Animation track上。例如你可以拖一個Idle的動畫,讓角色從待機狀態開始。
如果想要在Clip視圖裏面移動、縮放、修改動畫長度,在添加Track的按鈕右邊選中Mix Mode,如下圖:
Clip的編輯模式一共有三種,之前講到過。Mix Mode下,你可以拖拽、修改動畫長度來創建混合。
下面再添加一個動畫Clip到Animation Track上,比如向左跑的動畫( 名字是Run_Left ),拖拽clip的尾部來修改Clip的長度,保證能播放完一個循環。
如果現在點擊播放按鈕播放的話,你會發現在第一個動畫和第二個動畫之間會發生跳動,這是爲啥呢?這是因爲第一個動畫結尾的位置和第二個動畫開始的位置不匹配,那怎麼辦呢?
如下圖所示,29幀和30幀之間會發生跳動。
修復動畫片段之間的位置偏移
想要修復跳動的問題,就得將不同動畫片段的偏移匹配上。Timeline系統提供了多種匹配偏移的方式。現在我們先將第二段動畫匹配到第一段動畫的位置上。在第二段動畫(Run_Left)上右鍵,彈出菜單中選擇 Match Offsets to Previous Clip 。
現在播放Timeline的話,雖然位置和旋轉匹配上了,但是兩個動畫之間仍然有跳動,因爲兩個動畫的姿勢不太一樣。第一個動畫結尾,角色的兩隻腳站在一起,而第二個動畫中角色的腳是開始跑的姿勢。
混合片段
要解決上面遺留的問題,需要在兩段動畫之間創建混合,有點類似之前Animator中不同狀態的混合。通過移動、調整動畫長度來調整兩個動畫片段的混合區域。比如下圖中,Idle動畫延長到了36幀,Run_Left動畫開始幀移動到了25幀,動畫的其他屬性都沒修改。
混合可以移除兩個動畫切換時明顯的跳動。大多數動畫之前的混合都有較好的效果,但是有些情況下,腳步可能會出現滑步的情況。
減少滑步
爲了減少滑步的情況,我們可以手動調整動畫的偏移,這樣可以讓腳步變化的不那麼明顯。手動調整的方法是:在Timeline窗口中選中動畫clip,在Inspector窗口中展開 Animation Playable Asset 區域。
上圖中 Clip Transform Offsets 不是0的原因是因爲之前點擊Match Offsets to Previous Clip
時系統自動匹配了前一個動畫的偏移,但是這個偏移是基於骨骼的軸心來計算的,所以腳的位置可能會有問題。
在 Clip Transform Offsets 下,啓用Move工具,Scene窗口中會在模型軸心顯示移動的小工具。
有兩種方法可以手動調整偏移:
-
在Scene窗口中拖拽
-
在Inspector中修改數值
可能需要多次的修改調試才能達到一個比較好的效果。
使用Animation Override和Avatar遮罩
在動畫系統中我們學習過了Animator Override和Avatar Mask,那在Timeline中同樣有類似的功能。比如你想讓人物能一邊跑一邊開槍,你就需要用到Mask的功能了。
首先你需要在角色物體上創建Timeline實例,上面有一個簡單的Animation clip,創建後如下圖所示:
如上圖,放了一個向前跑的動畫。在軌道上右鍵,彈出菜單選擇 Add Override Track 。這樣就會添加一個Override軌道,默認名字是Override 0,並且是和原來的動畫軌道是關聯的:你會看到,新創建的Override軌道並沒有綁定一個GameObject,而是和原來的動畫軌道關聯同一個GameObject。
現在,你可以從工程中拖一個上半身的動作到Override軌道上,比如一個胳膊揮動,但是下半身站立不動的動畫。將Override Clip調整到和上面Clip相同的位置和長度。
如果現在播放Timeline的話,你會看到揮手的動畫完全覆蓋了跑步的動畫。這是因爲我們沒並沒有設置覆蓋哪部分,所以會全部覆蓋掉。如果想讓兩個動畫結合,需要使用Avatar Mask功能。選中Override clip,在Inspector中啓用Apply Avatar Mask功能。
在Project中創建一個Avatar Mask,遮住下半身,然後將這個Avatar mask拖到對應的屬性裏面。
如上圖這個Avatar Mask,它允許上半身的動畫執行,綠色代表會生效,紅色的部分會被屏蔽掉。
設置了Avatar mask的軌道,會顯示一個小圖標,如下圖所示:
現在再運行,你就能看到揮手的上半身的動畫覆蓋掉了向前跑的上半身動畫。如果你想暫時禁用Avatar Mask,可以點擊上圖中那個小圖標。
總結
Timeline中大部分內容的呈現還是需要通過動畫來完成的,本節課學習了很多動畫相關的技巧,記得多嘗試。
洪流學堂公衆號回覆timeline
獲取專題教程。