2007/03/27

[教學][筆記]電腦動畫世界裡的角色行為behavior


在3D電腦動畫的世界裡面 經常需要製作出大量的角色互動 例如一群海鷗飛翔 一群蝙蝠飛出洞穴 或是一群暴民逃離爆炸現場. 這些複雜的動畫是由角色依照環境而產生不同的行為 最終所表現的視覺效果 由於這種動畫過於複雜 動畫師不可能是以key-frame的方式手動地調整角色. 還好複雜的動畫可以經由簡單的行為模組 相互變化組合出來. 本文將由簡單的 陽春的軟體 介紹到複雜 完整的軟體: Endorphin, AI implant, KynogonMassive software. 經由介紹各個軟體的內建角色行為 讓讀者能夠一窺電腦動畫 或是第一人稱射擊遊戲當中 角色行為 人工智慧的概念. 行為可以分成多個層次 第一就是個體的行為 本文將以Endorphin為例; 另一就是群體的行為 更細分的話 群體當中還可分成小隊 這在擬真的射擊遊戲當中常常遇到.

一. 首先介紹Endorphin (漢字翻譯是腦內啡的意思). Endorphin是屬於Natutalmotion(自然動作)公司的產品, Natutalmotion是一家具有英國牛津大學背景的一家英國軟體公司. Endorphin所產生的角色動作是根據實際量測真實人體動作後 將資料最佳化好後寫成的軟體合成動作. 以下就介紹Endorphin 2.6所提供內建的人體動作:

(1)Arms Crossed On Chest 手臂交叉於胸前. 這個行為會讓角色產生雙手交叉於胸前的動作. 應用: 當角色需要保護胸部的時候?

(2)Arms Raised Above Head 手臂舉起. 這個行為會讓角色產生手臂舉起高過頭的動作. 應用: 打招呼或是接球.

(3)Arms Wide Of Head 雙手張開. 這個行為會讓角色產生手臂展開. 應用: 做出我也不知道的動作?

(4)Arms Windmill手臂旋轉. 這個行為會讓角色產生手臂如風車般旋轉的效果. 應用: 常常見於角色失去平衡時會有這類動作.


(5)Arms Zombie 殭屍動作. 顧名思義 手臂打直伸前如殭屍般. 應用: 鬼片 恐怖片?


(6)Hands Covering Face雙手遮臉. 這個行為會讓角色的手掌遮住臉. 應用: 保護臉 或是 羞於見人?
(7)Hands From Behind Back 手由背後伸回來. 感覺有點抽象 其實就是稍息動作的倒帶. 根據官方的說明 這個動作可以應用在各個行為的轉換動作 讓手臂回歸到平時的位置.


(8)Hands Protecting Groing手保護鼠蹊. 應用: 踢足球的時候


(9)Hands Reach And Look At 手伸出並注視目標物. 這個行為會讓角色的手伸出碰觸目標物 同時注視目標物. 相當實用的行為. 應用: 當你跟攤販老闆買一條香腸時 就會用到這個動作.


(10)Legs Kick踢腿. 相當簡單. 說實在Endorphin很多行為還在發展階段 動作有些看起來不自然.


(11)Legs Reach腿碰觸目標物. 應用: 踢足球.

(12)Legs Straighten 腿伸直. 應用: 兩腿一伸 準備投胎?

(13)Balance維持平衡. 相當重要的一個行為 在新版的軟體新增的行為. 很實用 幾乎在各種動作模擬都需要平衡.

(14)Balance With Props 提物體時同時維持平衡. 也是相當重要實用的行為. 應用: shopping回家後提著一包包袋子.

(15)Body Foetal身體做出如胎兒般動作. 有點抽象 這個動作是人在危急的情況 做出保護頭 身體與內臟時的反射動作 相當實用的行為.

(16)Catch Fall跌倒. 相當重要的一個行為讓角色跌倒時防止頭與身體直接碰觸到地面. 這個型危能讓跌倒的角色看來更有意識而不是昏迷.


(17)Fall Back, Twist And Catch Fall 臉朝地面跌倒. 有點抽象用圖片來解釋吧. (見上圖, 本圖取自官方網站的pdf說明文)


