2017年6月7日 星期三

GDC 2015 Animation of The Order : 1886 _ GDC 2015 教團1886 動畫製作 上




教團 : 1886 的混接電影與遊戲動作
歡迎觀看這支影片,我們將深入探討教團 : 1886 的動作

首先我們先自我介紹,我叫Adam Byrne,我在ready at dawn擔任遊戲動作的組長。我是Daniel,我是過場動畫的組長。


對於不熟教團:1886的玩家,它是PS4獨佔遊戲,發生在架空歷史下,維多利亞時代的倫敦,你扮演Galahad,一名教團成員同時也是一名來自亞瑟王傳說的騎士

在這支影片,我們將探討我們怎麼製作遊玩和過場動作,將它們無縫接軌在一起。

再討論教團之前,我們要講一下rad過去的作品


Rad之前的遊戲,Daxter,戰神:奧林帕斯之鏈,戰神 : 斯巴達之鬼
這些都是在PSP上開發,他們是風格化的平台位移和戰鬥,並且全手調的動作。


1886對工作室來說的第一次
1.原創IP   
2.第3人稱設計    
3.遊戲使用RAD(黎明)的新引擎    
4.遊戲會在PS4發售 
5.遊戲使用動態捕捉系統
如你所見,這是一個瘋狂又具野心的專案,但它又給我們去探索各種可能性的自由,

我們一開始從一個單純的概念發想,
最初概念---由故事驅動的第三人稱射擊
再來選擇一些遊戲和電影,寫下啟發。我們從
遊戲啟發---祕境探險  最後生存者  戰爭機器
這些遊戲啟發我們色調
說故事的手法則由
電影啟發---銀翼殺手  皇家夜總會  福爾摩斯
綜合以上的影響,給我們視覺風格,我們稱之為
視覺風格----  仿電影式寫實風格!


甚麼是仿電影?
1.將風格 語言 轉換電影模式,遊戲會感覺像是電影
2.不止使用劇情動畫,也透過遊戲體驗編造故事  
3.使用遊玩方式無縫融合過場 cut scene 比較短的劇情片段

在製作1886之前我們做了一個protoType,這是一個機會,在實際進入正式生產之前,可以測試
我們想做的視覺點子和技術。

你也許有注意到玩家的移動比最後結果更簡化,我們最初的方法是粗略的比例和手調風格

但在遊戲裡使用motion capture之後,我們插入更多寫實性指導。

從prototype我們學到甚麼?
為了要符合真實環境,我需要製作移動更真實的角色
1.角色的風格要符合環境(世界)
就像我們以前遊戲prototype的角色,有被風格化比例(可能小腿比較長,前臂也長),如果我們要讓他看起真實,這就沒辦法使用。
2.角色比例一定要以真實為基礎 (我們的比例)

3.手調動作不適合用在真實動作上 (而且製作太長,然後量太少不夠)

4. 即使我們沒有許多MOCAP的經驗,我們還是需要建立一個完整的MOCAP工作流程

真實的動作始於真實的綁定
在我們開始製作真實動態之前,我們要重新思考我們的綁定,


從新思考綁定
首先 我們列出我們的角色有風格化的比例。其2,我們有兩種非常不一樣的編輯Mocap和手調動畫的工作流程,這讓我們結合mocap和offset的骨架。

1.真實比例
2.Mocap工作流程
3.Mocap/Offset rig

我們來討論角色比例,左邊是我們prototype的角色,中間是我們更新他的比例,右邊是最後成品,
prototype你可以看出,這比例在之前遊戲裡,他的手腳比例長,身軀短,但我們知道這款遊戲必須更寫實,所以為了要使他更真實,我們回頭把身體重建,最後我們把衣服做在最上層模型上,這讓我們理解角色"穿"衣服,而不只是做出一件衣服。


再回到Mocap工作流程,在prototype裡,我們有兩種模式,左邊,只有FK,為Mocap設定的Rig。右邊是傳統手調動作,為Keyframe設定的Rig。因為不能轉換這兩種動畫,這會很麻煩。在使用Motion Builder之後,和我們的朋友頑皮狗討論後。

後來我們結合FK和控制器的Rig,製作出統一的Mocap移動骨架。

