Unity3D動畫係統(Mecanim)
Mecanim概述:
Mecanim是Unity提供個(gè)豐富而(ér)複雜的動畫係統,提供了:
- 針對人形角的簡易的工作流和動畫創建能力
- Retargeting(運(yùn)動重定向)功能,即把(bǎ)動畫從一個角模型應用到另(lìng)一個角模型上的能(néng)力。
- 針對Animations Clips(動畫片段)的簡易工作流,針對動畫片段及他們之間的(de)過度和(hé)交互預覽能力。
- 一個用於管理動畫間複(fù)雜(zá)交互作用的可視化窗口。
- 通(tōng)過不(bú)同邏輯來控製不同身體部位(wèi)的運動能(néng)力。
Mecanim工作流(liú):
1.資源導(dǎo)入,這一階段由美(měi)術師(shī)或動畫師通過三維工具來完成。
2.角的建立,主要分為以下兩種方式。
- 人形角的建立,Mecanim通過擴展的圖形操作界麵和動畫重定(dìng)向功能,為人物模型提(tí)供了一種殊的工作流,它包括Avatar的創(chuàng)建和對肌肉定義(Musicle Definitions)的調節。
- 一般角的建立,一般(bān)為運動物體和四足動物而設定(dìng),動畫重定向對此不適用。
3.角的運(yùn)動,包括設定動畫片段以及其相互間的交(jiāo)互作用,也包括建立狀態機和混合樹、調整動畫參數以及通過代碼控製動畫等。
獲取人形網格模型
1.人形網格模型,為了充分利用Mecanim的人形動畫係統和動畫重定向功能,需要一個具有骨骼(gé)綁定和蒙皮的人形網格模型。
- 人(rén)形網格模型一般由一組多邊形或三角形網格組成,創建模型的過程(chéng)稱為建模(modelling);
- 為了控製角(jiǎo)的(de)運動(dòng),必須(xū)為(wéi)其創建一個骨骼關節層(joint hierarchy);
- 人形網(wǎng)格模型必須與關節層級關聯起來,通過指定關節的動畫(huà)來控製定網格的運動,這個過程稱為蒙皮(skinning);
一句話來總(zǒng)結,創建好人物模型後(建模modelling),為其創建一(yī)個骨骼關節(joint hierarchy),*後異步將人(rén)物網格模型和關節關聯起來(蒙(méng)皮skinning)。[ modelling > joint hierarchy > skinning ]
2.獲(huò)取(qǔ)模型,在Mecanim係統中,可以通(tōng)過三種途(tú)徑來獲取人物網格模(mó)型:
- 使用一個過程試的人物建模工(gōng)具,Poser 、 Makehum或Mixamo等。其中有些三維軟件可以在建模的同時進行骨骼綁定和蒙皮操作。應該盡可能的減少人形(xíng)網格的(de)麵片數量,從而更好的在unity中使用。
- 在Unity Asset Store下載。
- 通過三維建模軟件來(lái)創建新的人形模型,這(zhè)類軟件包括3Dmax、Maya、Blender等。
3.導出和驗證模型,unity引擎可以導入一係列的常用3D文件(jiàn)格式,推薦使用FBX 2012,因為改格式允許:導(dǎo)出的網格中(zhōng)包含關節層級、法(fǎ)線、紋理以及動畫信息;也可以導入不包(bāo)含網格(gé)的動畫(huà)信息。
動畫(huà)分解:
1.預分解動畫模型:*容易使用的動畫模(mó)型是(shì)含(hán)有預分解動畫片段模型,這種動畫模型在導入項目後,可看到麵板中包含多個可用的動(dòng)畫片段列表,還可對(duì)每個動畫片(piàn)段的幀數範圍進行編輯調整。
2.未分解動畫模型:提供單一(yī)連續動畫片段的模型,這種情況可自行(háng)設(shè)定每個動畫(huà)的(de)片段所需要的(de)幀(zhēn)。如該模(mó)型動畫(huà)一(yī)共有100幀,1-10幀為(wéi)待機喘息狀態(tài),11-30幀(zhēn)為行走,31-60幀(zhēn)為奔跑,61-80幀為攻擊,81-100幀為死(sǐ)亡動畫。
3.為模型添(tiān)加動畫:用戶可以為任意模型的動畫組建添加動畫(huà)片段,該模型甚至可以沒有肌肉定義(非Mecanim模型),進而在Animations屬性中指定(dìng)一個(gè)默認的動畫片段和所有可用(yòng)的動畫片段。在非Mecanim模型上添加動畫片段也必須采用非(fēi)Mecanim的方式進(jìn)行,即將Muscle Definition屬性設置為None。
對具有肌肉定義的Mecnim模型處理過程如下:
- 創(chuàng)建一個Animator Controller。
- 打開Animator Controller窗(chuāng)口。
- 將定的動畫(huà)片段拖到Animator Controller窗口。
- 將模型資源拖入到Hierarchy視圖中。
4.通過模型文(wén)件(jiàn)來導入動(dòng)畫片段:該方法是遵循Unity指定的動(dòng)畫文件(jiàn)命名方案,用戶可以創建立的模型文件並按照modelName@animaionName.fbx的格式來命名。例如一個魔法師的模型(wizard.fbx),待機、行走、攻擊分別命名為 wizard@idle.fbx、wizard@walk.fbx 、wizard@attack.fbx。隻(zhī)有在這種情況下,動畫數據才會被使用。
使用人形角動畫
Mecanim動畫係統*適(shì)合用於人形角的動(dòng)畫製作,因(yīn)為人形模型均具有相(xiàng)同的基本結構,所以用戶(hù)可以實現將動畫效果從一個人形骨(gǔ)架映射到另外一個人形骨架上去,從而實現動畫重定向的功能。
創建一個動畫的基本(běn)步(bù)驟就是創建(jiàn)一個從Mecanim係統的簡化人形(xíng)骨架結構到用戶實際提供的骨架結構的映射,這種映射關係稱為Avatar,下麵就介紹如何為一個模型創建一個Avatar。
創建Avatar
在導入一個模型(例如fbx)後,在該模型麵板上選中Rig選(xuǎn)項卡指定他它的骨骼模型,包括Humanoid、Generic和Legacy這三種。
1.人形動畫(Humanoid)
對於人形骨架,選中Animation Type下拉菜(cài)單,選擇Humanoid,單擊Apply按鈕,Mecanim係統就會嚐試(shì)將用戶提供的骨架結構與(yǔ)Mecanim係統(tǒng)內嵌的骨架結構進行匹配,匹配成功後在可以看到Configure...複選框被選(xuǎn)中。在匹配成功(gōng)的情況下,會在模型資源中添(tiān)加一(yī)個Avatar子(zǐ)資源。需要注意的是,這裏匹配成功僅僅是匹配了所有必要的關節骨骼,如果想達到更好的效果,還需要對(duì)Avatar進行手動調整。如果在Configure...旁邊顯示一個叉號,即不會生成相應的Avatar子資源,這種情況就需要手動配置Avatar。
2.非人(rén)形動畫
Unity為非人形動畫(huà)提供了兩個選項,一般動畫類型(Generic)和舊(jiù)版動畫類型(Legacy),一般動畫仍可由Mecanim係統導入(rù),但無法使用人形動畫專有的功能。
配(pèi)置Avatar:
在上一(yī)步生成Avatar子資源後,即可配置Avatar。Avatat是Mecanim係統中很為重要的模塊,因此為模型資源正確的設置Avatar也至關重要,不管Avatar自動創建過(guò)程是否(fǒu)成功,用戶都需要進入(rù)Configure...Avatar界(jiè)麵中確認(rèn)Avatar的有效性,即確認用戶提供的骨骼結構與Mecanim係統預定義(yì)的骨骼結構是否正(zhèng)確的關聯起來,並且模型處於T形姿態。
點擊Configure...後Scene視圖將被用於顯(xiǎn)示當前模型的骨骼、肌肉、和動畫信息,同時(shí)會出現(xiàn)一個Avatar配置麵板,可看到一個關鍵骨骼映射信息的(de)視圖,該視圖還顯示了哪些骨骼是(shì)必(bì)須匹配的(實線圓圈),哪些是(shì)可選匹(pǐ)配的(虛線(xiàn)圓圈)。為了方便Mecanim進行骨骼匹配,用戶提供的骨架中應半(bàn)酣所有必須匹配的骨骼。此外為了提高匹配的成功率,應盡量通過骨骼代表的部位來給骨骼命名。
如果複發為模型找(zhǎo)到(dào)合適的匹配,用戶也(yě)可以通過類似Mecanim內部使用的方(fāng)法來進行手動配置:
1.在Avatar麵板中選擇Pose下拉項中的Sample Bind-pose(得到模型的原始(shǐ)姿態);
2.在Avatar麵板(bǎn)中選擇Mapping下拉項中的Automap(基於原始(shǐ)姿態創建一個骨骼映射);
3.在Avatar麵板中選擇Pose下拉項中的Enforce T-pose(強製模型貼近T形姿態,即Mecanim動畫的默(mò)認姿態)
如果在第二個步驟中,自動映射的過程出現失敗或者(zhě)局部失敗,用戶可通(tōng)過Scene視圖或(huò)者Hierarchy視圖中拖出骨骼並指定骨(gǔ)骼,如果Mecanim認為骨骼匹配,將在Avatar麵板中以綠顯示,否(fǒu)則以紅顯(xiǎn)示。
如果沒有指定正確則會看(kàn)到Sence視圖中會出現Character not inT-pose提示(shì),可通過EnforceT-pose強製將模型轉換為T型姿態或者旋轉至模型為T型姿態。
上述骨骼映射信(xìn)息(xī)還可奧村一個人形模版文件(Humanoid Template File).ht ,這個文件可在所(suǒ)有使用這個映射關係的角之間複(fù)用。
設置Muscle參數:
Mecanim使用肌肉(ròu)(Muscle)來限製不同骨骼的運(yùn)動範圍,一旦Avatar配置(zhì)完成(chéng),Mecanim就能解析其骨骼結構,進而用戶就可以在Muscles選項卡中調節(jiē)相關參數(shù)。在此可比較容易的調節角的運動範圍,確保看起來真實自然。
用戶可(kě)以在視圖上方使用預(yù)先定義的變形方(fāng)法對幾根骨(gǔ)骼同時進行調(diào)整,也可在視圖下方(fāng)對身體上單(dān)根骨骼進(jìn)行調整。
人形動畫的重定向:
人形重定向是Mecanim係統中強大的功能之一,這意味著開發者隻需要很簡單的操作即可將(jiāng)一組動畫應用到其他人(rén)形角模型上,前提是必須正確的配置(zhì)Avatar。
導入單(dān)個動畫文件:
在從三維軟(ruǎn)件導出模型前,遵循unity3d動畫文件命名方案,為單個動畫模(mó)型文件命名modelName@animationName.fbx,即 模型名稱(chēng)@動畫名稱.fbx 。
例如對於一個名為warlock(魔法師)的模型,分別指定 idle(待機),walk(行走),attack(攻擊),death(死亡) 等(děng)動畫(huà)。
即命名規範:
warlock@idle.fbx
warlock@walk.fbx
warlock@attack.fbx
warlock@death.fbx
另外還(hái)需導出一個 warlock.fbx 不(bú)帶動畫的模型文件,在導出模型前勾選 no animation選項即可,warlock.fbx模型會遵循動畫文件(jiàn)命名(míng)規(guī)範來索引其他帶動畫的模型文件(jiàn)。
- 上一(yī)篇:HoloLens 開發簡要教程(Unity3d+VS2015 2017/6/29
- 下一篇:Unity3D物理引(yǐn)擎之剛體部件(Rigidbody) 2017/6/26