Unity動畫系統詳解2:如何導入使用外部的動畫?

摘要:在Unity中只能製作比較簡單的動畫,要想要複雜的動畫,比如人物跳舞的動畫,那就得在外部的軟件中製作並且導入到Unity中使用,那這個過程是什麼呢?

洪流學堂,讓你快人幾步。你好,我是跟着大智學Unity的萌新,我叫小新,這幾週一起來複(yu)習(xi)動畫系統。

小新:“智哥,昨天我搞了一個美女的模型,如何讓它動起來呢?”

大智:“你小子整個美女的模型想幹嘛呢?”

小新:“我就是想讓她跳一段舞蹈罷了。。。”

大智:“在Unity中製作動畫的功能有限。類似角色的複雜動畫,需要用到一種叫骨骼動畫的技術,無法直接在Unity中製作,需要美術同學在外部建模軟件中製作後導入Unity使用。”

今天我們來學習一下如何從模型文件導入動畫。

在接下來學習之前呢,你需要準備好帶動畫的模型,如果你手邊沒有,可以看看大智之前的文章:

導入模型

導入動畫和導入3D模型的流程一樣,動畫會包含在3D模型中。

大多數情況下,含動畫的模型導出的fbx文件會同時包含網格信息和動畫信息,但是也有一些情況fbx文件只需要導出動畫信息。例如同一個模型有很多動畫,網格信息只需要一個就夠了,其他動畫信息可以通過單獨的模型文件(不包含網格信息)導出,可以減小Unity工程的體積。

有些情況下,動畫是基於特定模型製作的,不能在其他模型上重用。例如,遊戲中的終極Boss巨型章魚會有獨特的骨骼,以及自己的動畫。

在其他情況下,美術同學在製作動畫時應該考慮動畫的重用,用於場景中同類的模型。例如,不同的人形角色可能都使用相同的走動和跑步動畫。只要保持骨骼結構一致,動畫就可以重用。

動畫導入設置

首先將fbx文件導入Unity中,選中模型。在Inspector面板中會顯示模型的導入設置,之前我們已經學習了Model和Materials頁籤,今天我們看下動畫導入的設置。

和動畫有關的設置包含Rig和Animation兩個頁籤。

Rig

在Rig頁籤中可以設置動畫的類型。

Animation Type 動畫類型選項有4個:

  • None 不導入動畫
  • Generic 通用動畫:適用於所有的動畫類型,特別適用於非人形的動畫。
  • Humanoid 人形動畫
  • Legacy 舊版本動畫(爲了兼容Unity3.x舊版本,不建議使用)

Avatar Definition 如果動畫是骨骼動畫,可以使用這個選項定義骨骼的來源。

  • Create from this model 基於當前模型
  • Copy from other Avatar 指向另一個模型的Avatar

Root node 當動畫類型選擇Generic時顯示,可以用來設置動畫的根節點。一般需要選中骨骼的根節點。

Configure… 選中Humanoid時顯示。用來配置骨骼。後面動畫進階模塊,講解人形動畫時會詳解。

Skin Weights 設置有多少骨骼會影響蒙皮,骨骼數越多,動畫越精準,但是計算量越大,對性能要求越高。

  • Standard(4 Bones):4塊骨頭
  • Custom:自定義,可以設置最大的骨骼數量以及最小的影響權重

骨骼動畫是一種動畫技術,通過給模型綁定骨骼,通過骨骼的運動影響蒙皮(人形模型的皮膚)的變形動畫。

Optimize Game Object 選中時,導入的角色模型的層次結構將被刪除,存儲在Avatar和Animator組件中。角色的SkinnedMeshRenderers將直接使用動畫系統內置骨架。該選項可提高動畫的性能。在最終發佈時你應該選中此選項。在此模式下,蒙皮網格的提取也是多線程的。

Animation

這個頁籤中會顯示動畫導入的設置。如果Rig頁籤中的Animation Type選擇了None,則無法設置Animation相關的屬性。

Import Constraints 是否導入Constraints(約束)。美術同學可能知道在3D建模軟件中有Constraints設置,用來添加一些約束。Unity支持5種約束的導入。目前用到的較少。

Import Animation 是否導入動畫,如果不勾選代表不導入動畫,下面的選項也會隱藏。

Bake Animations 該選項只對Maya、3dsMax 、Cinema4D文件可用,對fbx文件不可用。選中時,Unity在導入模型時會將IK或模擬動畫轉爲正向動力學動畫。