我們來談談這副骨架,因為我們以它建立整個動畫工作流程,對於Keyframe動畫,我們依舊可以使用,它還是對手調動畫友善,它有透明度選項,和在肢幹上有IKFK轉換。不過一旦我們導入Mocap,我們可以使用關鍵格骨架當作位移,mocap資料可以讓它更有彈性。
這是我們如何使用位移,左邊是mocap骨架,有一個非常直覺的姿態,右邊是動畫師的位移動態,比較正確。我們可以拷貝mocap的動作,給這付骨架並用位移調整。


我們來討論電影中的真實主義,真實主義包含很多意義,我們努力追求的是電影的真實感,所以我們將電影帶進我們的文化好長一段時間。電影的部分目標是讓他感覺像真人動作電影,而不是電腦製作的。

仿電影的真實感
這一切始於動態捕捉和角色表演
1.全面性的表演捕捉
再來,試著讓角色踏入這個世界,這對於CG是很難辦到
2.角色是基於這個世界
最後,讓攝影機感覺是真實的,存在這世界。
3.攝影機是基於真實性  (這裡舉戰神,是一種完美的攝影路徑)

如何擷取我們的表演,這邊有我們的分解步驟,我們擷取我們電影影像,不管何時,盡可能一起擷取聲音,臉部和身體,我們等下把未加工資料匯入Motion Builder,並且開始架設攝影機,編輯這個過程。

當我們在清mocap動作的時候,我們把臉部的影片,投射到頭部,讓我們可以更能確定編輯。
一旦編輯確認好(Locked),我們會開始在Motion  Builder裡,清理身體和手的位移,再移到maya去做手指調整,我們要在分開的工作流程裡,處理臉部,我們無法在清身體的時候看到臉部表情,所以這意味我們要依靠最初的編輯,當作我們的準則。
我們使用Sony視覺美術服務團隊,他們的擷取經驗,和倚靠他們的外包團隊,最後把電影匯入引擎運行。你可以看到最後成像,頭和身體組合,有很多技術性的動畫發布,需要所有電影的完成,也是有最後一刻的修改,這製作上,這無可避免。
下一個目標是,當拍攝真人動作角色,自然地感覺他們就在這世界。運用動態擷取,也試著做出同樣結果 。我們想要避免角色的陷阱,避開和物件接觸或圍住,這都是mocap常見的。
我們會把場景建置並且限制mocap的表演範圍,這增加複雜度,它幫助我們避免演員只是循環站著,也允許我們可以在場景周圍建構動作,和一群演員對它做出反應,因為演員可以對環境做出間隔,允許我們利用環境拍攝,得到更多場景的。
我們來討論我們的攝影機哲學,有很多時間花在圖像繪製,讓鏡頭感覺和移動更精確,但我們也確定攝影機移動也是感覺精確。
這邊有些我們之前遊戲的攝影機範例,注意這些攝影機做出不可能的移動,為了去拍攝動作,它會旋轉縮放,然後移開,這實在不太可能發生在真實攝影機上。
它完美的追蹤動作,並且用些微動到停滯或限制去移動。
這種攝影機運動,可以製作非常戲劇性的拍攝,它破壞真實的想像。

所以我們第一條規則,不可能的攝影機移動部會出現,就是真實攝影機沒辦法拍的狀況,我們就要避免,我們的角色也不會完美的在攝影機裡表演,利用現有的mocap動作。我們也限制鏡頭的使用,沒有無止境的焦距選擇,所以我們決定不需要的焦距,也因此定義出我們的遊戲鏡頭風格,但我們也利用寫實的屬性給所有的鏡頭,

1.沒有CG式移動

2.Mocap的不完美性

3.限制鏡頭選項

這是prototype之後,我們第一次把成品導入遊戲,這次把我們之後要做的所有電影基調做出定調。
你可以看到如何融入角色感覺
因為手有觸碰,還有他們如何避開障礙物。
你再仔細觀察攝影機,你會發現拍攝不會總是完美跟隨動作,有一些不完美動態,和如何加入一些手持攝影機的感覺,給攝影機額外的重量和畫面增加 一些顆粒感,你也可以看到限制鏡頭的使用,也因為如此,我們模組化鏡頭,有正確的變形,色差現象也可以造成真實感。這些元素放在一起,會讓鏡頭看起來是在真實世界用真實攝影機拍攝。
我們現在來討論遊戲中的動作。
遊戲中的真實主義

