close

到目前為止,發現的問題如下

1.在3D MAX中,Biped的Root bone不是在(0,0,0)的位置,導致匯入Unreal之後還需要重新調整一次Location

2.綁定骨架時,未注意到關節的方向,導致模型下手臂出現不自然旋轉。

基於上述理由,未來會將骨架透過IK重建,並建立一支隱形的Root bone對準零點。

總之,我們還是繼續往下做。


本篇著重在一維動畫混和(Animation blend 1D)與狀態圖(Finite State Machine),

一維動畫混和可以將兩個不同的動畫以一定比例調整後,產生出新的動畫。

以人物為例,通常有走(Walk)、跑(Run)這兩個動畫,但如果碰到快走、慢跑這一類的事件,通常不會額外去製作動畫,否則這樣無限的分類下去,不是個辦法。

為了解決這個問題,一維動畫混和可以把走、跑兩個動畫透過一個參數來調整混和比例。

比方說

走 = 100%走 / 0%跑
快走 = 70%走 / 30%跑
慢跑 = 30%走 / 70%跑
跑 = 0%走 / 100%跑

而這個混和比例的關鍵參數就是速度(Speed)。

首先要新增一個Animation->Blend Space 1D 並選擇動畫的骨架。
Select_Animation1D

接著從Asset Browser中選擇兩個要混和的動畫,如果今天是"走路"、"跑步"並以速度為調整參數,那速度慢的時候為"走路"、速度快的時候為"跑步",因此在0的位置擺上"走路",100的位置擺上"跑步"。

Walk2Run

接著再把Asset Detail->Axis Settings->Name修改成Speed。

如此一來就完成Animation Blend 1D的設定了。


製作完動畫混和後,就可以開始組合動畫邏輯與動畫草稿(Animation Blueprint)。

動畫草稿可以讓模型依照動畫邏輯行動,也就是簡單的AI。

比方說"跳躍",就是在離地的瞬間播放跳躍動畫,再撥放"浮空",最後才是撥放"落地"。

上述的邏輯完成後,才是一個完整的"跳躍"。

說到AI就必須提到狀態圖,它的正確翻譯是"有限狀態機"(Finite State Machine, FSM)

詳細說明請參照Wiki

有了狀態圖才有辦法建構完整個動畫邏輯。

首先新建立一個Animation Blueprint,進入編輯器後新增一個State Machine

取名為Location並連接到 Final Animation Pose (一定要連接,否則後面的步驟會出錯)

Animation Blueprint

建立四個State 狀態,分別是IdletoRun、Jump Start、Jump Loop、Jump End

FSM

對State點兩下就可以進入State Editor,並放入對應的動畫

State Editor

再點擊狀態間的連結,建立轉換狀態的條件。

IdletoRun -> Jump Start

Run2JumpStart

Jump Start -> Jump Loop
Start2Fly

Jump Loop -> Jump End

Fly2Down

Jump End -> IdletoRun
DowntoIdle

 

設定完成之後,只要將Is In Air改成True就可以看到動畫的改變了。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Vincent 的頭像
    Vincent

    -悄悄的流浪- -是我的幸福-

    Vincent 發表在 痞客邦 留言(0) 人氣()