分類:Unity、C#、VS2015
創建日期:2016-05-02
一、制作或購買類人模型
為了充分使用 Mecanim 類人動畫系統和類人動畫的動畫重定位功能,需要先使用其他3D建模軟件(例如3ds Max 2015),制作一個搭好了骨架和蒙皮的類人網格模型。
1、什么是類人模型
類人模型也叫類人網格模型,它通常由一組多邊形或者三角形網格來組成。
創建類人模型的過程稱為建模。
在上面這個圖中,1是通過“建模、搭骨架、蒙皮”后最終完成的類人模型,2是為該模型搭的骨架,3是蒙皮的效果。
2、制作類人模型的基本思路
這里簡單介紹如何利用3ds Max 2015從頭開始創建類人網格模型,即簡單解釋“建模、搭骨架、蒙皮”的三個基本步驟。
(1)建模
建模是指在三維建模軟件(3ds Max、Maya、Blender 等)中創建類人網格的過程。
下面給出的是你在建模時應該遵循的要點,這樣做可確保模型在 Unity 工程的動畫中能很好地使用類人模型。
(1)網格拓撲結構要“合理”。什么叫“合理”每個人的理解都不太一樣,但通常情況下,你應當牢記:模型在動畫化時其頂點和三角形的變形方式很重要。在沒有難看的網格變形的情況下,糟糕的網格拓撲結構可能會導致模型無法運動。
掌握拓撲結構快速入門的捷徑是:通過大量學習別人已經制作好的三維角色網格模型,逐步了解和理解拓撲結構的含義,以及如此安排的原因。
(2)注意網格縮放比例。要注意導入的模型和“米立方體”的大小是否一致(標准 Unity 基本立方體的邊長為一個單位,所以大多數情況下,通常認為是 1m 立方體)。或者說,一定要檢查三維資源包使用的單位是否是“米”,如果不是就調整導出設置,以確保模型大小與立方體的比例正確。
這一原則看似簡單,其實也很重要。除非極其小心,否則一不留神很容易創建出沒有任何縮放比例概念的模型,導致導入 Unity 后形成的是一組大小不成比例的對象。
(3)排列網格時,一定要讓角色的雙腳站在坐標原點或模型的“錨點”。由於角色通常在地面上直立行走,如果其錨點(即變換位置)本來就在地面上,那就會更容易控制。
(4)如果可以的話,盡量使用 T 字姿勢 (T-pose) 建模。這樣有助於留出空間,讓你在需要的地方(例如腋下)完善多邊形細節。同時這還能讓你更容易在網格中放置裝置。
(5)清理模型。如果可能,覆蓋孔洞,焊接頂點,移除隱藏面,這樣有助於蒙皮,特別是自動蒙皮過程。
下圖是蒙皮網格 (Skin Mesh),即:經建模、加紋理及三角化后的結果。

