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