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