對於prototype 的最終目標
1.盡可能真實模擬人類動作和行為,不要因為這是遊戲而放棄。
我們知道這需要努力達到完美的平衡,並需要重新思考遊戲動作系統的傳統方法。
2.讓每個控制有責任和意義,不要為了美觀而犧牲控制。

下一步,我們定義普遍的動作問題
就是混接兩個很明顯的動作,這會讓人抽離遊戲。
1.唐突的轉換

也因為先前的限制,待機移動循環動作會變得很重覆。
2.重複性循環

因為1886基本上會有掃射,這表示你會面向某一個方向,然後向任何方向移動。這會組合多種做法,但這都沒辦法很自然。
3.掃射混接

遊戲通常只運作倒退速度的敏感度,並且控制它,但這通常會變成慢動作或是快速向前看的動作。
4.動作倒退速度

最後我們要動作圖層,並且分割身體,這是很實用的特點,但有時候他們會讓角色感覺身體的局部是沒有和身體相連動的。
5.動作層/分割身體問題

我們從破解轉換開始,最大的問題在於,遊戲內是粗糙轉換。我們一般看到一個動作在1/10秒裡,很突然轉換成另一個,這會讓人抽離遊戲。

所以這是我們的轉換哲學
首先如果你不需要多重動畫,避開完整地轉換。
1.避免不必要的轉換

但還是有些地方你需要快速混接,玩家期望輸入後,立即的回饋
2.快速混接使用者的輸入

但其它混接應該不會被玩家看見。
3.所有的混接都要平順和無縫

        一個很棒的不需要轉換的例子,可以從站立的待機做起。他們是最典型且構成許多短動畫,並且是隨機的循環,接縫很明顯,在無數次的觀看後,動作會變得容易被識破循環。解決方式,我們從我們的朋友頑皮狗學到,就是只要一個長待機。

避免不必要的轉換
例如 : 多重短暫/重複的待機 
解決方案 : 一個長時間待機

        這個待機就是把重複性移除,減少容易辨識性的動作,這樣也移除了所有接縫,並且給我們機會有更自然的表現。但我們有長待機,一個新的挑戰也出現了。

        一般來說,每次玩家移動,它就要重啟待機的開始,因此我們只會常常看到待機的前面幾秒,不管待機有多長。為了修正這個,我們設置一個重返功能,不論何時,待機被中斷,它 會記住它從那邊被中斷,不管何時,若角色再次待機,它會再接續剛剛中斷的的位置。

挑戰 : 重新開始待機 
解決方案 : "重返"功能

我們來談談快速混接,單純快速的混接,依舊在遊戲中有它的地位

快速混接使用者的輸入

快速混接使用者的輸入
在指令輸入裡,太慢/太平順的混接會感覺遲緩,
使用者期望操作者輸入,能夠立即回饋
所以快速混接,這種情況下,就非常適合。
例如 :
按下按鈕
偏移搖桿
釋放搖桿

所有的混接都要平順和無縫,這讓事情變得有趣起來。


       理想化的轉換,不是被玩家啟動,它應該是透明,玩家甚至查覺不到,這個目標讓我們發展出兩個重要的混接功能。轉換成idle待機使用Settle blending,轉換成動作movement使用Phase blending,我們將深入討論這些功能。

平順/無縫 混接
保持所有轉接都可見
我們研發以下功能
Settle blending   終止混接
Phase blending   區間混接

      因為我們的idle待機可以在動作的任何時間點,重返resume回到idle上次撥放的時間點,不需要結束一整個pose,再去銜接idle,因為我們再也沒有標準idle,為了修正它,我們製作settle blend。

終止混接
挑戰 : "重啟"待機,沒有標準姿勢
解決方案 : Settle blend "終止"混接  
 跑步

停止

