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