(2)搭骨架
為了控制角色運動,必須先利用3ds Max 2015等建模軟件創建一個定義網格內骨骼及其相互之間運動關系的關節層級(joint hierarchy)。
這個創建關節層級的過程稱為“搭骨架(rigging)”。
這是創建關節骨架來控制模型運動的過程。
三維資源包提供了多種方式,為類人裝置創建關節。范圍包括已經構建好、可以縮放后放入網格的兩足動物骨架,以及創建自己的骨骼結構的單塊骨骼創建和父子化工具。盡管細節已超出 Unity 的范圍,這里還是有一些通用指南:
學習已有的類人骨架層級(例如兩足動物),且如果可能,使用或模仿骨骼結構。
確保臀部是骨架層級的父骨骼。
骨架中至少需要十五塊骨骼。
關節/骨骼層級應遵循所創建角色的自然結構。假如手臂和腿成對出現,應當為它們使用一致的名稱(例如,"arm_L" 表示左臂,"arm_R" 表示右臂等)。可能的層級包括:
臀部 – 脊椎 – 胸部 – 肩膀 – 大臂 – 前臂 – 手
臀部 – 脊椎 – 胸部 – 脖子 – 頭
臀部 – 大腿 – 腿 – 腳 – 腳趾 – 趾端
下圖為兩足動物骨架 (Biped Skeleton),放置成 T 字姿勢 (T-pose):
(3)蒙皮
類人網格必須與關節層級關聯起來,這樣看着才像個“人”。另外,只有關聯以后,才能通過指定關節的動畫來控制特定網格的運動。
簡單來說,這個“將骨架連接到網格的過程”稱為“蒙皮(skinning)”。說白了,就是給類人骨骼(或骨架)模型套一層“人皮”或“穿衣”,當然了,叫“蒙皮”比叫“套一層人皮”或“穿上衣服”好聽和高大上多了。
准確來說,蒙皮就是向“骨架”附加“網格”的過程。
蒙皮包括將網格中頂點綁定到骨骼,可以直接綁定(稱為剛性綁定),或者結合對許多骨骼的混合影響予以綁定(稱為柔性綁定)。不同的軟件采用的蒙皮方法可能不同,例如分配獨特頂點和在網格上逐骨繪制影響權重。初始設置通常是自動的,例如通過找到最接近的影響或使用“熱圖”。
蒙皮通常需要開展大量的工作和使用動畫進行測試,以確保獲得滿意的蒙皮變形效果。
這個過程的一些通用指南如下:
(1)最初使用自動化過程來設置蒙皮(請參閱 3DMax、Maya 等相關教程)。
(2)為你的裝置創建簡單的動畫,或者導入一些動畫數據作為蒙皮測試。這樣可讓你快速評估蒙皮在運動中的效果。
(3)逐步編輯並完善蒙皮方案。
(4)堅持在柔性綁定時“最多”使用四種影響,這是 Unity 可以處理的數目上限。如果部分網格受到的影響超過四種,那么在 Unity 中播放動畫時至少會丟失一些信息。
下圖為交互式皮膚綁定 (Interactive Skin Bind),這是眾多軟件采用的蒙皮方法之一。

