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