• Unity3D動畫係(xì)統(Mecanim)

    2017/6/26      點擊:

    Mecanim概述:

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

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

    Mecanim工作流:

    1.資源導入,這一階段由美術師或動畫師通過三維工(gōng)具來完成。

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

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

    3.角的運(yùn)動,包括設定動畫片段以及其相互間的交互作用,也包括建立狀態機和混合樹、調整動畫參數以及通過代碼控製動畫等。

    獲取人形網格模型

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

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

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

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

    • 使(shǐ)用一個過程試(shì)的人物建模工具,Poser 、 Makehum或Mixamo等。其(qí)中有些三維軟件可(kě)以在建模的同時進行骨骼綁定和(hé)蒙(méng)皮操(cāo)作。應該盡可能的減少人形網格的(de)麵片數量,從而更好的在unity中使用(yòng)。
    • 在Unity Asset Store下載。
    • 通過(guò)三維建模軟件來創建新的人形模型,這類軟件包括(kuò)3Dmax、Maya、Blender等。

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

    動畫分解:

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

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

    3.為(wéi)模型添加動畫:用戶可以為任意模(mó)型的動(dòng)畫(huà)組建添(tiān)加動畫(huà)片段(duàn),該模型甚至可以沒有肌肉定義(非Mecanim模(mó)型),進而在Animations屬性中指定一個默(mò)認的動畫片段和(hé)所有可用的動畫片段。在非Mecanim模(mó)型上添(tiān)加動畫片段也必須采用非Mecanim的方式進行,即將Muscle Definition屬性設置為None。

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

    • 創建一個Animator Controller。
    • 打(dǎ)開(kāi)Animator Controller窗口。
    • 將定的動畫片段拖到Animator Controller窗口。
    • 將模型資源拖入到Hierarchy視圖中。

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

    使用人形角動畫(huà)

    Mecanim動(dòng)畫係統*適合用於人形角的動畫製作,因為人形模型均具有相同的基(jī)本結構,所以用戶可以實現將動畫效果從一(yī)個人形(xíng)骨架映(yìng)射到另外一個人形骨架上去,從而實現動畫重(chóng)定向的功能。

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

    創建Avatar

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

    1.人形動畫(Humanoid)

    對於人形骨架,選(xuǎn)中Animation Type下拉(lā)菜單,選擇Humanoid,單擊(jī)Apply按(àn)鈕,Mecanim係統就會嚐試將用戶提供的骨架結構與Mecanim係統內嵌的(de)骨架結構進行匹配,匹配(pèi)成功後在可以看到Configure...複(fù)選框被選中。在匹配(pèi)成功的情況下,會在模型資源(yuán)中添加一個Avatar子資源。需要注意的是,這裏匹配成功僅僅(jǐn)是匹配了所(suǒ)有必要的關節骨骼,如果(guǒ)想達到更(gèng)好的效果,還需要對Avatar進行手動調整。如果在Configure...旁(páng)邊顯示一個叉號,即不會生成相應的Avatar子資源,這種情況就需要手動配置Avatar。

    2.非人形動畫 

    Unity為非人(rén)形動畫提供了兩個選項,一般動畫類(lèi)型(Generic)和(hé)舊版動畫類型(xíng)(Legacy),一般動畫仍可由Mecanim係統導入,但無(wú)法使用(yòng)人形動畫專有(yǒu)的功能。 

    配置(zhì)Avatar:

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

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

    如果複發為模型找到合適的匹配,用戶也可以通過類似Mecanim內部使用的方法來進行手動配置:

    1.在Avatar麵板(bǎn)中選擇Pose下拉項中的Sample Bind-pose(得到模型的原始姿態);

    2.在Avatar麵板中選擇Mapping下拉項中(zhōng)的Automap(基於原始(shǐ)姿態創建(jiàn)一個骨骼映射);

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

    如(rú)果在第二個步驟中,自動映(yìng)射的過程出現失敗或者(zhě)局部失敗,用戶可通過Scene視(shì)圖(tú)或者Hierarchy視圖中拖出(chū)骨(gǔ)骼並指定骨骼,如果(guǒ)Mecanim認為骨骼匹配,將在Avatar麵板中以綠顯示,否(fǒu)則以紅顯示。

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

    上述骨骼映射信息還可奧村一個人形模版文件(Humanoid Template File).ht ,這個文件可在所有使用(yòng)這個映射關係的角(jiǎo)之間複用。

    設置Muscle參數:

    Mecanim使用肌肉(Muscle)來(lái)限製不同骨骼(gé)的運動範圍,一旦Avatar配置完成,Mecanim就能解析(xī)其骨骼結構,進而用(yòng)戶就可以在Muscles選項卡中調節相關參數。在此可比較容易的調節(jiē)角的運動範圍,確保看起來真實自然。

    用戶可(kě)以在視圖上(shàng)方使用預先定義的變形方法對幾根骨骼(gé)同時進(jìn)行調整,也可在(zài)視圖下方對身體上單根骨骼進行調整(zhěng)。

    人形動畫(huà)的重定向:

    人形重定向是Mecanim係統中強大的功能之一,這意味著開發者隻需要很(hěn)簡(jiǎn)單(dān)的操(cāo)作即可將一組動畫應用到其他人形角模型上,前提是必須正確的配置Avatar。

    導入單個動畫文件:

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

    例如對於一個名為warlock(魔法師)的模型,分別指定 idle(待機),walk(行走),attack(攻(gōng)擊),death(死亡) 等動畫(huà)。

    即命名規(guī)範:

    warlock@idle.fbx

    warlock@walk.fbx

    warlock@attack.fbx

    warlock@death.fbx

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

    自愉色色,亚洲色孩,jk无遮拦,日日夜夜7799天天综合,999夜夜,7799天天综合天天综合网精品视频,日日夜夜精品视频7799,天天综合7799精品影视