Anim. Compression 動畫壓縮

  • Off 禁用壓縮。Unity不會減少關鍵幀,這個選項能提高動畫的精度,但是會降低運行時性能,存儲空間和運行時內存佔用都會變大。一般不建議禁用壓縮,但如果你需要非常精準的動畫,禁用後可以得到原始動畫,不會有壓縮精度誤差。
  • Keyframe Reduction 根據設置的誤差值移除關鍵幀。
  • Optimal Unity自動決定如何壓縮。根據設置的誤差值移除關鍵幀並且壓縮關鍵幀。這隻會減小動畫存儲空間佔用,運行時內存佔用和 Keyframe Reduction 相同。

Anim. Compression 不選擇Off時,會顯示下面三個選項:

  • Rotation Error 旋轉變化小於這個誤差的關鍵幀會被刪除。值越小動畫越精確。
  • Position Error 位置變化小於這個誤差的關鍵幀會被刪除。值越小動畫越精確。
  • Scale Error 縮放變化小於這個誤差的關鍵幀會被刪除。值越小動畫越精確。

Animated Custom Properties 是否導入自定義屬性。在3D建模軟件中可以設置一些自定義屬性,這個選項可以將這些自定義屬性導入進來。

Clips 動畫片段,Start和End分別代表了該段動畫在整段動畫中的起始幀和結束幀。下面詳細學習。

分割動畫

從3D建模軟件導入到Unity中的動畫,有時是很多段動畫在一起的一段很長的動畫,可能包括走路、跑步、站立、跳躍等動畫。但是在Unity中使用時,我們需要將長動畫拆分爲一段段短動畫。

創建一段新的Clip

如上圖,點擊加號可以創建一段新的動畫,可以在下方設置該段動畫在完整動畫中的起始幀和結束幀。設置時,可以下下方預覽窗口查看當前移動位置的動畫狀態。

設置動畫Clip的起始結束位置

在拖動起始、結束箭頭時,能看到下方會顯示4條曲線,右方有4個燈,會顯示綠色、黃色或紅色。這是做什麼用的呢?

其實這些是爲了方便你在剪輯動畫時,能更好地剪出循環的動畫。比如一個跑步的循環動畫,起始幀人物各個骨骼的位置應該和結束幀人物各個骨骼的位置一致,動畫循環時纔不會出現跳動的現象。綠燈代表開始幀和結束幀符合,黃燈代表有些不符合,紅燈代表一點都不符合。但是也不能追求4個全綠燈,因爲4個燈代表了4個不同的位置類型,有些情況下是不同的。後續動畫模塊會詳細學習。

Loop Time 如果動畫需要循環播放時,勾選此選項。

其他屬性我們會在後續動畫模塊進行講解。

點擊Apply保存對模型的修改

最後,別忘了點擊最下方的Apply保存對模型動畫的修改。

如何在場景中使用外部導入的動畫

對於從外部導入的模型及動畫,如果直接拖到場景中,是不會自動播放動畫的。原因是沒有Animator Controller,那Unity當然不知道你要播放哪個動畫啦。如下圖所示:

那麼如何實現最簡單的動畫播放呢?

只要按照以下幾步做即可:
1、將模型拖到場景中
2、將Animation Clip拖到剛拖入場景的模型GameObject上。這時候Unity會自動幫你生成一個Animator Controller,這個Animator Controller中會自動把剛纔拖的Clip作爲默認動畫進行播放。

播放導入的動畫.gif

這時候如果你再Play,就能看到模型就能動起來啦。(當然前提是這個Clip和這個模型是對應的哦!)

總結

大智:“今天講了如何將外部模型動畫導入到Unity中,希望你能記住以下幾點:”
1、Animation Type選項有4個:

  • None 不導入動畫
  • Generic 通用動畫:適用於所有的動畫類型,特別適用於非人形的動畫。
  • Humanoid 人形動畫
  • Legacy 舊版本動畫(爲了兼容Unity3.x舊版本,不建議使用)

2、在Unity中可以分割動畫成爲一個個片段。

今日思考題

大智:“導入Standard Assets中的Character包,看看裏面的動畫是如何設置的。”
小新:“好嘞~”

擴展閱讀

【擴展學習】洪流學堂公衆號回覆動畫可以閱讀本系列所有文章,更有視頻教程等着你!


呼~ 今天小新絮絮叨叨的真是夠夠的了。沒講清楚的地方歡迎評論,咱們一起探索。

我是大智(微信:zhz11235),你的技術探路者,下次見!

別走!點贊收藏哦!

好,你可以走了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章