由於電腦運算的限制 當前的群體動畫都不是以物理為基礎的(physical-based), 好比AfterBurn的火焰與FumeFx相比, Afterburn的火焰並沒有物理碰撞特性 而FumeFX能夠依據場景產生互動的煙霧與火焰. 也就是說當使用群體動畫軟體製作兩軍交戰的動畫時, A軍將B軍給擊倒並不是因為B軍的武器真的攻擊(碰撞)到A軍 讓A軍因此倒下 而是在軟體模擬下A軍在邏輯上被B軍擊敗 而這時A軍撥放了倒下的動作捕捉檔(Mocap file) 讓最終的結果看來是A軍被B軍擊倒.
上面的說明看起來繞舌 可以再把群體動畫模擬再簡化成三大元素: (1)預先製作好的動作檔 通常為mocap file (2)由各個代理人(Delegate)產生路徑 (3)最後再由代理人的決定樹(decision tree)來決定在代理人的路徑當中的各個事件 撥放適當的動作檔. 在動作模擬時每個代理人被視為一個點 例如有2萬紅軍與3000綠軍交戰時 就是有2萬個紅軍代理人(點)與3千綠軍點進行模擬. 一個逼真的群體動畫模擬端看適當的動作檔 與適當的決定樹下 調控完美的轉接時間(Transition) 而達到的最終效果.
參考上圖. 實際舉例的話 平原交戰的決定樹大致可以這樣想: 行軍-->找尋敵軍-->攻擊--> 死亡 或是 逃跑 如果攻擊成功 再去找下一個最近的敵人. 動作檔則需要 行軍(March) 攻擊(Fight) 逃跑(Flee) 死亡(death). 代理人的路徑則是在整個模擬跑完產生的. 這是相當簡化的版本 如果要製作更複雜的群體動畫 還要加入更多因素 例如不同的軍種有不同的攻擊方式(射箭) 就需要不同的動作檔.
當然群體動畫不是只有兩軍交戰可以用的到. 想下一下你接到台灣鐵路公司的3D動畫案子 要製作排隊買票的群體動畫. 假設有3個售票亭 站在買票人的角度 他的決定樹大概是這樣: 首先決定要排哪一個售票亭(最少人那一排) 當他排一陣子後 可能另兩個售票亭的人數變的更少 於是他可能要決定是否要改排其他售票亭. 通常在這種其況 台鐵的售票亭每排的等候人數 會大致相等 原因是每個售票廷的距離很近 等候者可以隨時改變決定; 當模擬改為上製作上電車車廂的民眾時 情況會比較不同 因為每個車廂距離相當遠 不可能任意改變決定 我們常常可以看到某個車廂擠滿了人 而某些車廂些卻還有位置; 若是捷運車廂又會更不同 因為捷運車廂上車時間只有幾秒鐘 上車的人只有幾秒的時間做決定 幾乎沒有辦法立即換車廂.以上三種情況需要哪些動作檔 怎樣的決定樹 產生怎樣的路徑 你想到了嗎?
註: 本文同步發表於CG Taiwaner台灣人玩動畫部落格
No comments:
Post a Comment