Animator – Blending

Blending

覺得最重要的就是 Animator 跟 Animation 之間最大的功能. 動作溶合(Blending)
Animator 會把兩段或更多的動畫以設定的條件來做一定的溶合.

假設你有 2 段影片 A & B, 可以溶合出 C

Clip A+B=C

所以有甚麼好激動的嗎?! 朋友, 你知道 Animator 為你做了甚麼嗎?! 是插值.
一個把兩組動作溶合的過渡性動畫.

原理以圖上的’大腿’跟’小腿’簡單來說明就是它幫你計算了’大腿’在 A 幀的位移(position)及轉向(rotation) 跟 B 幀來對比,
再跟據你在 Animator 裡所設定的 Blending Time 來決定它在當下應該在甚麼位置及旋轉角.

如果上面對你來說太理論的話, 簡單說就是有個畫師跟班把當下沒有的補間動畫給你畫好了的情況.
若然到這邊還是不明白 Animator 跟 Animation 的根本分別的話我稍舉一個例子.

四方向行走 vs 全方向行走

所謂的 8-way locomotion 就是在 3D 還沒普及還需要畫師逐格繪畫角式動作的古代….嗯…找個經典一點的.
RPG Maker !!! 大概認識罷?! 這張圖就是 4 方向 Locomotion.

就是這個東西對應到玩家的 { 上,下,左,右 }移動.
限制也是很明顯的, 因為只提供了角式兩個軸 {橫, 直} 的組合圖, 如果要求任何 (左上) (左下) (右上, 右下) 的行走方式, 這套系統是不能給你的…. 畫師都沒有畫對不對?!

而現在如果你能夠給 U3D 的 Animator 給些方面的資料, 它自動給你’算’出來. 你要 20度右上的行走圖. 沒問題.
如果你能提供更多更仔細的動作, 例如 {慢跑, 飛奔} 中間需要過迅的動作它也給你算出來.
立馬支持手柄的 Analog 轉入要一個比平常快 50% 的緩步跑也沒有問題.

當然這套強大的系統, 也有使用條件, 就是你要用上 Humanoid 以及做一個 Locomotion 的 BlendTree 來描述你提供的動畫是對應那一個方向的.

Blend Tree

如果你不知道甚麼是 Blend Tree, 希望這會令你知道怎樣找到它.

在 Unity3D 的官方範例中有展示它的常用方式,

一幅 Locomotion 的基本 mapping.
A) 就是你建立的 Blend Tree, 大體上就是人物在這個 State 中會有機會溶合的動作,
全都放在一起.
B) 就是剛才 (A) 的動作, 用距離來代表它們之間的關係製作出 Map.
如果有些迷糊的話, 你先要了解一下「數學上面.所有數字也可以理解為距離」

以上面的範列來說, 所謂的「地面移動」只是單純的演繹出距離中心 (0f,0f) 紅點, 的位置的移動距離.
所以我們依直覺把所有的動作放在相對的象限即可.
(二維圖表 X 軸 = 1f, Y 軸=2f 以簡化的兩組數字代表 (1f, 2f))
以下用八方向行走為例.

  • 靜止 = (0f,0f)
  • 向前走 = (0f, 1f)
  • 向後走 = (0f, -1f)
  • 向左走 = (-1f, 0f)
  • 向右走 = (1f, 0f)
  • 向左前走 = (-1f, 1f)
  • 向左後走 = (-1f, -1f)
  • 向右前走 = (1f, 1f)
  • 向右後走 = (1f, -1f)

所以決定動畫錄製以及如何溶合,
依動畫作出相應的位置安排就是設計者該做的事.
當然程序方面, 要決定這個 Mapping 本身的資訊是如何輸入到 Animator 中也是一門學問.

One Comment

  1. Pingback: 我的人形控制開發筆記(一) – Clonefactor

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料