(18)Fall Back, Twist And Cover Face 臉朝地面跌倒同時手保護臉.

(19)Fall Back, Twist With Passive Arms臉朝地面跌倒同時做出類似俯立挺身的動作.

(20)Jump跳躍. 很陽春 還不夠好的行為.

(21)Jump And Dive. 跳水的動作很適合.

(22)Land And Crouch 跌倒同時做出下跪的動作.

(23)Stagger蹣跚走路. 當重要的一個行為讓角色跌倒前維持平衡一下. 應用範圍很廣.

(24)Tackle擒抱摔倒. 這是美式足球的專門術語 意思就是保住對手牽制對方運球.

(25)Writhe甩動四肢. 我是不知道這個行為能幹嘛 讓角色看起像是活著?

(26)Writhe In Mid-Air在半空中甩動四肢.

(27)Body Stiffness身體僵直倒下. 被催眠?

(28)Whole Body Stiffness連頭部一起 全身僵直倒下.

(29)Hold握著目標物. 當重要的一個行為讓角色握著目標物. 應用: 抓著籃球.就這樣Endorphin軟體內建了大約30種的人體行為資料庫. 這是劃時代的軟體設計 把動作合成的概念帶入了電腦動畫世界 而非純粹套用真實的人體動作資料(motion capture data) 如此的優點是動作更為多樣化 可變性的參數多 而且動作能夠隨著環境改變而做調整 更接近真實的人類行為. 然而很顯然Endorphin目前還是發展的初期 相信將來5年會成為人體角色動畫的主流應用之一.

二. 接下來介紹個體與個體之間的交互作用行為 就是更大尺度的角色行為. 先以AI implant為例.(1)Avoid Barriers避開路障. 這個行為會讓角色在距離路障一定距離前避開路障.

(2)Avoid Obstacles避開障礙物. 與避開路障很類似. 差別在於避開路障不用指定目標物而Avoid Obstacles必須指定目標物 而且目標物可以也是AI控制的角色

(3)Accelerate At對目標物加速. 當重要的一個行為. 應用: 獵豹看到羚羊時.

(4)Maintain Speed At 針對目標物維持相同的速度. 應用: 狗仔隊在跟拍某位明星的座車.

(5)Wander Around閒晃. 很常用到的一個行為 讓角色不是走一直線而是點隨機的移動. 應用: 找食物的螞蟻

(6)Orient To朝向某目標物. 應用: 狗仔隊用長鏡頭跟拍某名人.

(7)Seek To找尋某目標物. 很常用到的一個行為 應用: 鯊魚搜尋小魚.

(8)Flee From逃離敵人. 很常用到的一個行為 應用: 小魚逃離鯊魚.

(9)Look At看著目標物. 與Orient To很類似.

(10)Strafe繞行移動當中的目標物. 有點抽象的行為. 應用: 例如一隻盡責的牧羊犬 一面繞行保護羊群 一面面對周圍的野狼.

(11)Go Between使角色移動到兩個目標體之間. 可以做為保鑣的行為. 例如歌手的保鑣總是位於歌迷之間 保鑣保護歌手.

(12)Follow Path沿著路徑移動. 例如操場上的選手沿著跑道跑步.

(13)Seek To Via Network經由網絡找尋目標體. 例如警方在巷弄當中搜尋嫌犯. 巷弄的交錯結構就相當於網絡.

(14)Align With與群體對齊. 常見於閱兵典禮士兵對齊的移動 或是在古代的戰爭場景裡 士兵排排站.

(15)Join With加入群體. 湯姆漢克在電影世界大戰當中 他的兒子要加入軍方對抗外星人 所用到的行為就是加入群體的例子.

(16)Separate From脫離群體. 臨陣脫逃的士兵.

(17)Flock With與隊友形成群體. flock這個自是用在一群鳥的時候. 所以這個行為以一群鴿子飛行為例最適當

(18)State Change On Proximity 靠近目標物時就改變狀態. 有點抽象但是很重要的行為. 例如大雄看到老師就會緊張 大雄就是接近目標物(老師) 就會改變狀態(緊張)的行為. 這裡可以改變角色的速度 死亡等等狀態.以上18種的行為 看起來很複雜 其實AI implant算是相當陽春的軟體 能夠處理的情況也相當簡單 但是經由適度的組合行為 還是能產生令人信服的動畫.

