分類:Unity、C#、VS2015 工具
建立日期:2016-05-02 學習
爲了充分使用 Mecanim 類人動畫系統和類人動畫的動畫重定位功能,須要先使用其餘3D建模軟件(例如3ds Max 2015),製做一個搭好了骨架和蒙皮的類人網格模型。 測試
一、什麼是類人模型 動畫
類人模型也叫類人網格模型,它一般由一組多邊形或者三角形網格來組成。 3d
建立類人模型的過程稱爲建模。 對象
在上面這個圖中,1是經過「建模、搭骨架、蒙皮」後最終完成的類人模型,2是爲該模型搭的骨架,3是蒙皮的效果。 blog
二、製做類人模型的基本思路 教程
這裏簡單介紹如何利用3ds Max 2015從頭開始建立類人網格模型,即簡單解釋「建模、搭骨架、蒙皮」的三個基本步驟。 遊戲
(1)建模 ip
建模是指在三維建模軟件(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製做類人角色。
一、建立或獲取類人模型的途徑
在Mecanim 中,有三種途徑來獲得 Mecanim 動畫所用的類人模型。
(1)經過專業的3D建模軟件(例如3ds Max、Maya、Blender等),從頭開始本身製做須要的人體模型。這種方式須要熟悉3D建模軟件的用法,優勢是本身想作成什麼樣就作成什麼樣,缺點是須要花時間。
(2)從 Unity 資源商店購買適當的類人模型資源。這種方式的優勢是模型來得快,缺點是可能須要花費點錢。
(3)利用過程式的人物建模軟件(稱爲程序化角色系統或角色生成器,例如 Poser、Makehuman 或者 Mixamo)加快製做類人模型的過程。其中有些軟件可同時爲網格搭骨架和蒙皮(例如 Mixamo),而另一些軟件卻沒有此功能。此外,應該在使用這些軟件的過程當中儘量減小原始類人網格中的多邊形數量,以便讓其更好地適用於 Unity。這種方式的優勢是可能會提升一些製做效率,缺點是還得再學新的軟件用法,若是新的軟件不會用,可能尚未「直接用3ds Max 2015直接作」來的快。
二、將模型導出爲按單個FBX文件
Unity引擎可導入大量不一樣的通用和本地3D文件格式。
不論用哪一種建模軟件,建議將其導出爲FBX格式的文件。這種格式的優勢是:
·FBX格式的網格模型能夠同時包含關節層級、法線、紋理以及動畫信息。
·能夠將FBX網格模型導入到3ds Max 2015,來驗證動畫模型的正確性。
·能夠從FBX文件中直接導出不包含網格的動畫信息。
對於Unity 5.3.4來講,建議用3DS Max 2015製做或導入用其餘軟件製做的人體模型,完成後再將其導出爲FBX 2014格式的文件,而後就能夠在Unity中使用這個FBX文件,即利用Mecanim動畫系統對其進行動畫處理了。
三、將導出的FBX文件導入到Unity
要在Unity中使用角色模型,必須先將其導入到Unity工程中。
導入FBX格式的動畫到Unity中很簡單,只須要將模型直接拖到工程面板中的Assets文件夾中便可。
導入後,就能夠在檢視器(Inspector)的【Import Settings】中編輯導入設置。
除了前面介紹的分別將單個動畫模型導入到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內部就再也不須要分割動畫了。
下面分別解釋這兩隻方式。
一、使用包含預先分割片斷的動畫模型
包含預先分割動畫的模型是使用起來最容易的模型類型。
對於這種動畫,你將在動畫導入檢視器 (Animation Importer Inspector) 中的Animations選項卡中看到一列可用片斷,在預覽窗口 (Preview Window,在檢視器下方)中點擊【播放 (Play)】,就可預覽這些片斷。若是須要,還能夠編輯(調整)這些片斷的幀範圍。
二、使用包含未分割動畫的模型
對於這種狀況,使用動畫前必須在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) 組件添加動畫控制器。