待機

      這個範例,包含跑步-停止動作,在短暫的動畫部分之後,踏地位置到settle,是一段長交錯(long  cross)混接,混接兩者 跑步-停止和待機,這有點難說清楚 動畫它是在哪裡結束而另一動畫是從哪裡開始,我們試著讓每件事從半秒鐘到三秒鐘,但我們發現可以少量混接的最佳時機是一秒鐘。


姿勢匹配
   接下來,我們要討論混接到動作,現實中,開始起跑,需要複雜和識別度高的身體運動,Mocap給我們逼真的動作,但混接到動作卻是個微妙的部分。

法線匹配
    在以前的遊戲裡,我們會把動作起頭(move start)的N個影格,和動作循環(move cycle)的前面幾個影格,做成一樣。但有數千個動作起頭的時候,這作法就很難擴大,即使所有的pose都與身體的動作一致,這也無法避免有大量的調修。

動畫妥協
    最後,動作起頭長度通常都太短,遊戲催促它們,盡可能快點讓角色進入動作循環
混接到動作中,但這讓可信度降低,因為重心轉換變得急促,不到幾格。

挑戰 : 姿勢匹配
法線匹配
動畫妥協

解決方案 : 區間混接

       那什麼是區間?它們被指定到動作循環的某部分,被利用來同步動畫,不管動作速度,動畫節奏,動作方向,或循環次數。動畫師標示動畫,定義出一個區間,這些影格,之後引擎讀取這些標示並一起混接動畫,使用區間,他會逐漸平均區間內的動畫播放。

什麼是區間混接?
移動循環的一部分,被利用來同步動畫。

       這邊有個例子,區間是如何混接,允許我們在動作起頭(move start)和動作循環(move cycle)之間做無縫轉換,動作起頭的一半,區間被偵測並且會去匹配動作循環相似的區間。

例如 : 移動開始區間混接 


在跑步起頭有4個區間 ,所以系統會在跑步循環裡,找前面4個區間去匹配。

再回頭把兩個動畫速度逐漸調整,因此區間就被連結起來。
這個就是結果,因為混接會發生在任何影格上,並被兩個動作mask,幾乎不可能告訴那裡要停止哪裡要開始。區間允許我們混接run start和walk cycle或walk start和run cycle。


        現在我們有混接和轉換的解決方法,我們回到常見動畫的問題上,並討論重複的循環,我們已經解決重複問題,當它是待機,就是延長它的動畫長度。

常見動畫的問題
1.突兀的轉換
2.重複的循環
3.劇烈混接
4.動畫播放速度
5.動畫圖層/分割身體問題

      我們現在來討論,有關動作循環如何重複,傳統上,導航動畫都是一個單一循環兩個步伐,這讓動畫非常統一,並且細節特徵太少,移除任和動態表演的能力,為了解決這問題,我們創造了多重循環運動動畫,並且運用區間混接(phase blending),保持它們能夠同步,而不管每個動作有多少個循環。

問題 : 重複運動的循環
- 太一致
- 細節特徵太少
- 動態沒有表演的空間

解決方案 : 多重循環運動動畫

        左邊我們有多重循環動畫,右邊我們同樣的動畫,縮減成一種循環動畫。第一 眼看到,會覺得很類似,但看過右邊的動畫循環一 遍又一遍後,你會注意到它像機器重複。不管你怎麼努力的試,每個腳步都會在些微不一樣的時間,踩在些微不一樣的位置,而重心會自然的些微轉移,保持你在直線上移動。我們發現3到5個循環,是非常適合的。給我們各式各樣的必要動作,不讓動作感覺有重複感。

    我們來討論劇烈混接

                                                                   常見動畫的問題
3.劇烈混接

    教團的動作系統基於掃射,我們為多個移動方向做了很多動畫,用phase blending來做同步,這也代表有另一個挑戰,我們要如何切換向前移動,變成向後移動。

劇烈混接
挑戰 : 從向前走轉換成向後走

    在我們的系統裡,使用4個方向的掃射動畫,前進 後退 左邊 右邊,由於左邊和右邊是技術性的前進動作,要混合它們和後退的結果,會些滑步和兩腳互穿插。

為了要解決這個問題,我們增加側走(Sidestep)種類的動作,可以正確混接前進與後退。