二、制作類人角色
利用3ds Max 2015做完“建模、搭骨架和蒙皮”的過程以后,就可以將其導入到Unity中,然后再利用Mecanim制作類人角色。
1、創建或獲取類人模型的途徑
在Mecanim 中,有三種途徑來得到 Mecanim 動畫所用的類人模型。
(1)通過專業的3D建模軟件(例如3ds Max、Maya、Blender等),從頭開始自己制作需要的人體模型。這種方式需要熟悉3D建模軟件的用法,優點是自己想做成什么樣就做成什么樣,缺點是需要花時間。
(2)從 Unity 資源商店購買適當的類人模型資源。這種方式的優點是模型來得快,缺點是可能需要花費點錢。
(3)利用過程式的人物建模軟件(稱為程序化角色系統或角色生成器,例如 Poser、Makehuman 或者 Mixamo)加快制作類人模型的過程。其中有些軟件可同時為網格搭骨架和蒙皮(例如 Mixamo),而另外一些軟件卻沒有此功能。此外,應該在使用這些軟件的過程中盡可能減少原始類人網格中的多邊形數量,以便讓其更好地適用於 Unity。這種方式的優點是可能會提高一些制作效率,缺點是還得再學新的軟件用法,如果新的軟件不會用,可能還沒有“直接用3ds Max 2015直接做”來的快。
2、將模型導出為按單個FBX文件
Unity引擎可導入大量不同的通用和本地3D文件格式。
不論用哪種建模軟件,建議將其導出為FBX格式的文件。這種格式的優點是:
·FBX格式的網格模型可以同時包含關節層級、法線、紋理以及動畫信息。
·可以將FBX網格模型導入到3ds Max 2015,來驗證動畫模型的正確性。
·可以從FBX文件中直接導出不包含網格的動畫信息。
對於Unity 5.3.4來說,建議用3DS Max 2015制作或導入用其他軟件制作的人體模型,完成后再將其導出為FBX 2014格式的文件,然后就可以在Unity中使用這個FBX文件,即利用Mecanim動畫系統對其進行動畫處理了。
3、將導出的FBX文件導入到Unity
要在Unity中使用角色模型,必須先將其導入到Unity工程中。
導入FBX格式的動畫到Unity中很簡單,只需要將模型直接拖到工程面板中的Assets文件夾中即可。
導入后,就可以在檢視器(Inspector)的【Import Settings】中編輯導入設置。
三、導入多個模型動畫到Unity
除了前面介紹的分別將單個動畫模型導入到Unity中以外,還有一種導入動畫模型的方式,該方式按照 Unity用於動畫文件的命名規則來為其命名。
使用這種方式時,可對分別創建的模型文件使用 “modelName@animationName.fbx”的約定為其命名。例如,對一個叫做 "goober" 的模型,可以使用名稱為下面的4個文件分別導入單獨的空閑、走路、跳躍和跳牆動畫:
空閑動畫文件名:goober@idle.fbx
走路動畫文件名:goober@walk.fbx
跳躍動畫文件名:goober@jump.fbx
跳牆動畫文件名:goober@walljump.fbx"
這樣雖然原始文件同網格數據一起導出,但只有這些文件的動畫數據才會被使用。
下圖是動畫角色所用4個動畫文件的示例(注意,.fbx擴展名在 Unity 中默認不顯示,單擊選擇某個文件后,才能看到其擴展名):
當將這4個文件拖到Project的Assets文件夾下以后,Unity 就會自動導入全部4個文件,並將所有動畫收集到一個沒有 @ 標記的文件中。例如,在上圖所示的示例中,程序會將 其收集到goober.mb 文件中,該文件會自動引用空閑、跳躍、走路和跳牆的動畫。
對於 FBX 文件來說,導入多個動畫時,只需導出每個文件需要的關鍵幀(在 FBX 對話框中激活動畫),然后將沒有勾選動畫的模型文件(例如 goober.fbx)和4個片段導出為 goober@animname.fbx即可。
四、分割動畫
分割動畫就是將動畫分解為動畫片段(Animation Clips)。
一個動畫角色一般來說都會具有一系列的在不同情境下被觸發的基本動作,比如行走、奔跑、跳躍、投擲、死亡、……等。這些基本動作都被稱為動畫片段。
根據具體需求,上述基本動作有兩種處理方式:
方式1:導入按固定順序播放各個基本動作的單一動畫片段。
方式2:分別導入若干個獨立的動畫片段。這樣在Unity內部就不再需要分割動畫了。
下面分別解釋這兩只方式。
1、使用包含預先分割片段的動畫模型
包含預先分割動畫的模型是使用起來最容易的模型類型。
對於這種動畫,你將在動畫導入檢視器 (Animation Importer Inspector) 中的Animations選項卡中看到一列可用片段,在預覽窗口 (Preview Window,在檢視器下方)中點擊【播放 (Play)】,就可預覽這些片段。如果需要,還可以編輯(調整)這些片段的幀范圍。
2、使用包含未分割動畫的模型
對於這種情況,使用動畫前必須在Unity內部先將該單一動畫片段分解為若干個子片段。具體做法是:導入FBX格式的模型后,在導入設置 (Import Settings) 中的分割動畫 (Split Animations) 中告知 Unity 資源文件中的哪些幀構成了哪個動畫片段 (Animation Clip)。在此處指定的名稱用於在游戲中用來激活動畫。
對於那些將片段作為連續動畫來提供的模型,在動畫導入檢視器 (Animation Importer Inspector) 中的動畫 (Animation) 選項卡中,可以定義符合獨立動畫序列(走路、跳躍等)的幀范圍。按下 (+) 並選擇包含在片段中的幀范圍,即可創建一個新動畫片段。
對於包含肌肉線條 (Mecanim) 的模型,分割動畫的步驟如下:
(1)創建一個新的動畫控制器 (New Animator Controller)
(2)打開動畫控制器窗口 (Animator Controller Window)
(3)將需要的動畫片段拖入動畫控制器窗口 (Animator Controller Window)
(4)將模型資源拖入層次視圖 (Hierarchy)。
(5)向資源動畫器 (Animator) 組件添加動畫控制器。