• Unity3D動畫係統(tǒng)(Mecanim)

    2017/6/26      點擊:

    Mecanim概(gài)述:

    Mecanim是Unity提供個豐富而複雜的動畫係統,提(tí)供了:

    • 針對人形角的簡(jiǎn)易(yì)的工(gōng)作流和動畫創建能力
    • Retargeting(運動重(chóng)定向)功能,即把動畫從一個角(jiǎo)模型應(yīng)用到另一個角模型上的能力(lì)。
    • 針對Animations Clips(動畫片段(duàn))的簡易工作流,針對動畫片段及他們之間的過(guò)度和交互預覽能力(lì)。
    • 一個用(yòng)於管理動畫間(jiān)複雜(zá)交互(hù)作(zuò)用的可視化窗(chuāng)口。
    • 通(tōng)過不同邏輯來控(kòng)製不(bú)同(tóng)身體部位的運動能力。

    Mecanim工作流:

    1.資源導入,這一(yī)階段由美術師或動(dòng)畫師通過(guò)三維工具來完(wán)成。

    2.角的建立,主要分為以下兩種方式(shì)。

    • 人形角的建立,Mecanim通過擴(kuò)展的圖形(xíng)操作界(jiè)麵和動畫重定向功能(néng),為人物模型(xíng)提供了一種殊的工作流,它包括Avatar的創建和對肌肉定義(Musicle Definitions)的調節。
    • 一般角的建立,一般為運動物體和四足動物而設定,動畫重定(dìng)向對此不適用。

    3.角的運動(dòng),包括設定動畫片(piàn)段以及其(qí)相互間(jiān)的交互(hù)作用,也包括建立狀(zhuàng)態機和(hé)混合樹、調整動畫參數以及通過(guò)代碼控(kòng)製動畫等(děng)。

    獲取人形(xíng)網格模型

    1.人形網格模型,為了充分利用Mecanim的人形動畫係統和(hé)動畫重定向功能,需(xū)要一個具有骨骼綁定和蒙皮的人形網格模型。

    • 人形網格(gé)模型一般由一組多邊形(xíng)或三角形網格組成,創建模型的過程稱為建(jiàn)模(modelling);
    • 為了控製角的運動,必(bì)須為其創建一個骨骼關節層(joint hierarchy);
    • 人形網格模型必須與關節層級關聯起來,通過指定(dìng)關節的動畫來控製定網格的運動(dòng),這個過程稱為蒙皮(skinning);

    一句話來總結,創建好人物模型後(建(jiàn)模modelling),為其創建一個骨骼關節(joint hierarchy),*後異步將人物網格模型和關節關聯起來(蒙皮skinning)。[ modelling > joint hierarchy > skinning ]

    2.獲取模型,在Mecanim係統中,可以通(tōng)過三種途徑來獲取人物網格模型:

    • 使(shǐ)用一個過程試的人物建(jiàn)模(mó)工具,Poser 、 Makehum或Mixamo等。其中有些三維軟(ruǎn)件可以在(zài)建模的同時進(jìn)行骨骼綁定和蒙皮(pí)操作。應該盡(jìn)可能(néng)的減少人形網格的麵片(piàn)數量,從而更(gèng)好的在unity中使用。
    • 在Unity Asset Store下載。
    • 通過三維建(jiàn)模軟件來創建新(xīn)的人形模(mó)型,這類軟件包括3Dmax、Maya、Blender等。

    3.導出(chū)和驗證模型,unity引擎可以導入一係列的常用3D文件格式,推薦使用FBX 2012,因為改格式允許:導出的網格中包含關節層級、法線、紋理以及動畫信息;也可以導(dǎo)入不包含網格的動畫信息。

    動畫分解:

    1.預(yù)分解動畫模型:*容易使用的動畫模型是含有預分解(jiě)動畫片段模型,這種動畫模型在導入項目後,可看到麵板中包含(hán)多個可用的動畫片段列表,還可對每個動畫片段(duàn)的幀數範圍進行(háng)編輯調整。

    2.未分解動畫模(mó)型:提供單一連續動畫(huà)片段的模型,這種情況(kuàng)可自行設定每(měi)個動畫的片段所需要的幀。如該(gāi)模型動(dòng)畫一共有100幀,1-10幀為待機喘息狀(zhuàng)態,11-30幀(zhēn)為行走,31-60幀為奔跑,61-80幀(zhēn)為攻擊(jī),81-100幀為死亡動畫。

    3.為模型(xíng)添加(jiā)動畫:用戶可以(yǐ)為任意模型的動畫組建添加(jiā)動畫片段,該模型(xíng)甚(shèn)至可以沒有肌肉定義(yì)(非Mecanim模型(xíng)),進而(ér)在Animations屬性(xìng)中指定一個默認(rèn)的(de)動畫片(piàn)段和(hé)所有可用的動畫片段。在非Mecanim模型上添加動畫片段也必須采用非Mecanim的方式進行,即將Muscle Definition屬性設置為None。

    對具有肌肉定義的Mecnim模(mó)型處理過程(chéng)如下:

    • 創建一個Animator Controller。
    • 打開Animator Controller窗(chuāng)口。
    • 將(jiāng)定的動畫片段拖到Animator Controller窗口。
    • 將模型資源拖入到(dào)Hierarchy視(shì)圖中。

    4.通過模型文件來導入動畫片段:該方法是遵循Unity指定的動畫文件命名方案,用戶可以創建立的模型文件並(bìng)按照modelName@animaionName.fbx的格式來命名(míng)。例如一個魔法師的模型(wizard.fbx),待機、行走、攻擊分(fèn)別命名為 wizard@idle.fbx、wizard@walk.fbx 、wizard@attack.fbx。隻有在這種(zhǒng)情況下,動(dòng)畫數(shù)據才會被使用。

    使用(yòng)人形角動畫

    Mecanim動畫(huà)係統*適合用於人形角的動畫製作,因為(wéi)人形模型均具有相同的基本結構,所(suǒ)以用戶可以實(shí)現將(jiāng)動畫效果從一個人形骨架映射到另外一個人形骨架上去,從而(ér)實現動畫(huà)重定(dìng)向的功能。

    創建一個動畫的基本步驟就是創建一個(gè)從Mecanim係統的簡化人形骨架結構到用戶實際提供(gòng)的骨架(jià)結構的映射,這種映射關係稱為Avatar,下麵就介紹如何為一個模型創建一個Avatar。

    創(chuàng)建Avatar

    在導入一個(gè)模型(例如fbx)後,在該模型麵板上選中Rig選項(xiàng)卡指定他它的骨骼模型,包(bāo)括Humanoid、Generic和Legacy這三種。

    1.人形動畫(Humanoid)

    對(duì)於人形骨架,選中Animation Type下拉菜單,選擇Humanoid,單擊Apply按鈕,Mecanim係統就會嚐試(shì)將用戶提供的骨架結(jié)構與Mecanim係統內嵌的骨架結構進行匹配,匹配成功後在可以看到Configure...複選框被選中。在匹配成功的情況下(xià),會(huì)在模型資源中添加一(yī)個Avatar子(zǐ)資源。需要注意的是,這裏匹配成功僅僅是匹配了所有必要的關節骨骼,如果想達到更好(hǎo)的效果,還需要對(duì)Avatar進行手動調整。如(rú)果在Configure...旁邊顯示一個(gè)叉號,即不會生成相應的Avatar子資源,這種情況就需要手動(dòng)配置Avatar。

    2.非人形動畫 

    Unity為非人形動畫提供了兩個(gè)選(xuǎn)項,一般動畫類型(Generic)和舊版動(dòng)畫類型(Legacy),一般動畫仍可(kě)由(yóu)Mecanim係統導入,但無法使用人形動畫(huà)專(zhuān)有的功能。 

    配置Avatar:

    在上一步生成Avatar子資源後,即可配置Avatar。Avatat是Mecanim係統(tǒng)中很為重要的模塊,因此為模型資源正確的設置Avatar也至關重要,不管Avatar自動創建過程是否成功,用(yòng)戶(hù)都需要進入Configure...Avatar界麵中確認Avatar的有效性,即確認用戶提供的骨骼結構與Mecanim係統預定義的骨骼結(jié)構是否(fǒu)正確的關聯起來,並且模型處於T形姿態。

    點擊Configure...後Scene視圖將被用於顯示當前(qián)模型的骨骼(gé)、肌肉、和動畫信息(xī),同時會出現一個Avatar配(pèi)置麵板,可看到一個關鍵骨骼映(yìng)射信息的(de)視(shì)圖,該視圖還顯示了哪些骨骼是必須(xū)匹配的(de)(實線圓圈),哪些是可選匹配(pèi)的(虛線(xiàn)圓圈)。為了方便Mecanim進行骨骼匹配,用戶提供的骨架中應半酣所有必(bì)須匹配的骨骼(gé)。此外為了提高匹配的成功率,應盡量通過骨骼(gé)代表的部位來給骨骼命名。

    如果複發為模型找到合(hé)適的匹配,用戶也(yě)可(kě)以通過類似Mecanim內部使用的方法(fǎ)來進行手動(dòng)配置:

    1.在Avatar麵板中選擇Pose下拉項中的Sample Bind-pose(得到(dào)模型的原始(shǐ)姿態);

    2.在Avatar麵板中選擇Mapping下拉項中的Automap(基於原始姿(zī)態創建一個骨骼映射);

    3.在Avatar麵板中選(xuǎn)擇Pose下拉項中的Enforce T-pose(強製模型貼近T形姿態,即Mecanim動畫的默認姿態)

    如果在第(dì)二個步驟中,自動映(yìng)射的過程出現失(shī)敗或者局部失敗(bài),用戶可通過Scene視圖或者Hierarchy視圖中(zhōng)拖出骨骼並指定骨骼(gé),如果Mecanim認為骨(gǔ)骼匹配,將在Avatar麵板中以綠顯示,否則以紅顯示。

    如果沒有指定正確則會看到Sence視圖中會出現Character not inT-pose提示,可通(tōng)過EnforceT-pose強製將模型轉換為T型姿(zī)態或者旋轉至模型為T型姿態。

    上述骨骼映射信息還可奧村一個人形模版文件(Humanoid Template File).ht ,這個文件可(kě)在所有使用這個(gè)映射關係的角之間(jiān)複用。

    設置Muscle參數(shù):

    Mecanim使用肌肉(Muscle)來限製不同骨骼(gé)的運動範圍,一旦Avatar配置完成,Mecanim就能解析其骨骼結構,進而用戶就可以在Muscles選(xuǎn)項(xiàng)卡中調節相關參數。在(zài)此(cǐ)可(kě)比(bǐ)較容易的調節角(jiǎo)的運動範圍,確保看起來真實自然。

    用戶可(kě)以在視圖上方使用預先定義的變形方法對(duì)幾根骨骼同時進行調整,也可在視圖下方對身(shēn)體(tǐ)上單根骨骼進行調整。

    人形動畫的重定向:

    人形重定向是Mecanim係(xì)統中強大的功能之一,這意味著開發者隻需要很簡單的操作即可將一組(zǔ)動畫應用到其(qí)他人形角模型上,前提是必須正確(què)的配置Avatar。

    導入(rù)單個動畫文件:

    在從三維軟件導出模型前,遵循unity3d動(dòng)畫文件(jiàn)命名方案,為單個動畫模型文件(jiàn)命名modelName@animationName.fbx,即 模型名(míng)稱@動畫名稱.fbx 。

    例如對於(yú)一個名為warlock(魔法師)的(de)模型,分(fèn)別指定 idle(待機),walk(行走),attack(攻擊),death(死亡) 等動畫。

    即命名規範:

    warlock@idle.fbx

    warlock@walk.fbx

    warlock@attack.fbx

    warlock@death.fbx

    另外還需導出一個 warlock.fbx 不帶動畫的模(mó)型文件(jiàn),在導出(chū)模型前(qián)勾選 no animation選項即可,warlock.fbx模型會遵循動畫文件命名(míng)規範來(lái)索引其他帶動畫的模型文件。

    日本中出视频|午夜免费福利在线|亚洲精品亚洲人成在线下载|国产高潮流白浆免费观看不卡|偷拍亚洲欧美|亚洲中文字幕久爱亚洲伊人|久久久久香蕉视频|国产欧美日韩一区|久久国产成人亚洲精品影院老金|久久久久中文字幕