劇烈混接
挑戰 : 從向前走轉換成向後走

解決方案 : 側走循環

    因為人類偏好前進,我們限制直線後退,因此,我們選擇以135度向左邊和向右邊,當作我們的側走(Sidestep)角度,成為一般動作。

    當武器瞄準,身體自然轉向右,少許的偏向前方前進。

    我們選擇45度左邊和135度右邊,當做我們瞄準側走(Sidestep)的角度

    我們來討論動畫播放速度

常見動畫的問題
4.動畫播放速度

    過去我們會限制非連續的動作,像是走路和跑步,加快或減慢去符合玩家搖桿的偏移量,這導致不自然的動作,看起來像是慢動作或快速前進,為解決這問題,我們增加更多的速度提升。我們使用phase blending去同步所有的移動,依據搖桿偏移量,播放適當的速度。
動畫播放速度
問題 : 移動動畫有時候,看起來"慢動作"或是"快速前進"

解決方案 : 更多的速度提升!

我們有4種標準移動速度,1. slow walk, 2. walk, 3. jog 4. run。


這結果是很靈敏,玩家控制著可信的角色動作。


    下一項,動畫圖層/分割身體問題,animation layer 不是新的概念,在遊戲裡他們大量的使用,也有一些陷阱。

常見動畫的問題
5.動畫圖層/分割身體問題

    利用animation layer有兩種方式,在關節上,additive或Replace。additive layer增加動作資料,通常利用在你想保持動態(motion),但想改變pose。Replace layer忽略所有動作資料,它用在你想完全覆蓋其他layer的動作。


    在教團 1886中,我們使用animation layer,用在像是Aim offset(瞄準位移),Weapon Hand Grips(手持武器)。

    這邊有個範例,你如何使用上半身additive animation layer,去瞄準任何方向,並保持全身所有動作都是在瞄準待機。

    我們使用replace layer,用在手持來福槍導航,手指抓取任何武器都能吻合,上半身臀射。hip fire 和 aim animation layer,讓我們有很大的挑戰。分割身體(split body)是未來趨勢, 我們在上層和下層身體行為,播放不同動畫。這真的很實用,但通常上半身和下半身感覺無法連戲。
    因此我們有全身的瞄準掃射動畫,讓全身感覺是連接的。
    Hip Fire我們不能用全身動畫,而不複製我們整個動作資料庫,所以這不是選項。(左邊上半身只是一個pose,右邊上半身,是一個動作)我們也不能只是replace一個靜止的pose,因為就如你所見,左邊真的很糟。換句話說,我們替換上半身動作,使用phase去同步上下半身的動作圖層,這給我們較自然的動作方向,只有用一個上半身additive animation。

 這就是5種常見的動作問題。我們增加額外功能,Pivot是我們呼叫動畫快速轉換,從這個移動方向轉換另一個方向,當真人轉換方向,他們必須丟下他們的重心,並規畫自己的步伐。

    因此,轉移他們動能到新的方向。

製作這動畫不會太難,除了將它們轉成較具侵略性,讓它們回饋更多,但找到對的數值,啟動pivot,被證實有更多的挑戰。而這還有很多進步的空間。





























7 則留言:

  1. 我可以申请转载吗?

    回覆刪除
    回覆
    1. 你好,视频里讲到的Settle Blending指的是什么呢?看了好几遍没有理解,我以为是指额外添加一个过渡动画呢。希望能够解答,谢谢。

      刪除



    2. 一般來說,為求快速,通常製作跑步到停止,只會做跑步,停止就用idle,中間的過度用軟體計算。
      因為他們不想要任何動作接回同一個idle動作,這個過程會變得不自然,所以他們製作了settle Blending,當作任何動作接回idle的過度動畫。演示中跑步-停止(settle)-待機,中間停止的動畫,我自己認為就是settle Blending。這過程很花工時,不過最後成果也相當自然流暢。以上我的答案你參考看看,謝謝。

      刪除
    3. 沒錯 就是做一個过渡动画

      刪除
    4. 不過我認為這個用mocap拍攝比較省時,再給動畫師修成可以用的動畫元件,工時才會降下。

      刪除
    5. 多谢解答!

      刪除