Unity3D動畫系統(Mecanim)
Mecanim概述:
Mecanim是Unity提(ti)供個(ge)豐(feng)富而復雜(za)的動畫系統,提(ti)供了:
- 針對人形角的簡易的工作流和動畫創建能力
- Retargeting(運動重定向)功能,即把動畫從一個角模型應用到另一個角模型上的能力。
- 針對Animations Clips(動畫片段)的簡易工作流,針對動畫片段及他們之間的過度和交互預覽能力。
- 一個用于管理動畫間復雜交互作用的可視化窗口。
- 通過不同邏輯來控制不同身體部位的運動能力。
Mecanim工作流(liu):
1.資源(yuan)導入,這一階段由(you)美術師(shi)或動(dong)畫師(shi)通(tong)過三(san)維工具來完成(cheng)。
2.角(jiao)的建立,主(zhu)要分(fen)為以下(xia)兩種方式(shi)。
- 人形角的建立,Mecanim通過擴展的圖形操作界面和動畫重定向功能,為人物模型提供了一種殊的工作流,它包括Avatar的創建和對肌肉定義(Musicle Definitions)的調節。
- 一般角的建立,一般為運動物體和四足動物而設定,動畫重定向對此不適用。
3.角的(de)運動(dong)(dong),包括(kuo)設定(ding)動(dong)(dong)畫片段以及(ji)其相互間的(de)交互作用,也包括(kuo)建立狀態(tai)機(ji)和混合樹、調整(zheng)動(dong)(dong)畫參數(shu)以及(ji)通過(guo)代碼控制動(dong)(dong)畫等。
獲(huo)取人形網格模型(xing)
1.人形(xing)(xing)網(wang)格(ge)模型(xing),為了充分利用Mecanim的人形(xing)(xing)動畫系統和動畫重定向(xiang)功(gong)能,需要一(yi)個(ge)具有骨骼綁定和蒙皮的人形(xing)(xing)網(wang)格(ge)模型(xing)。
- 人形網格模型一般由一組多邊形或三角形網格組成,創建模型的過程稱為建模(modelling);
- 為了控制角的運動,必須為其創建一個骨骼關節層(joint hierarchy);
- 人形網格模型必須與關節層級關聯起來,通過指定關節的動畫來控制定網格的運動,這個過程稱為蒙皮(skinning);
一(yi)句話(hua)來(lai)(lai)總結,創建(jian)(jian)好人(ren)物模型后(hou)(建(jian)(jian)模modelling),為其創建(jian)(jian)一(yi)個骨(gu)骼(ge)關(guan)節(joint hierarchy),*后(hou)異(yi)步(bu)將人(ren)物網格模型和關(guan)節關(guan)聯起來(lai)(lai)(蒙皮skinning)。[ modelling > joint hierarchy > skinning ]
2.獲取模(mo)型(xing),在Mecanim系(xi)統中(zhong),可(ke)以(yi)通過三種途(tu)徑來獲取人物網格模(mo)型(xing):
- 使用一個過程試的人物建模工具,Poser 、 Makehum或Mixamo等。其中有些三維軟件可以在建模的同時進行骨骼綁定和蒙皮操作。應該盡可能的減少人形網格的面片數量,從而更好的在unity中使用。
- 在Unity Asset Store下載。
- 通過三維建模軟件來創建新的人形模型,這類軟件包括3Dmax、Maya、Blender等。
3.導(dao)出和驗證(zheng)模型,unity引擎可以導(dao)入一系列的常用(yong)3D文(wen)件格(ge)式,推(tui)薦使用(yong)FBX 2012,因為改(gai)格(ge)式允許:導(dao)出的網格(ge)中包(bao)含關節層級、法線、紋理以及動(dong)(dong)畫信(xin)息;也可以導(dao)入不包(bao)含網格(ge)的動(dong)(dong)畫信(xin)息。
動畫分解(jie):
1.預分解動(dong)畫模(mo)(mo)(mo)型(xing):*容易使用的動(dong)畫模(mo)(mo)(mo)型(xing)是含有預分解動(dong)畫片(pian)段(duan)模(mo)(mo)(mo)型(xing),這(zhe)種動(dong)畫模(mo)(mo)(mo)型(xing)在導(dao)入項目后,可看到面板中包含多個(ge)可用的動(dong)畫片(pian)段(duan)列表(biao),還可對每個(ge)動(dong)畫片(pian)段(duan)的幀數(shu)范圍進行編輯調(diao)整。
2.未分(fen)解(jie)動畫模(mo)型:提供單(dan)一連續動畫片段的(de)模(mo)型,這種情(qing)況(kuang)可自行(xing)設(she)定每個動畫的(de)片段所(suo)需要的(de)幀(zhen)(zhen)。如該(gai)模(mo)型動畫一共有(you)100幀(zhen)(zhen),1-10幀(zhen)(zhen)為(wei)(wei)(wei)待機喘息狀(zhuang)態(tai),11-30幀(zhen)(zhen)為(wei)(wei)(wei)行(xing)走(zou),31-60幀(zhen)(zhen)為(wei)(wei)(wei)奔跑,61-80幀(zhen)(zhen)為(wei)(wei)(wei)攻擊,81-100幀(zhen)(zhen)為(wei)(wei)(wei)死(si)亡(wang)動畫。
3.為模(mo)型添(tian)(tian)加動(dong)畫:用戶(hu)可(ke)以為任意模(mo)型的(de)動(dong)畫組建添(tian)(tian)加動(dong)畫片段(duan)(duan),該模(mo)型甚至可(ke)以沒有(you)(you)肌肉定(ding)義(非(fei)Mecanim模(mo)型),進而在(zai)Animations屬性中指(zhi)定(ding)一個默認(ren)的(de)動(dong)畫片段(duan)(duan)和(he)所有(you)(you)可(ke)用的(de)動(dong)畫片段(duan)(duan)。在(zai)非(fei)Mecanim模(mo)型上(shang)添(tian)(tian)加動(dong)畫片段(duan)(duan)也必須采(cai)用非(fei)Mecanim的(de)方式進行,即將(jiang)Muscle Definition屬性設(she)置為None。
對具(ju)有(you)肌(ji)肉定義的Mecnim模型處理過程(cheng)如下(xia):
- 創建一個Animator Controller。
- 打開Animator Controller窗口。
- 將定的動畫片段拖到Animator Controller窗口。
- 將模型資源拖入到Hierarchy視圖中。
4.通過模(mo)型文件來(lai)導入(ru)動(dong)畫(hua)片段:該(gai)方(fang)法是(shi)遵循Unity指定的動(dong)畫(hua)文件命名方(fang)案,用戶可以創(chuang)建立的模(mo)型文件并按照[email protected]的格(ge)式來(lai)命名。例如一個魔法師的模(mo)型(wizard.fbx),待(dai)機、行走、攻擊(ji)分別(bie)命名為 [email protected]、[email protected] 、[email protected]。只有在這種情況下,動(dong)畫(hua)數據才會被使用。
使用人形角動畫
Mecanim動畫(hua)系統*適合用(yong)于(yu)人形角的動畫(hua)制作,因為人形模型均(jun)具有相同的基本結(jie)構(gou),所以(yi)用(yong)戶可以(yi)實現將動畫(hua)效果從(cong)一個人形骨架映射到另(ling)外一個人形骨架上去,從(cong)而(er)實現動畫(hua)重定向的功能(neng)。
創(chuang)(chuang)建(jian)一個(ge)動畫的基(ji)本步驟就是創(chuang)(chuang)建(jian)一個(ge)從Mecanim系統的簡化人(ren)形骨(gu)架結(jie)構到用戶(hu)實際提供的骨(gu)架結(jie)構的映(ying)射,這種映(ying)射關系稱為Avatar,下(xia)面就介紹(shao)如何(he)為一個(ge)模型(xing)創(chuang)(chuang)建(jian)一個(ge)Avatar。
創建Avatar
在導(dao)入一個模(mo)型(例(li)如fbx)后,在該模(mo)型面板(ban)上(shang)選中(zhong)Rig選項卡指定(ding)他它的骨骼模(mo)型,包括(kuo)Humanoid、Generic和Legacy這三種。
1.人形動畫(Humanoid)
對(dui)于人形(xing)骨(gu)架(jia),選中(zhong)Animation Type下(xia)拉(la)菜單(dan),選擇Humanoid,單(dan)擊Apply按鈕(niu),Mecanim系統(tong)就(jiu)會(hui)嘗試將用戶提供的(de)骨(gu)架(jia)結構(gou)與Mecanim系統(tong)內(nei)嵌(qian)的(de)骨(gu)架(jia)結構(gou)進(jin)行(xing)匹(pi)(pi)配(pei)(pei)(pei),匹(pi)(pi)配(pei)(pei)(pei)成(cheng)功后在可以看到Configure...復選框(kuang)被選中(zhong)。在匹(pi)(pi)配(pei)(pei)(pei)成(cheng)功的(de)情況下(xia),會(hui)在模型資(zi)源(yuan)中(zhong)添加(jia)一個Avatar子(zi)(zi)資(zi)源(yuan)。需要注(zhu)意的(de)是,這里匹(pi)(pi)配(pei)(pei)(pei)成(cheng)功僅僅是匹(pi)(pi)配(pei)(pei)(pei)了(le)所有必(bi)要的(de)關節骨(gu)骼(ge),如果想達到更好的(de)效(xiao)果,還需要對(dui)Avatar進(jin)行(xing)手動調整。如果在Configure...旁(pang)邊顯示一個叉號,即不會(hui)生成(cheng)相(xiang)應的(de)Avatar子(zi)(zi)資(zi)源(yuan),這種情況就(jiu)需要手動配(pei)(pei)(pei)置Avatar。
2.非人形動(dong)畫
Unity為非人形動畫(hua)提供了兩個選項,一(yi)般動畫(hua)類(lei)型(xing)(Generic)和舊版動畫(hua)類(lei)型(xing)(Legacy),一(yi)般動畫(hua)仍可由(you)Mecanim系統(tong)導(dao)入,但無法使用人形動畫(hua)專有的功能。
配(pei)置Avatar:
在上一步生成Avatar子資源后(hou),即可配(pei)置Avatar。Avatat是Mecanim系(xi)統(tong)中很為(wei)重(zhong)要的(de)模塊(kuai),因此為(wei)模型(xing)資源正(zheng)確(que)(que)的(de)設置Avatar也至關重(zhong)要,不管Avatar自動創(chuang)建過(guo)程是否成功,用戶都需要進(jin)入Configure...Avatar界面中確(que)(que)認Avatar的(de)有效性,即確(que)(que)認用戶提供的(de)骨(gu)骼結(jie)構(gou)與Mecanim系(xi)統(tong)預(yu)定(ding)義的(de)骨(gu)骼結(jie)構(gou)是否正(zheng)確(que)(que)的(de)關聯起來(lai),并(bing)且模型(xing)處于T形姿態。
點(dian)擊Configure...后Scene視(shi)圖將被用于顯(xian)示當前模型(xing)的(de)骨(gu)骼、肌(ji)肉、和(he)動畫(hua)信息(xi),同時會出(chu)現(xian)一個Avatar配置面板,可(ke)看(kan)到一個關鍵骨(gu)骼映射信息(xi)的(de)視(shi)圖,該(gai)視(shi)圖還顯(xian)示了哪些骨(gu)骼是必(bi)須匹(pi)配的(de)(實線(xian)圓圈(quan)),哪些是可(ke)選匹(pi)配的(de)(虛線(xian)圓圈(quan))。為(wei)了方便Mecanim進行骨(gu)骼匹(pi)配,用戶提(ti)供的(de)骨(gu)架中應半(ban)酣所有(you)必(bi)須匹(pi)配的(de)骨(gu)骼。此外為(wei)了提(ti)高(gao)匹(pi)配的(de)成功率,應盡量通過(guo)骨(gu)骼代表(biao)的(de)部位來給骨(gu)骼命名。
如果復發為模型找(zhao)到合適(shi)的匹配(pei),用戶也可以通過類似Mecanim內部使用的方法來進(jin)行手動配(pei)置:
1.在(zai)Avatar面板中選擇Pose下(xia)拉項(xiang)中的Sample Bind-pose(得(de)到模型(xing)的原始(shi)姿態);
2.在Avatar面板中(zhong)選擇Mapping下(xia)拉(la)項中(zhong)的Automap(基于原(yuan)始姿態創建一個骨骼映射);
3.在(zai)Avatar面板中(zhong)選擇Pose下拉項中(zhong)的(de)(de)Enforce T-pose(強制模(mo)型貼(tie)近T形(xing)姿態(tai),即Mecanim動畫的(de)(de)默認姿態(tai))
如果在(zai)第二個(ge)步驟中(zhong),自動(dong)映射(she)的過程出(chu)現失敗或者(zhe)局(ju)部(bu)失敗,用戶可通(tong)過Scene視圖或者(zhe)Hierarchy視圖中(zhong)拖出(chu)骨(gu)骼(ge)并指定骨(gu)骼(ge),如果Mecanim認為骨(gu)骼(ge)匹(pi)配,將在(zai)Avatar面板(ban)中(zhong)以綠顯(xian)示(shi)(shi),否(fou)則以紅顯(xian)示(shi)(shi)。
如果(guo)沒(mei)有指(zhi)定正確則會看到Sence視圖中會出現Character not inT-pose提示,可通(tong)過EnforceT-pose強制將模(mo)型轉換為(wei)T型姿(zi)態或者旋轉至模(mo)型為(wei)T型姿(zi)態。
上述骨骼映射(she)信息還可(ke)奧村一個(ge)人(ren)形模版文件(Humanoid Template File).ht ,這(zhe)個(ge)文件可(ke)在所有使用這(zhe)個(ge)映射(she)關系的角之間復用。
設(she)置Muscle參(can)數:
Mecanim使(shi)用(yong)肌(ji)肉(Muscle)來(lai)限制不同(tong)骨骼(ge)的(de)運(yun)動(dong)范圍(wei),一旦Avatar配置完成,Mecanim就(jiu)能解析其骨骼(ge)結構,進而(er)用(yong)戶(hu)就(jiu)可以在Muscles選項卡中調節相(xiang)關參(can)數。在此可比(bi)較容易的(de)調節角的(de)運(yun)動(dong)范圍(wei),確保看起來(lai)真實自然。
用(yong)戶可以(yi)在(zai)視圖上方使用(yong)預先定義的變形(xing)方法對幾(ji)根(gen)骨(gu)骼(ge)同(tong)時進行調整,也可在(zai)視圖下方對身(shen)體(ti)上單根(gen)骨(gu)骼(ge)進行調整。
人形動畫的重定向:
人形重(zhong)定向是Mecanim系統中強大的功能(neng)之一(yi),這意味(wei)著(zhu)開(kai)發者只(zhi)需(xu)要很簡單的操作即可將(jiang)一(yi)組動畫應用到(dao)其(qi)他人形角模型上,前提(ti)是必須(xu)正確的配置Avatar。
導入單個動畫文(wen)件:
在從三(san)維軟件(jian)(jian)導出模(mo)(mo)型前,遵循(xun)unity3d動(dong)(dong)畫文(wen)件(jian)(jian)命名方案,為單個動(dong)(dong)畫模(mo)(mo)型文(wen)件(jian)(jian)命名[email protected],即(ji) 模(mo)(mo)型名稱(cheng)(cheng)@動(dong)(dong)畫名稱(cheng)(cheng).fbx 。
例如對于一個名為warlock(魔法師)的模型,分別指定 idle(待(dai)機),walk(行走(zou)),attack(攻擊),death(死(si)亡) 等動(dong)畫。
即命名規(gui)范(fan):
另外(wai)還需導出一個 warlock.fbx 不帶動畫(hua)的(de)模(mo)型文(wen)(wen)件(jian),在導出模(mo)型前(qian)勾選 no animation選項即可,warlock.fbx模(mo)型會(hui)遵(zun)循(xun)動畫(hua)文(wen)(wen)件(jian)命名規(gui)范來(lai)索引其他帶動畫(hua)的(de)模(mo)型文(wen)(wen)件(jian)。
- 上一篇:HoloLens 開發簡要教程(Unity3d+VS2015 2017/6/29
- 下一篇:Unity3D物理引擎之剛體部件(Rigidbody) 2017/6/26
