前言
Unity動畫系統,也稱為“Mecanim”,提供了簡單的工作流程,設定動畫的所有元素,包括物件、角色和屬性。
同時也支援匯入外部建立的動畫片段和使用內建動畫編輯器製作的動畫片段以及人型動畫重新定位,動畫角色的運動控制可以與所有的角色模型共享,即角色的SkinedMesh和Animator是分離的,它們互相組合之後形成最終的動畫。用於編輯動畫狀態的的簡化工作流程,即動畫控制器。
方便預覽動畫片段,以及片段之間的插值過渡。 這使得動畫師可以獨立於程式設計師工作,在不運行遊戲的情況下,可以對原型和預覽動畫進行預覽。管理動畫與視覺化程式設計工具之間的複雜互動。不同的身體部位可以使用不同的動畫邏輯控制。動畫的分層和mask功能。
動畫製作流程
- 動畫片段製作:動畫片段是Unity動畫系統的基礎,片段中包含了物件如何隨時間變化其位置、旋轉或其他屬性的資訊。每個片段可以被認為是一個單一的線性記錄。源於外部的動畫片段由第三方工具(如C4D或是Blender)製作,或來自運動捕捉等。
- 動畫控制器編輯:使用動畫控制器來組織動畫片段,動畫控制器是類似流程圖結構的系統,它內部擁有一個“狀態機”,用於控制當前動畫片段的播放,以及何時進行不同片段之間的切換,包括動畫片段間的插值過渡和混合,動畫控制器的內容被儲存為字尾名為”.controller”檔案進行儲存。
- 片段混合設定:一個非常簡單的動畫控制器可能只包含一個或兩個片段,例如控制在正確的時間開門或者關門的動畫。更高階的動畫控制器可能包含數十種人形動畫片段來表現主角的所有動作,同時可以在多個片段之間進行混合,以便為角色在場景中移動時提供流暢的動作。
- 繫結動畫與模型:Unity的動畫系統還具有一些特殊功能來處理人形動畫,使您能夠將任意來源(例如運動捕捉,Asset Store中下載或其他第三方動畫庫)的人形動畫重新定位到您自己的角色模型中,同時定義肌肉調整。這些特殊功能由Unity的Avatar系統提供,它將人形角色對映到了通用的內部格式。
- 引用關係:所有的這些內容 – 動畫片段、動畫控制器和Avatar,它們都通過GameObject上的Animator元件組合在一起。Animator元件具有對動畫Controller的引用,以及對該模型的Avatar的引用(如果需要的話)。動畫控制器則包含對其使用的動畫片段的引用。
Unity的動畫系統(被稱為“Mecanim”)帶有很多概念和術語,可以參參見“動畫詞彙表”。
傳統動畫系統
雖然大多數情況下推薦使用Mecanim,但Unity仍保留了在Unity 4之前存在的傳統動畫系統。有關傳統動畫系統的資訊,請參閱“這裡”
Unity未來將把工作流程合併到Mecanim中,逐漸淘汰Legacy動畫系統。
動畫片段(AnimationClip)
動畫片段是Unity動畫系統的核心元素之一。 Unity支援從外部源匯入動畫,另外也提供了一個簡易的內建動畫編輯器,可以從頭開始建立動畫片段,目前該動畫編輯器不支援人形動畫編輯。
源於外部匯入的動畫片段可能包括:
- 動作捕捉獲得的人形動畫
- 在外部3D軟體(如C4D或Blender)中建立的動畫
- Asset Store
- 對匯入的單個動畫片段的時間軸進行切割後獲得的多個動畫片段。
在Unity中建立和編輯的動畫
你也可以通過Unity的動畫介面建立和編輯動畫片段,此類動畫可以變化以下內容:
- 遊戲物件的位置、旋轉和比例。
- 元件屬性,如材質的顏色,燈光的強度,音量等。
- 你自己指令碼中定義的屬性,包括float,int,Vector和bool變數
- 你自己指令碼中定義的定時呼叫函式
源於外部的動畫
源於外部的動畫以普通3D檔案的方式匯入到Unity中。 這些檔案,無論是通用的FBX檔案還是諸如Blender,Cinema 4D,3D Studio Max等3D軟體的原生格式,都可以在檔案中以線性記錄的形式儲存物件運動的動畫資料。
有些時候,執行運動的目標和與之相關的運動動畫可以存在於同一個檔案中。也有些時候,動畫可能儲存在獨立的檔案中,與目標模型分離。
在其他大部分情況下,可能會有一個動畫庫,用於場景中各種不同的模型。例如,一些不同的人形角色可能都使用相同的行走和奔跑動畫。在這些情況下,通常在動畫檔案中放置一個簡單的替代模型,以便進行預覽。甚至,即使它們根本沒有幾何模型,只包含動畫資料,也同樣可以使用這個動畫檔案。
匯入多個動畫片段時,每個動畫片段可以作為專案檔案單獨存在。當從C4D、Blender等3D動作編輯器的外掛匯出時,也可以匯出多個動畫片段到單個FBX檔案中。如果你的檔案包含在單個時間軸上排列的多個單獨的動畫片段,則可能需要執行此操作。例如,在一個捕獲時間較長的動畫時間軸中,可能包含幾個不同的跳躍運動的動畫,您可能希望將其中的某些部分用作單個片段,並丟棄其餘的部分。 Unity通過允許您為每個片段選擇幀範圍,在匯入所有動畫一個時間軸上,提供動畫剪下工具來實現區域裁剪。
匯入動畫檔案
在Unity中使用動畫之前,需要先將其匯入到專案中。 Unity可以匯入原生的3D Studio Max(.max)和Cinema 4D(.c4d)檔案,以及可以從大多數動畫軟體匯出的通用的FBX檔案(有關匯出的詳細資訊,請參閱此處)。 要匯入動畫,只需將檔案拖動到專案的Assets資料夾。 當您在“Project”面板中選擇檔案時,您可以在“Inspector”面板中編輯匯入設定:
有關可用匯入選項的完整說明,請參閱FBX匯入頁面。
從匯入的動畫檔案檢視和複製資料。你可以在“Animation”介面中檢視匯入的動畫片段的關鍵幀和曲線。
有時,如果這些匯入的片段有許多關鍵幀和多個骨骼,資訊量可能看起來非常複雜。
開啟“動畫”介面,然後請選擇指定的帶有動畫的GameObject(帶有Animator元件的節點或者其子節點),“動畫”介面將顯示骨骼動畫的關鍵幀和曲線。
在檢視匯入的動畫關鍵幀時,“Animation”介面提供“動畫”資料的只讀檢視。 要編輯此資料,請在Unity中建立一個新的空動畫片段,然後從匯入的動畫片段中選擇、複製和貼上動畫資料到你新建立的可寫入動畫片段。
使用人形動畫
Mecanim動畫系統特別適合用於類人動物骨骼的動畫。由於人形骨骼在遊戲中廣泛使用,所以Unity提供了專門的工作流程,還有一個用於人形動畫的擴充套件工具集。
由於骨骼結構的相似性,將動畫從一個人形骨架對映到另一個人形骨架就稱為可能,從而允許重新定位和反向運動學。除了少見的例外情況,類人生物模型可以具有相同的基本結構,連線的身體,頭部和四肢代表了主要表達部分。 Mecanim系統充分利用了這一想法,簡化了動畫的裝配和控制。建立動畫的一個基本步驟是建立Mecanim所能理解的簡化人形骨骼結構與骨骼動畫中存在的實際骨骼之間的對映;在Mecanim術語中,這個對映叫做Avatar。本節中的頁面說明如何為您的模型建立Avatar。
建立Avatar
當一個模型檔案(FBX, COLLADA, 等格式)建立完成並且匯入之後, 你可以在Rig面板指定它的匯入型別。
人形動畫
如果是人形結構,則選擇”Humanoid”然後點選”Apply”. Mecanim將嘗試將當前的模型骨骼結構匹配到Avatar骨骼結構. 大部分情況下, 這一步會通過內部分析兩個骨骼結構之間的聯絡而自動完成。
如果匹配成功,你會看到在”Configure”選單邊上出現一個”√”標記。
此外,在成功匹配的情況下,將會新增一個Avatar子資源到模型資源中,您將能在project檢視中看到它。
選擇這個Avatar子資源,此時將在inspector面板出現一個”Configure Avatar”的按鈕,點選這個按鈕將會進入Avatar的配置模式。(如果模型被匯入為Generic型別,雖然也會產生Avatar子資源,但是實際上它是不可以配置的,出現Avatar只是表明它是人形結構,可以連線到其它Avatar,用作面板)
如果Mecanim未能成功建立Avatar,您將在“Configure”按鈕旁邊看到一個”×”標記,並且不會新增Avatar子資源。 發生這種情況時,您需要手動配置Avatar。
非人形動畫
Unity提供了另外兩個選項:Generic(一般)和Legacy(舊版)。 一般動畫使用Mecanim系統匯入,但不能利用那些可用於人形動畫的高階功能。 舊版動畫使用Unity在Mecanim之前提供的動畫系統。 在某些情況下,使用舊版動畫仍然有用(最顯著的是您不想完全更新的舊版專案),但新專案很少需要它們。 有關傳統動畫的更多詳細資訊,請參閱手冊的”Legacy animation system”部分。
配置Avatar
由於“Avatar”是Mecanim系統的重要方面,也就需要您為模型配置合適的Avatar。 所以,無論自動建立Avatar失敗還是成功,您都需要進入“Avatar配置”模式進行檢視,以確保“Avatar”的有效和正確設定。 最重要的一點是,您的角色的骨骼結構需要與Mecanim的預定骨骼結構相匹配,並且該模型處於“T”形姿勢。
如果Mecanim未能成功建立Avatar,您將在“Configure”按鈕旁邊看到一個”×”標記.
如果匹配成功,你會看到在”Configure”選單邊上出現一個”√”標記。
這裡的成功匹配只是意味著所有必需的骨骼已經匹配,但為了得到更好的效果,您可能還需要匹配可選的骨骼,並將模型轉換為適當的T形姿勢。
當您進入配置(Configure)選單時,編輯器將要求您儲存場景。 原因是在配置模式下,場景檢視用於單獨顯示所選模型的骨骼,肌肉和動畫資訊,而不顯示場景的其餘部分。
Once you have saved the scene, you will see a new Avatar Configuration inspector, with a bone mapping.
當你儲存場景之後,inspector檢視面板將出現用於骨骼對映的Avatar配置介面。
檢視面板顯示出哪些骨骼是必需的,哪些是可選的-可選的骨骼運動將由自動插值計算完成。 為了讓Mecanim構建一個有效的匹配,你的模型骨架需要要包含所有的必需骨骼。為了提高與“Avatar”成功匹配的機率,請使用體現對應身體部位的方式命名您的骨骼。(例如“LeftArm”,“RightForearm”就比較合適)。
如果沒能為模型建有效的匹配,您可以手動執行與Mecanim內部的內流程類似的過程:
- Sample Bind-pose(樣本繫結,嘗試讓模型呈現更接近當初它被製作成模型時的姿態,那樣的初始姿態比較容易被辨別)
- Automap(自動對映,從初始姿態建立一個骨骼對映)
- Enforce T-pose(強制T姿勢,強制模型更接近T形姿勢,這是Mecanim動畫使用的預設姿勢)
如果自動對映(Mapping-> Automap)完全或部分失敗,您可以通過從場景或層次面板中拖拽骨骼來分配。 如果Mecanim認為骨骼適合,它會在頭像檢視面板中顯示為綠色,否則顯示為紅色。
最後,如果骨骼分配正確,但角色的姿勢不正確,您將看到“Character not in T-Pose”訊息。 您可以嘗試通過”Enforce T-Pose”來修復,或者對不正確的的那些骨骼進行旋轉,最終呈現為T形姿勢。
Avatar Body Masks 身體部位
有時將動畫限制在特定的身體部位是有用的。 例如,步行動畫可能涉及角色手臂的搖擺,但如果他拿起槍,他應該把手臂端放在他面前。 您可以使用“Avatar Body Mask”(身體部位遮蔽)來指定應限制某個動畫的角色的哪些部分。
參考資料: http://www.cg.com.tw/UnityMecanim/