Hello,大家好,今天給大家分享一篇幹貨,Unity動畫係統設計介紹(上),感興趣的朋友可以一起來看下!
這兩年和幾個朋友一起討論Unity動畫係統,包括折騰了幾次相關的組內分享,總結出很多內容。主要是關於設計和對象方麵,陳列一下。
一、動畫係統
1、簡介
Unity現存兩套動畫係統:Legacy動畫係統和Mecanim動畫係統。Legacy動畫係統功能相對簡單,核心組件Animation;Mecanim動畫係統是Unity當前主要的動畫係統,在Legacy動畫係統上增加很多新的概念,功能相對複雜,核心組件Animator。
2、動畫曲線(AnimationCurve)
Unity中的AnimationCurve是一根二維曲線,在動畫文件中曲線根據作用被分成了不同類型類型,具體分類可用下圖表示:
不同類型BindCurve在Animation窗口內有不同的圖標,圖標由Curve綁定的組件來決定,Curve前顯示的圖標表示其控製的內容歸屬組件,其中最需要關注的是TransformCurve和MuscleCurve,前者圖標是Transform的圖標,後者圖標是Animator的圖標,屬於Mecanim機製的Generic和Humanoid動畫片在運行時是不會保留原始動畫曲線數據的(在編輯器下會)。
所以運行期不能在Legacy機製下采樣播放(但編輯器下可以),RootMotionCurve是程序內部生成的對象,它的特殊之處在於儲存的值是相對整個模型空間的變換,而不是相對父節點的局部變換。

二、動畫資產
1、資產的導入
Unity會對支持的文件執行導入流程,實際在引擎中出現的文件是導入流程生成的Unity對象。Unity導入模型和動畫文件之後提供了很多的設置,導入設置麵板中Rig和Animation選項頁大部分都與動畫相關。
最重要的選項是Rig/Animation Type,除無動畫的None以外有三個選項,分別代表:
Legacy – 模型和動畫數據都會被處理為Legacy係統的動畫數據;
Generic – 模型和動畫數據都會被處理為Mecanim係統的非人形動畫數據,需要配置或者自動為模型資產創建對應的Avatar實例;
Humanoid – 模型和動畫數據都會被處理為Mecanim係統的人形動畫數據,需要配置或者自動生成模型骨骼創建Avatar實例和Human實例。
2、動畫片段(AnimationClip)
動畫片段是AnimationClip類型的對象,.anim資產文件,是Unity中動畫數據的存在形式,AnimationClip數據實際上就是以綁定對象為索引的AnimationCurve數據集合。
所有的動畫Fbx文件導入後都是生成AnimationClip類型的對象,隻是資源管理器裏的文件後綴名並不是.anim,且在引擎內禁止修改。導入的動畫片段拷貝副本後,可以進行曲線修改和刪除,導入DCC文件會根據關鍵幀擬合得到動畫曲線,Unity有三種曲線擬合方式,埃爾米特曲線擬合、線性擬合和離散值。
默認情況下都是埃爾米特曲線擬合,也就是根據關鍵幀擬合出三次曲線,但如果導入動畫資產時開啟了動畫壓縮,則根據誤差設置,Unity會自動在誤差允許內使用線性擬合乃至保留離散的關鍵幀。
Unity不會在導入流程中使用離散值擬合,所以DCC軟件裏做的數值離散動畫在Unity內播放會出現不合理的插值幀。

3、動畫的控製器
Mecanim的動畫播放控製是由有限狀態機和動畫層級來完成,由Animator Controller做有限狀態機層級的容器,Animator需要指定Animator Controller;
Animator Controller隻能在編輯環境配置,運行期不可改,Animator Controller可以設置黑板參數(邏輯容器),可以在腳本中獲取,也可以作為轉移條件;如果黑板參數名字與播放的Custom Curve相同,則伴隨動畫播放動態修改。
Animator Controller核心概念就是Layer,State和Transition,就是層級,狀態,轉移,一個狀態可以是播放一個動畫片段的節點、一個子狀態機或者混合樹,Layer之間可以進行動畫覆蓋與附加,輸出可以使用Avatar Mask進行剔除。
Sync選項可以讓多個層級使用一個狀態機,但是每個狀態上可以播放不同的動畫,Mecanim的IK也是以層級為單位。
State可以進行一些播放狀態的設置,Mecanim的動畫混合是使用BlendTree完成的,BlendTree可以作為一種State存在,Unity的BlendTree沒有什麼特殊設置。
Foot IK選項不意味著開啟足部IK,而是啟用足部IK相關的一些前處理,主要有兩個:啟用Human設置中的Feet Spacing,確保雙足骨骼在Z軸上差距2倍Feet Spacing;根據Root Motion得到的速度進一步修正雙足骨骼的位置。
Transition控製State之間的轉移,主要依賴條件有兩個,退出時間Exit Time以及參數條件Condition,兩者均滿足才會發生轉移,轉移有Solo和Mute標簽,前者表示優先轉移,後者表示禁用。
Animator Controller的動畫融合是在轉移的時候完成的;
可以在編輯器裏配置轉移打斷相關的設置。

4、Avatar
Avatar文件是Mecanim方案裏負責記錄模型骨骼層級結構相關的數據合集,也會儲存重定向方案相關的數據;
DCC文件導入時會生成或者依賴一個確定的Avatar文件完成動畫數據的導入流程;
Animator組件可以通過指定Avatar文件完成骨骼層級結構的初始化,但也可以通過配合動畫控製器查詢當前模型子節點獲取,所以Avatar文件並不是必須的。
來源:知乎
作者:Yene
熱門課程
專業講師指導 快速擺脫技能困惑相關文章
多種教程 總有一個適合自己專業問題谘詢
你擔心的問題,火星幫你解答為給新片造勢,迪士尼這次豁出去了,拿出壓箱底的一眾經典IP,開啟了夢幻聯動朱迪和尼克奉命潛入偏遠地帶臥底調查 截至11月24日......
此前Q2問答環節,鄒濤曾將《解限機》首發失利歸結於“商業化保守”和“灰產猖獗”,導致預想設計與實際遊玩效果偏差大,且表示該遊戲......
2025 Google Play年度遊戲頒獎:洞察移動遊戲新趨勢
玩家無需四處收集實體卡,輕點屏幕就能開啟驚喜開包之旅,享受收集與對戰樂趣庫洛遊戲的《鳴潮》斬獲“最佳持續運營遊戲”大獎,這不僅......
說明:文中所有的配圖均來源於網絡 在人們的常規認知裏,遊戲引擎領域的兩大巨頭似乎更傾向於在各自賽道上激烈競爭,然而,隻要時間足......
在行政服務優化層麵,辦法提出壓縮國產網絡遊戲審核周期,在朝陽、海澱等重點區將審批納入綜合窗口;完善版權服務機製,將遊戲素材著作......
未畢業先就業、組團入職、紮堆拿offer...這種好事,再多來一打!
眾所周知,火星有完善的就業推薦服務圖為火星校園招聘會現場對火星同學們來說,金三銀四、金九銀十並不是找工作的唯一良機火星時代教育......
同學您好!