真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Unity動(dòng)畫(huà)系統(tǒng)的示例分析

這篇文章主要介紹Unity動(dòng)畫(huà)系統(tǒng)的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)是一家專注于成都做網(wǎng)站、網(wǎng)站建設(shè)與策劃設(shè)計(jì),蕭縣網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:蕭縣等地區(qū)。蕭縣做網(wǎng)站價(jià)格咨詢:18982081108

狀態(tài)機(jī)與狀態(tài)機(jī)設(shè)計(jì)

Unity動(dòng)畫(huà)系統(tǒng)的示例分析

角色的狀態(tài)機(jī)以0層作為主層,然后以待機(jī)作混合樹(shù)為中心進(jìn)行切換。Unity動(dòng)畫(huà)系統(tǒng)的示例分析

主層中會(huì)有一些復(fù)雜一些的混合樹(shù),通過(guò)參數(shù)調(diào)節(jié)做出動(dòng)作融合,比如八方向Straft。

Unity動(dòng)畫(huà)系統(tǒng)的示例分析

主層還有會(huì)一個(gè)節(jié)點(diǎn)專門用于Override,后續(xù)會(huì)提到。

Unity動(dòng)畫(huà)系統(tǒng)的示例分析

在副層,用于非常規(guī)行為的動(dòng)作融合,比如邊走邊打、邊走邊防御。 ?

動(dòng)畫(huà)事件

動(dòng)畫(huà)事件其實(shí)用得不多,主要在于標(biāo)記動(dòng)畫(huà)某一幀需要觸發(fā)什么邏輯的這種情況。比如RootMotion的拉扯等等。我更傾向于自己寫(xiě)邏輯去計(jì)時(shí)而不是交給動(dòng)畫(huà)事件。

動(dòng)畫(huà)事件,在執(zhí)行到動(dòng)畫(huà)某一幀觸發(fā)事件。如果動(dòng)畫(huà)過(guò)渡時(shí)可能會(huì)事件失效,更健壯的做法是自定義時(shí)間段。

狀態(tài)事件,狀態(tài)機(jī)的切換事件,但仍然是自己計(jì)算更加可靠簡(jiǎn)單。

IK

IK算法有多種,一般而言,性能好就用CCD,對(duì)效果有要求就用FRAB。具體實(shí)現(xiàn)網(wǎng)上有大量資料。

在開(kāi)放世界中,會(huì)放置很多預(yù)先打好TAG的交互物件。比如攀爬的IK,計(jì)算觸發(fā)對(duì)象上最近的作用點(diǎn),進(jìn)行相應(yīng)的IK操作。

IK如果想要做的自然還有很多corner case,比如身隨手動(dòng)、bad zone等等。在GDC上有大量的資料可以查到。

Retarget

Unity動(dòng)畫(huà)系統(tǒng)的示例分析

Retarget就是一段動(dòng)畫(huà)可以服用到別的模型上。

Unity可以基于節(jié)點(diǎn)名字進(jìn)行retarget。隨手做一段clip都支持這個(gè)功能。

對(duì)于通用人型動(dòng)畫(huà)humanoid則支持更友好一些,名字不一樣,依然可以通過(guò)avatar進(jìn)行retarget。

如果想在別的形體也進(jìn)行retarget,那么可以使用Morpheme中間件。

換裝系統(tǒng)

Unity動(dòng)畫(huà)系統(tǒng)的示例分析

這里講幾套換裝方案

  1. 最簡(jiǎn)單的是材質(zhì)層面的換裝,比如換貼圖

  2. dummypoint的方式也非常簡(jiǎn)單,在做好的角色上做預(yù)制的掛點(diǎn),然后換武器

  3. 靜態(tài)蒙皮,預(yù)先在模型上做好幾套蒙皮了的服裝,換裝的時(shí)候?qū)esh進(jìn)行開(kāi)關(guān)。

  4. 動(dòng)態(tài)蒙皮,重新綁蒙皮的方式支持角色換衣服,只要基于同一套骨骼開(kāi)發(fā),然后換裝的時(shí)候重新賦值bone信息即可完成重新綁定蒙皮。如果使用一套材質(zhì)還可以通過(guò)合并Mesh減少Drawcall。

  5. 支持捏臉,參考uma系統(tǒng)。原理就是先把做好的部位頂點(diǎn)拼接起來(lái),并且蒙皮。捏臉也是對(duì)頂點(diǎn)骨骼進(jìn)行操作。