三. 接下來介紹Kynogon公司出品的Kynapse. Kynapse是Synapse單字的變體 synapse是神經突觸的意思 代表該軟體有人工智慧的意思. Kynapse被廣泛應用在遊戲與軍事訓練當中 例如知名法國出品遊戲Ureal魔域幻境 便整合了Kynapse的人工智慧引擎 用來控制遊戲當中的電腦人(Bot). Kynapse的專長是及時複雜的路徑計算 能夠很有效率的計算出角色的最佳移動路徑 同時Kynapse能夠提供團隊的概念 使角色之間能夠互相溝通形成戰爭小隊. Kynapse的設計架構當中 角色具有Perception感知, Decision決定以及Action行動. 角色能夠感受聲音 視覺或是小隊之間的無線電溝通來做行動的決定 而這些決定都是即時的在遊戲當中做出運算 而不像是AI implant角色的移動路徑是預先由軟體使用者刻意產生的 這就是Kynapse強大的地方. 以下介紹Kynapse所提供的行為(在Kynapse當中行為的控制稱為agent代理人. 不同代理人產生不同行為):



(1)Goto agent到達目標代理人

(2)Follower agent跟隨代理人

(3)Flee agent逃離代理人

(4)Pathway agent沿著預先設定路徑移動的代理人

(5)Wander agent閒晃代理人. 以上代理人的行為在AI implant當中都可以看到.


(6)Hide agent躲藏代理人. 這個看似簡單的行為其實有點複雜 首先他不像是Flee agent那樣只是逃離危險的敵人 而且他還要能在立體的空間當中把自己藏匿起來 算是相當複雜的行為.

(7)Shooter agent射擊代理人. 這比look at行為還要複雜 首先角色要能夠依照自己手上的武器(狙擊槍或是手槍) 知道自己的射程 進而移動身體來幫助攻擊敵人的行為.除了代理人外Kynapse還具有及時運算路徑的能力

(8)Euclidian distance pathfinding heuristic最短距離演算法 這是在不考慮敵人 環境危險度的情況下 演算出移動路徑的演算法.

(9)path cost pathfinding heuristic最佳抱償路徑演算法. 能夠在相當複雜的場景當中 計算出敵人位置 路徑等等因素後 對角色最有利的路徑.Kynapse還有許多其他強大功能 足以應付現今熱門的第一人稱射擊遊戲 例如躲在角落射擊敵人, 分散躲藏的小組 之間以無線電連絡 或是動態的路徑運算(在被破壞的公路當中找到替代道路)等等 請到官方網站觀看影片.

四. 最後介紹最強大也最昂貴的軟體---Massive software. Massive因為在動畫電影Happy Feet快樂腳當中應用 被獲選奧斯卡獎. Massive雖然不如Kynapse專門用來處理3D遊戲當中的角色行為 但是AI implant有的行為它都有 除此之外Massive還提供了AI implant沒有卻很重要的功能.


(1)Smart Stunts智慧型的特技演員. Massive的Smart Stunts很類似Endorphin的功能 就是依照環境產生相對的行為. 這點讓Massive具有結合Endorphin與AI implant兩者優點的優勢.

(2)Cloth Editor衣服編輯器. Massive本身就支援角色具有衣服動態模擬的功能 讓其運算結果的擬真度更上一層樓.

(3)Agents可以立即使用的代理人. 即使不懂動畫的人也能夠利用預先設定好的虛擬人物進行動畫. 目前提供的代理人有Locomotion Agent移動代理人, Stadium Agent觀眾席代理人, Ambient Agent背景人物代理人, Mayhem Agent暴動代理人, Combat Sword Agent古代戰爭代理人...幾乎可以應付大部分的需求了.以上就Endorphin, AI implant, Kynapse與Massive做了簡單的介紹 雖然離真正人類的行為還很遠 但相信經由這些簡化的虛擬人物行為 將來會慢慢發展出更接近人類的行為(例如吃醋 忌妒 賴床...等等)

[延伸閱讀]

faking human motion with ragdoll maxscript (利用免費軟體達到類似Endorphin的效果)

No comments: