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
熱門課程
專業講師指導 快速擺脫技能困惑相關文章
多種教程 總有一個適合自己專業問題谘詢
你擔心的問題,火星幫你解答本篇文章會深入解析火星時代教育的平麵設計班內容。本課程將帶你進入平麵設計的廣闊世界,跨越設計的理論與實踐,挖掘你的設計潛能。
火星網頁實習培訓開啟了走向網絡前端開發的大門。火星時代教育引領學生掌握了最新的前端技術並且了解火星網頁實習培訓的相關內容。
找到最好的vr遊戲開發培訓學校,提升你的VR遊戲開發技能,成為行業內的專業人士。關鍵詞:VR遊戲開發,VR培訓,遊戲開發學校。
探討影視美術建築表現的重要性以及如何通過火星時代教育的專業培訓,有效提升此項技能。
本文主要介紹了培訓學校空間設計的重要性及其技巧,並探討火星時代教育如何運用空間設計給學習帶來更好的體驗。
了解一個頂級的遊戲開發培訓機構如何通過專業的課程和實戰訓練幫助學員成長為高級遊戲開發者。
1. 打開微信掃一掃,掃描左側二維碼
2. 添加老師微信,馬上領取免費課程資源
同學您好!