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