RootMotion

Unity動(dòng)畫(huà)系統(tǒng)的示例分析

用RootMotion能讓動(dòng)畫(huà)更加自然(一些游戲滑步就是因?yàn)椴粫?huì)用RootMotion),也有很多項(xiàng)目會(huì)單獨(dú)把RootMotion單獨(dú)輸出美術(shù)路徑拆開(kāi)使用。但是RootMotion是靜態(tài)的,對(duì)于動(dòng)態(tài)的環(huán)境需要一些技巧來(lái)讓RootMotion更加自然。

對(duì)于動(dòng)態(tài)位移的情況,我們經(jīng)常會(huì)遇到RootMotion夠不到目的地的情況,那么對(duì)RootMotion最常用的操作就是將其縮放到合適的位移。

對(duì)于動(dòng)態(tài)旋轉(zhuǎn)的情況,也會(huì)遇到RootMotion的旋轉(zhuǎn)角度不滿足游戲性的需要或者因?yàn)榛旌掀屏?。一個(gè)做法就是通過(guò)融合參數(shù)將角度進(jìn)行逼近來(lái)控制動(dòng)畫(huà)旋轉(zhuǎn)到合適的角度。

Override

一般而言,我們直接通過(guò)AnimatorOverrite就可以替換了。但是如果多個(gè)Override的動(dòng)作之間需要過(guò)渡,那么Unity會(huì)導(dǎo)致角色穿地。可以使用下面這種方案,支持任意多個(gè)Override動(dòng)畫(huà)過(guò)渡。

Unity動(dòng)畫(huà)系統(tǒng)的示例分析

三個(gè)狀態(tài)機(jī)作為placeholder,每次替換都將還沒(méi)使用的節(jié)點(diǎn)替換出來(lái),然后進(jìn)行過(guò)渡。替換之后需要用Animator.Update來(lái)刷新一下。

好處就是提高單個(gè)AnimatorController復(fù)用率,減少動(dòng)畫(huà)狀態(tài)以及初始化涉及的clip數(shù)量。

物理動(dòng)畫(huà)

Unity動(dòng)畫(huà)系統(tǒng)的示例分析

Unity的動(dòng)畫(huà)系統(tǒng)很簡(jiǎn)單,不支持復(fù)雜的狀態(tài)機(jī),沒(méi)法在里面加入IK、物理之類的節(jié)點(diǎn),也無(wú)法嵌套混合樹(shù)。這里可以最終動(dòng)畫(huà)系統(tǒng)輸出之后,比如LateUpdate的方式,再進(jìn)行一遍處理來(lái)調(diào)節(jié)骨骼。

dynamicbone,這個(gè)插件可以對(duì)指定的骨骼加入效果,從而讓某個(gè)骨骼有震蕩的效果。

puppet,這個(gè)插件的方案也是類似的。等動(dòng)畫(huà)輸出之后,物理系統(tǒng)根據(jù)動(dòng)畫(huà)的位置校正ragdoll,在物理碰撞之后,把ragdoll再反算回骨骼,從而讓角色動(dòng)畫(huà)和物理環(huán)境很好地進(jìn)行交互。

性能問(wèn)題

Animator初始化卡頓,Animator會(huì)把所有狀態(tài)的AnimationClip加載到內(nèi)存,最佳方法是用Override減少不必要的加載。

動(dòng)畫(huà)壓縮,可以自行預(yù)處理一遍,控制下精度能省不少空間。還可以考慮其他方法,比如省略通道、曲線退化、骨骼剔除等等。

以上是“Unity動(dòng)畫(huà)系統(tǒng)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)站標(biāo)題:Unity動(dòng)畫(huà)系統(tǒng)的示例分析
本文URL:http://weahome.cn/article/pohhei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部