9月2日到9月4日,日本計算機娛樂協會(CESA)在線上主辦瞭日本最大的面向遊戲開發者的會議“計算機娛樂開發者大會2020”(CEDEC 2020)。
本稿件基於會議首日關於《最終幻想7 重制版》(後文簡稱《FF7 RE》)動作的演講《<FINAL FANTASY VII REMAKE>中的角色動畫技術》的演講進行報道。
全篇演講分為兩部分,前半部分講角色的身體動作,由史克威爾艾尼克斯的動畫主程序原龍先生進行解說;後半部分講角色的面部表情,由面部指導巖澤晃先生進行解說。
雖然主要是關於關於開發技術的內容,但其中有意思的內容也不少,《FF7 RE》的粉絲也請不要說“沒興趣”,務必讀一讀看看。
圖左為原龍先生,圖右為巖澤晃先生
至今為止的動作技術的集合
包括《FF7 RE》在內的3A遊戲為瞭讓遊戲中的動作顯得更加真實豐富,都需要給角色制作許多的動作。為瞭減少這一部分的工作量,開發者們就采用瞭能夠按照預先設定的命令,自動生成動作或者自動補完動作與動作之間的空隙的“procedual動畫”技術。
首先是角色的身體動作部分。《FF7 RE》使用瞭大部分遊戲都在使用的時下主流的遊戲引擎虛幻四。原先生表示,在角色的身體動作上,《FF7 RE》中並沒有使用什麼特別新穎的技術,正如目前在CEDEC中說到的那樣,所使用的是現存的技術的集合。
《FF7 RE》作為一款RPG,同時也是按下按鍵會攻擊敵人,前推搖桿會閃避敵人攻擊的高動作性遊戲。因此,隻要按下按鍵,遊戲中的角色也必須瞬間做出反應。但是同樣要保證不會做出奇怪的動作,不讓動作產生破綻。
因此,本作使用瞭能夠補完動作與動作之間的空隙的“慣性補間”技術。以往的方法是將動作與動作自動混合,在其中用動作連接起來,而“慣性補間”簡單來說,就是參照即將要混合的動作的姿勢數據,將它與下一個動作的最開始混合起來的方法。
慣性補間示意圖
使用瞭這種方法之後,動畫能夠更加自然,隨著玩家的操作而改變的動作也顯得沒有違和感瞭。同時,在面向海外開發者的大會,GDC2018的《戰爭機器》系列相關部分也展示瞭這種方法。
演講中還按快速、慢速、通常三種速度演示瞭克勞德揮劍連擊的動作,不管哪個揮劍動作都自然流暢。
戰鬥中則是由方法來決定,簡單來說,如果隻是要從克勞德揮劍的動作A轉變到進行追擊的動作B,那麼這兩個動作之間的動作補間自然也就不難瞭。但是,在移動的情況下,走、跑、停這樣的動作,根據玩家的操作就需要制作很多的動作瞭。
因此,在從動作A能夠轉變到動作B、C、D這樣有多個候補動作候補的情況,就要一並使用“Pose Matching”技術來比較後續動作之前的姿勢,來自動選出一致的動畫。
比較要轉變為的動作的姿勢(Pose Matching)
要轉變成為的動作有多個候補的情況下,對姿勢進行比較之後自動選出。
根據角色單位,可以指定追加候補動作。(Scalable)
設定Notify之後能夠追加或者限制要轉變為的候補的幀數。
進行姿勢比較時不需要比較所有的骨骼,可以在設定時進行指定。(比如兩足步行時隻需要比較下半身的基本骨)
慣性補間+Pose Matching
在補間前後的姿勢差距不大的情況下,慣性補間加算的值接近0,因此就算blend時間很長也不會產生違和感。
默認blend時間設定的稍長。
Locomotion = 12F(0.4sec)
Field & Battle Action = 9F(0.3sec)
Field Cinema = 30F(1.0sec)
原先生接著介紹瞭奔跑動作、臉的朝向、在斜面上的平衡保持等等更加細致的動作技術。
移動輸入補正
根據控制器或者AI的輸入對骨骼單位的回轉補正進行設定。
在preview環境中,在角色做出動作的同時實時編集。
設定可通過IK Control Rig共享。
Look At
補間邏輯隻有慣性補間和線形補間。
每個骨骼的重要和角速度都能設定。
在使用慣性補間的時候可以根據結束為止的時間設定Randombias。
角度限制用Pitch和Yaw進行區分。
為瞭維持動作姿勢,可以在Mesh空間中計算骨骼的朝向。
Aim
補間邏輯隻有EaseOut和線形補間。(因為對象一直在動所以不適合使用慣性補間)
在設定時對Aim Group進行定義,再從Notify中指定呼出Aim Group。
能夠單獨設定group×骨骼的重量和角速度。
Hand IK
算法使用瞭FABRIK。
IK Target有兩種:
指定global坐標的Manual設定。
指定effector相對位置的Lock設定
因為Lock追蹤的是補正之前的位置,故而可以完成因為Look At或者Foot IK姿勢發生瞭變化時的回溯。
FABRIK(Forward And Backward Reaching Inverse Kinematics)
對照IK Target移動末端骨骼時,不使用回轉行列就能將各骨骼的位置配置並決定到線上的方法。
因為不需要逆行列計算,隻需要很少的計算就能得到近似解。
本案例中在 Hand IK/Foot IK中使用。
因為Sub Base,Fullbody IK就沒有利用已經實裝的內容的機會瞭。
和其他遊戲一樣,《FF7 RE》中的腳部動作需要感知地面的凹凸,並自動改變腳的位置。此外本作還能僅僅固定腳部的位置,隻改變腰的高度。由此在防禦姿態中,角色可以在放低腰部同時自然地步行。
此外,還有不移動腳,就能讓腳從地面部分離開的技術。此技術在CEDEC2016的《生化危機7》相關部分也有涉及。
Foot IK & Hip Control
檢查出地面的凹凸之後進行腳的位置改變。
根據Foot Lock(腳位置固定),對腰的位置進行動態補償。
戰鬥中的防禦行走動作,沿用瞭通常的行走動畫,不過由於重心下降,將腰的位置下降瞭10CM左右。
保證瞭在不移動腳的前提下,Base Height(從腳後跟到腳尖,離地面最近的高度)部分能從地面移開。
在站立或者行走的時候,根據重心腳所接觸地面的高度改變腰部位置。
根據傾斜角度回轉Root骨骼,對腰的位置進行補正。
Balance
使用Foot IK或者Hip Control之後,身體的主軸會偏移,根據傾斜角對骨骼進行回轉補正。
能夠設定的項目如下:
對應Pitch的加算值
對應Pitch絕對值的加算值
對應Roll的加算值
遊戲引擎上的Control Rig是必須的嗎?
能夠在運行時間進行補正和調整作業很重要。
即使有瞭專用的preview環境,有時也會需要在遊戲運行的同時調整參數。
積極對遊戲引擎內的Control Rig進行瞭對應的人,在應對環境(背景物或者周圍的角色)的變化導致的結果的變化時,也能更快地調整。
敵方被打倒的動畫之類,則使用瞭史克威爾艾尼克斯正在開發中的系統。(這套系統)不是單單使用物理演算將敵人打飛,比如劍擊中瞭敵方的手,(這套系統)能夠即時生成手被擊打到並倒地的動畫。
BodyDriver(物理動畫)
技術推進部正在開發中的物理動畫系統。
在一部分角色的死亡演出中使用。
和簡單的物理演算動畫不同,這套系統能夠運行時間生成擊中手時手被壓制、在行走的同時摔倒等等演出效果。
物理限制補正
使用Position Based Dynamics[MHHR07]應用物理限制條件之後進行補正處理。
將物理限制條件預置化並組合後在Mesh中設定為用戶數據。
左側是角色沿著Spline移動時對身體的扭曲進行補正。
一部分的角色同時使用瞭加算後生成的傷害動作和物理限制補正。
因為根據攻擊的方向圖像會變化,擊中時會給到玩家很良好的反饋。
因為Mesh空間內物理模擬的負荷很小,因此簡單的背景物品也使用瞭這種技術。
物理的開關、重力、速度之類在gameplay中很容易控制。
PBD是一種先單純根據速度計算出物理物體的位置,再根據設定好的限制條件迭代並將位置修正之後,根據位置之間的差距確定速度的方法。
這個方法本身比較簡單所以穩定性高,因為處理代價小特別適合遊戲。
限制條件可以根據遊戲內容自行調整,即使那些在物理上不合理的動作也能輕易實現。
此外,角色們的骨骼使用瞭次世代的技術,如果骨頭歪瞭,當然角色們的肉體也會歪。使用瞭這種技術之後,能夠根據3D角色自動生成更加正確的骨骼,自動生成的動作也能更加自然。
KineDriver(輔助骨)
科技推進部開發的輔助骨系統。
在DCCTool上能夠設定實時動作的表現,在遊戲實時運行中也能得到同樣的結果。
使用本技術前的克勞德的右手稍稍有一點歪。
Bonamik(骨物理)
技術推進部開發的骨物理系統。
在角色的動作整體中使用。
設計者能夠輕松使用,根據情況還可以在Notify中調整參數。
使用的是在《最終幻想15》中積累下來的技術
參照臺詞自動生成表情!
以上都如原先生所說,是用已有的技術進行搭配的結果。但是在角色的表情和面部動作制作中,則使用瞭新的配合。
本作中角色的眼睛不會停止,而是會像人類一樣上下左右搖動,不斷重復進行眼球運動。此外,(角色們)在和其他人對話時,心理上也會和人類一樣,眼神會無意識地飄開。而這些都是實時發生的。
Saccade(眼球運動)
視線移動時,眼球會在短時間內不斷重復移動和停止。(12.5-17.5Hz)
已經移動過的角度會產生限制。
僅在移向視線指向的對象物體時會線性移動。
因為Micro Saccade,視線在沒有移動的時候眼球動作也不會停止。這時移動和停止的周期比Saccade還要短。(0.5-3.0Hz)
Gaze diversion(移開視線)
即使在註視著什麼東西時,視線也會無意識移開。
特別是在對話時,視線的移開是一種無聲的交流,如果凝視對方則是敵對心的表現。
因為完全按照條件來會造成較重的負擔,根據時間隨機移開視線就不會有這種問題瞭。
眨眼基本上是隨機發生。在突然改變視線的位置或者臉的朝向時也會眨眼。此外,(眨眼時)也不會到完全合上眼皮的程度,而是會保持眼睛仍然稍稍張開,在此前提下,結合動作blend技術和一些隨機要素,遊戲中會發生各種各樣的眨眼。這些都是根據身體的動作和臉的朝向自動生成的。
眨眼
隨時間經過周期性眨眼,在2-10秒內之中隨機發生。
因為劇烈的眼球運動而發生的反射性眨眼。在Look At對象位置發生大幅移動時發生。
在完全閉眼的眨眼發生時無視Saccade的移動角度限制。
根據身體動作自動生成Saccade
根據身體和臉的朝向自動生成眼球運動(saccade)。
Jenkin中所有對應身體動作的curve都經過bake。
在沒有從AI處得到Look At要求時使用。(fieldgimmick或戰鬥動作)
此外可以說是本次演講的一大焦點的則是一個叫做“HappySadFace”的自動口型(lip synchronization)生成系統(和角色臺詞的聲音對應,好像正在說出這種語言一樣的口型)。
這個口型是參照聲音數據和文本輸出數據,生成的口型動畫。演講中還展示瞭本作支持的日語、英語、法語、德語四種語音下同樣的臺詞對應的克勞德的不同口型。
日語語音對應的口型
英語語音對應的口型。能看到英語特有的咬下唇的動作。
HappySadFace(自動口型)
科技推進部開發中的自動口型系統。
從聲音和文本中輸出專用格式,用Maya和虛化4生成口型動畫。
支持日語、英語、法語、德語。
因為時間線數據是簡單的文本數據,為瞭使動畫整體更加流暢可以整體進行過濾。
HappySadFace(自動口型)
因為從語音中將音素抽出的形狀數據的目錄被做成瞭時間軸,如果改變瞭形狀數據,(口型)也會同樣變化。
音素與形狀的對應表根據語言的不同分別制作。
為瞭表現因感情產生的表情變化,形狀數據的預設也做瞭替換。
有瞭這個系統之後,即使不用人工去做,也能做出與語言對應的大量臺詞的口型。但是“HappySadFace”也還有作為參考的文本數據可能有錯誤,聲優如果即興發揮,口型的對應就會變難的問題。而且,自動生成的口型如果出現不與語音對應的錯誤的話,目前隻能通過人眼看來發現。
此外,還有能夠從語音的音量自動生成眉毛動畫的“ST Emotion”技術,這一技術還可以從聲優們的聲音中推定感情的參數,自動對感情的表情進行blend。由於有此技術,就算僅僅有臺詞,也能在任何場景都用很像人類的表情表現角色們的對話。
根據語音音量生成眉毛動畫。
感知語音的起始,根據音量生成眉毛上揚的加算動畫。
因為是加算所以在一小段時間內連續重復放送也沒問題。
準備好眉毛上揚狀態的姿勢動作,根據blend率進行加算。
根據語音音量生成上半身加算動畫。
感知語音的起始,根據音量生成上半身前後傾,頭和脖子扭動的加算動畫。
因為是加算所以在一小段時間內連續重復放送也沒問題。
加算值用IK Control Rig作為預設定義。具體再放送哪個預設,需要在再放送時隨機決定。
根據聲音生成表情動畫。
使用ST Emotion根據聲音推測感情。
對符合感情參數變化的各種表情進行blend。
感情參數並不是以一種語音為單位,而是一種時間軸數據,所以即使在一種語音中也會出現表情的變化。
雖然推測的精度能夠達到70%,但如果發生差錯,表情的含義可能完全不同。
以上的表情都是由設計者指定後手動輸入的,場景也很宏大,但遊戲中也有不進行指定就進行對話的場景。如果將以上技術全部結合起來就能夠不用過場動畫,在吃飯、動作、自然的對話等等場景中品味表情豐富的對話瞭。
使用這些技術之後,表情更有人味
巖澤先生表示,“ST Emotion”已經在各種領域得到應用,十分值得信任瞭,但在遊戲領域的應用,《FF7 RE》還是第一個。今後也許在許多遊戲中都得到應用吧。
但是也有問題,比如巴雷特常常操著仿佛發怒的腔調,就很容易被判斷為發怒的表情;孩子們的聲音較為高亢,則很容易被判斷為喜悅的表情。
ST Emotion SDK
能夠實時運作的感情解析模塊。
能夠從人聲中檢測出五種感情,各分為十個階段。(包括喜悅、憤怒、悲傷、平常、興奮)
在遊戲領域的第一次技術合作就是和本作,此前已經有在許多項目中使用的實績,十分值得一用。
以上就是本次演講的全部內容,在您再次遊玩《FF7 RE》的時候,試著關註一下這些無心的動作或者過場動畫以外的表情,也許能從新的角度來享受遊戲。
文章來源:GameLook.com.cn
暫無評論
要發表評論,您必須先 登入