[心得] Motion Matching技術 個人理解分享
※ [本文轉錄自 PlayStation 看板 #1TkBbFmr ]
作者: cjcat2266 (CJ Cat) 看板: PlayStation
標題: Re: [情報] CAPCOM將舉辦RE ENGINE研究會
時間: Wed Oct 30 06:12:28 2019
: 簡單說,就是捨棄以往類似state machine,1對1的motion resource製作,
: 而是讓演員錄製一支5分鐘的影片,
: 影片內容有規定必須遵照特定路線與動作來拍攝,以確保motion data的完整性。
: 然後在角色當下的動作完成時,會回去找該5分鐘影片一禎一禎搜尋,
: 搭配玩家的指令輸入,去找出最合適的那一禎動作,並遷移過去。
: 這是非常高價且奢侈的方式,基本上現世代主機遊戲難以實現該作法,
: 但是榮耀戰魂剛好是肢體表現為主的格鬥遊戲,有辦法將所有資源通通拿來算motion,
: 因此非常可能是本世代唯一一片有辦法使用該技術的作品。
: 推 lanstype: motion macthong有什麼優點啊(門外漢看不懂 10/28 22:37
TLoU2也有用motion matching唷!
剛好敝人也有稍微涉獵MM,來獻醜分享一下我的理解
將動畫師做好的角色動作,讓角色播放來符合移動路徑,這個技術領域叫做locomotion
傳統的作法是讓動畫師分別做好各個方向的行進動作
然後挑選方向符合移動路徑的動作依序播放
例如一個角色要前進2公尺然後轉身45度再前進1公尺,然後往左平移1公尺
傳統的狀態機式系統就會分析這個路徑
然後讓角色播放前進動作直到行進2公尺、接著播放轉身動作直到旋轉45度
最後再播放向左平移的動作直到移動1公尺
這其中牽涉的素材,就包括需要動畫師製作前進、轉身、和平移的動作
MM的做法則比較聰明
讓動作擷取演員一次錄取一段很長的動作,包含各種移動方式(前進、旋轉、平移等)
然後MM系統則是從個數少、但單體資料量巨大的動作資料池中
尋找能夠符合欲移動路徑的動作片段
同時盡量減少角色當下動作與新動作片段的銜接斷層
把這些片段串連起來播放,讓角色用自然的動作依循理想路徑移動
如此一來,動畫師的工作便剩下協助動作擷取
然後再把動作素材的雜訊清理一下,並將動作做一些微調以符合遊戲視覺風格
程式設計師也不需要維護複雜的locomotion狀態機
不過也如原文所說,這個"在巨大動作素材資料池中搜尋理想動作片段"是個效能瓶頸
約10年前Bungie雇用了原始MM paper作者要把MM用在Halo Reach上
結果因為當時硬體性能與優化技術不足而作罷
現在硬體性能與當時相比進步很多
開發者對動作資料的分析和優化技術也有了成長
所以MM不再是遙不可及的夢想,而是可以即時執行的技術了
接下來比較偏技術面
在巨大動作資料池中搜尋理想動作片段,有什麼優化技術可以增加搜尋效率?
暴力解法就是每次需要新動作的時候,把整個資料池讀一遍
找出符合理想移動路徑、又與角色當下動作差異不會太大的片段挑出來
但是資料池非常大,這個暴力解是不切實際的,會花太多時間
其中一個優化方法,是把資料池切成很多小片段
然後把每一個片段的初始動作與移動路徑擷取出來
動作可以預先編碼成容易與其他動作辨識相似程度的格式
通常是把重要的關節位置座標和旋轉角度編成多維向量
如雙腳、骨盆三個關節位置和旋轉總共有18或21個數字(看旋轉是存成3個角度還是四元數)
這樣就可以把動作編碼成一個18維或21維的向量
兩個動作的向量做內積,就可以得到一個能夠與其他內積互相比較的"相似度"分數
同樣的,也可以用類似方法把動作片段的行進路徑進行編碼
與理想路徑比較,也可以得到相似度分數
所以現在尋找理想片段的工作,便成為經過編碼後的動作與路徑相似度的比較
但還是存在著被編碼的動作片段過多的問題
對所有編碼過後的動作和路徑片段比較仍然會花太多時間
於是得借用遊戲物理常用的空間加速資料結構技巧,快速選出少量比較理想的動作片段
然後只從這些少量片段中與角色當下動作和理想路徑做評分比較,最後選出理想動作片段
簡單來說,就是以角色當下動作編碼向量為出發點
若一個動作片段的初始動作向量與角色當下動作向量"距離"差太多,就直接忽略這個片段
像是兩個向量A與B的差A-B的長度太大,就直接忽略而省去取A和B的內積這個步驟
空間資料結構能夠協助快速且大量篩選掉距離太遠的向量
最後便只需要比較非常少數的動作向量與路徑的相似度
然後最近MM延伸出了一個搭配機器學習(ML, machine learning)的變體
原理是透過ML預先分析動作資料池
生出能從角色當下動作與理想路徑得出理想動作片段的類神經網路權重
如此得到的動作片段,完全是程序生成的結果,與ML分析的動作資料池已沒有關係
也就是最終遊戲所需要包含的素材,就只是類神經網路權重(量級大概就幾MB)
大量的動作資料池已經不需要了
如此可以省去大量的動作資料空間(量級可以從幾百MB高到甚至到幾GB)
然而ML作法有個缺點,就是開發者在除錯時
若發現角色的動作看起來怪怪的,唯一的線索就是人類無法解讀的類神經網路權重
沒辦法直接得知會產生動作怪異的原因,是原本的動作資料池的哪個片段
或是在哪個ML環節中出錯
以上!
--
Web http://AllenChou.net
Twitter http://twitter.com/TheAllenChou
LinkedIn http://linkedin.com/in/MingLunChou
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 160.33.168.6 (美國)
※ 文章網址: https://www.ptt.cc/bbs/PlayStation/M.1572387151.A.C35.html
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: cjcat2266 (160.33.168.6 美國), 10/30/2019 06:13:37
※ 編輯: cjcat2266 (160.33.168.6 美國), 10/30/2019 06:15:07
推
10/30 08:25,
5年前
, 1F
10/30 08:25, 1F
→
10/30 08:27,
5年前
, 2F
10/30 08:27, 2F
→
10/30 08:28,
5年前
, 3F
10/30 08:28, 3F
→
10/30 08:28,
5年前
, 4F
10/30 08:28, 4F
→
10/30 08:55,
5年前
, 5F
10/30 08:55, 5F
→
10/30 08:59,
5年前
, 6F
10/30 08:59, 6F
→
10/30 08:59,
5年前
, 7F
10/30 08:59, 7F
→
10/30 09:02,
5年前
, 8F
10/30 09:02, 8F
推
10/30 19:20,
5年前
, 9F
10/30 19:20, 9F
推
10/30 20:36,
5年前
, 10F
10/30 20:36, 10F
推
10/30 23:10,
5年前
, 11F
10/30 23:10, 11F
→
10/30 23:12,
5年前
, 12F
10/30 23:12, 12F
→
10/30 23:12,
5年前
, 13F
10/30 23:12, 13F
→
10/30 23:13,
5年前
, 14F
10/30 23:13, 14F
→
10/31 00:03,
5年前
, 15F
10/31 00:03, 15F
→
10/31 00:04,
5年前
, 16F
10/31 00:04, 16F
→
10/31 00:06,
5年前
, 17F
10/31 00:06, 17F
→
10/31 00:07,
5年前
, 18F
10/31 00:07, 18F
→
10/31 01:52,
5年前
, 19F
10/31 01:52, 19F
→
10/31 01:53,
5年前
, 20F
10/31 01:53, 20F
→
10/31 01:54,
5年前
, 21F
10/31 01:54, 21F
→
10/31 01:54,
5年前
, 22F
10/31 01:54, 22F
→
10/31 01:54,
5年前
, 23F
10/31 01:54, 23F
→
10/31 01:55,
5年前
, 24F
10/31 01:55, 24F
推
10/31 01:59,
5年前
, 25F
10/31 01:59, 25F
推
10/31 02:19,
5年前
, 26F
10/31 02:19, 26F
→
10/31 02:19,
5年前
, 27F
10/31 02:19, 27F
→
10/31 02:19,
5年前
, 28F
10/31 02:19, 28F
推
10/31 10:32,
5年前
, 29F
10/31 10:32, 29F
推
10/31 22:26,
5年前
, 30F
10/31 22:26, 30F
推
11/03 09:43,
5年前
, 31F
11/03 09:43, 31F
推
12/16 05:09,
5年前
, 32F
12/16 05:09, 32F
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章