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