Timeline的Animation Track詳解

你好,我是跟着大智學Unity的萌新,我叫小新,這是我本週的學習總結報告哦。

在Timeline中,Animation Track可能是我們用的最多的一個軌道了,而且功能也相對比較多,今天小新就來總結一下Animation Track經常用到的那些功能。

在Timeline中錄製基本動畫

你可以直接在Timeline的Animation軌道上錄製動畫,這樣直接錄製出來的動畫稱爲無限片段(Infinite Clip)

爲什麼叫無限片段呢?無限片段貫穿整個Timeline,包含了關鍵幀動畫。無限片段不能改變位置、修改長度或者分割,因爲它的長度是無限的,貫穿整個軌道。

錄製動畫之前,你需要有一個空白的Animation track。當然了,創建Timeline的時候已經自動創建了一個選中物體的Animation track。你也可以點擊上面的加號,創建一個新的空白Animation track。

添加一個新的Animation Track

在軌道列表中,點擊紅色的圓形錄製按鈕開啓錄製模式。

點擊紅色的圓形錄製按鈕開啓錄製模式

在錄製模式中,clip區域會顯示紅色,並且上面有”Recording…“的信息,錄製按鈕也會閃爍。

錄製中

錄製時候的操作和之前學過的Animation窗口錄製動畫就很像了。錄製模式下對任何屬性(動畫支持的屬性)的修改都會作爲關鍵幀被記錄在當前時間位置。

一般的流程如下:

  • 首先將Timeline的時間軸移到第一幀

  • 在Inspector窗口中,在需要動畫的屬性上面右鍵,選擇 Add Key 。這會添加一個動畫關鍵幀。在Clip上會顯示一個菱形的小圖標,代表關鍵幀的位置。

image

  • 移動時間軸,修改GameObject的屬性,Timeline會自動在clip中添加一個關鍵幀,保存修改後的屬性。

  • 同樣可以在場景中進行操作,對物體的移動、旋轉、縮放都會記錄成關鍵幀。

錄製完成後,再次點擊錄製按鈕,就可以結束錄製,退出錄製模式。

錄製完成後,就沒辦法直接在Timeline中修改無限clip了,如果需要修改,可以雙擊clip區域打開動畫編輯器窗口。也可以展開曲線編輯區域進行編輯。

最後保存場景或者工程,會將錄製的動畫保存到Timeline資產中。

無限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的長度,保證能播放完一個循環。

image

如果現在點擊播放按鈕播放的話,你會發現在第一個動畫和第二個動畫之間會發生跳動,這是爲啥呢?這是因爲第一個動畫結尾的位置和第二個動畫開始的位置不匹配,那怎麼辦呢?

如下圖所示,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功能。

啓用Avatar Mask

在Project中創建一個Avatar Mask,遮住下半身,然後將這個Avatar mask拖到對應的屬性裏面。

如上圖這個Avatar Mask,它允許上半身的動畫執行,綠色代表會生效,紅色的部分會被屏蔽掉。

設置了Avatar mask的軌道,會顯示一個小圖標,如下圖所示:

現在再運行,你就能看到揮手的上半身的動畫覆蓋掉了向前跑的上半身動畫。如果你想暫時禁用Avatar Mask,可以點擊上圖中那個小圖標。

總結

Timeline中大部分內容的呈現還是需要通過動畫來完成的,本節課學習了很多動畫相關的技巧,記得多嘗試。

洪流學堂公衆號回覆timeline獲取專題教程。

發佈了142 篇原創文章 · 獲贊 77 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章