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