The Coalition深入講解《戰爭機器5》的技術(上)
我們找到這家工作室,討論了他們如何利用虛幻引擎和原始碼訪問交付出一流的後期處理效果、粒子和體積光照,同時又在Xbox One X上實現60 fps的幀率。說到如何在各種硬體平臺上實現流暢而一致的效能,他們透露了他們如何巧妙利用HLOD之類的工具放寬對繪製呼叫的限制,從而開發出這款遊戲細節豐富且多樣化的環境。
考慮到《戰爭機器5》奉獻了一些遊戲史上保真度最高的角色模型,我們還和他們討論瞭如何使用雙瓣高光、反向散射和複雜的眼部渲染功能結合一流的動畫技巧來提供栩栩如生的數字人類。The Coalition還談到了他們為這款遊戲開發系列中首次出現的開放世界場景片段時所遇到的一些挑戰,並說明了他們是如何克服這些障礙的。
請看虛幻開發者日2019上的“《戰爭機器5》的視覺效果技術”演講。
《戰爭機器5》是The Coalition開發的第2款《戰爭機器》遊戲。與《戰爭機器4》相比,它的開發過程有什麼不同?
戰役模式設計總監Matt Searcy:《戰爭機器4》的工作重點是證明我們能夠做出優秀的《戰爭機器》遊戲。對我們來說,重要的是讓遊戲迷看到The Coalition繼承了原作的世界觀、角色和遊戲性。在那個遊戲中,我們下了很大力氣讓遊戲性與《戰爭機器3》相當(有一些細微調整),並圍繞那個核心體驗設計新的戰鬥、敵人和模式。
從那個意義來說,《戰爭機器4》其實是《戰爭機器5》的前期製作。我們相信自己有能力做出優秀的《戰爭機器》遊戲,而從我們收到的評論和反饋來看,我們顯然達成了那個目標,而且社群想要看到進一步的提高。
對於《戰爭機器5》,我們一開始就決定要挑戰期待。首先它必須是一款優秀的《戰爭機器》遊戲,但我們的前期製作把重點放在探索新體驗以及如何將它們融入《戰爭機器》上。機器人Jack、載具Skiff和“撤離”模式等功能把遊戲的設計擴充套件到了新的領域,同時我們在其他領域也是從一開始就下力氣搞新的技巧和技術。如果沒有從《戰爭機器4》積累下來的基礎和專業經驗,我們絕對沒有時間來探索這些。
《戰爭機器5》擁有各種令人折服的視覺效果,包括逐物體動態模糊、螢幕空間反射、精細景深效果、曲面細分等等。團隊是怎樣巧妙運用這些後期處理效果的?
工作室技術美術總監Colin Penty:我們對這些後期處理效果的運用是非常巧妙的,因為我們既不想在視覺效果質量上妥協,又希望在Xbox One X上保持60 fps。我們竭盡所能把Epic的UE4最新發行版中所有後期處理效果都整合到我們自己的UE4引擎版本中,其中新的光圈景深是我們完成的最後一個後期處理整合。
說到如何運用這些後期處理效果,通常在戰役模式中,只要Xbox One上能跑得動,我們就會使用不帶光澤的高質量SSR(PC上是有光澤的SSR)。對於曲面細分,我們建立了自己的自定義非同步曲面細分著色器,基本上專門用於我們的白雪和沙礫材質。如果要讓玩家周圍的沙地和雪地動態地發生變形,為了做出逼真的效果就必須使用曲面細分,除非對網格體進行極高的預曲面細分。遊戲中大量運用了泛光,但我們通常避免使用最嚴密的泛光核,因為它對GPU效能要求很高。我們使用了比《戰爭機器4》更多的攝像機曝光搖擺,讓攝像機能夠根據地圖上明亮和黑暗的區域進行調整,不過我們還是很重視效能,如果遊戲中某些區域的光照值範圍不是很廣,我們就會鎖定攝像機曝光來提高效能。最後,在開發接近尾聲時,我們還對整個遊戲進行了一遍調優,以實現鏡頭光暈和鏡頭灰塵效果。
我們還將後期處理鏈設定為在下一幀非同步執行,這也讓我們能挽回一些效能。考慮到我們的後期處理通道因為始終以原生解析度輸出而開銷高昂,這個舉措是很有意義的。我們依靠UE4的臨時上取樣來縮放我們的基礎通道/光照/半透明等等的內部解析度,從而維持GPU效能。
《戰爭機器5》的光照效果令人印象深刻,其中使用了體積光源、體積霧和動態陰影。團隊是怎樣做到這些的?
Penty:我們的團隊特別喜歡UE4增加的體積霧系統,只要有可能就會用上。我們建立了一個藍圖系統,它讓我們能夠在關卡中各處放置體積霧圖元,我們會在GDC 2020更深入地討論這個問題。我們的戰役模式在Xbox One X上保持了60 fps幀率,同時還實現了體積霧質量,我對此感到自豪。
對於光照,我們決定避免使用我們在《戰爭機器4》中大量使用的靜止光源。這使我們可以不再對陰影使用陰影貼圖紋理,從而節省紋理記憶體,加快著色器渲染,也讓我們可以顯示完全實時的陰影。對於遊戲中所有的光源,我們都使用了可移動光源,通過一些小微調,我們讓可移動光源能使用Lightmass烘焙出間接資料。這都儲存在我們的光照貼圖中,它與陰影貼圖不同,後者儲存的是所有顏色GI資料,而不是陰影。
除了定向光源陰影級聯,我們還使用了距離場光線追蹤陰影來顯示環境的陰影。在這種陰影中,光照系統使用網格體的距離場表示作為陰影投射器。因為玩家只有在一定距離上才會看到這種陰影,所以我們就可以讓距離場表示不是非常精確,從而節省一些記憶體。
當然,你需要一個能幹的光照團隊把所有這些技術元素整合起來,提供華麗的視覺效果,我們的團隊在這方面就做得非常棒。
這款遊戲具有精彩的粒子效果。The Coalition在這方面是怎樣做到的?
Penty:我們的視覺特效團隊為《戰爭機器5》提供了一些了不起的效果。考慮到主機沒有最強的CPU,而視覺特效又可能給CPU造成很大負擔,這確實很有挑戰性。為了繞過這一限制,我們使用材質編輯器建立了一個叫做Swift Particles的新視覺特效系統,它讓我們能夠使用頂點偏移,在不產生任何CPU開銷的著色器中建立視覺特效。我們主要用Swift Particles表現環境視覺特效,【例如】雪、塵土和雨。
我們也儘可能使用GPU粒子,不過有些比較複雜的效果是挺難實現的。我們對UE4的粒子新增了一個“GPU生成”功能,使得粒子也能在GPU上生成。
為了控制CPU效能,我們的技術美術團隊花了很多時間來處理視覺特效,確保粒子數量和發射器數量合理,並確保使用粒子LOD。為此我們不得不重新檢視《戰爭機器4》中的角色和武器特效,並針對《戰爭機器5》重新優化一切,因為《戰爭機器4》是30 fps的遊戲。
《戰爭機器5》中出現的角色面部巧妙地運用了次表面散射和雙瓣高光。眼睛還使用了逼真的光線散射,進一步提高了保真度。The Coalition是如何製作出這款遊戲中精美的數字人類面部的?
Penty:我們的角色渲染和效能也許是在《戰爭機器4》基礎上較大的視覺效果提升之一。在《戰爭機器5》的開發伊始,我們就著手製作角色皮膚、眼睛和毛髮。
對於皮膚,就像你說的那樣,我們實現了雙瓣高光,這大大提高了皮膚的“光澤”質量。我們還使用攝影參考優化了皮膚反向散射來確保真實。為了表現毛孔細節,我們還新增了細節法線。
對於毛髮,我們建立了一個更好的工具,使用Maya中的Houdini Engine來生成毛髮,使毛髮更好地紮根。我們對毛髮材質做了一些調整,但是保留了《戰爭機器4》所用的毛髮著色模型,那是一種Disney Marschner著色模型。
我們在眼睛上花的時間也許是最多的。我們給虹膜新增了Paragon凹凸貼圖偏移,將眼睛改為使用SSSSS(螢幕空間次表面散射),使它們在眼窩中顯得自然多了(《戰爭機器4》沒有對眼睛使用SSSSS)。我們新增了許多附加的眼部幾何體,例如眼淚、淚腺和眼睛AO幾何體,這大大提高了逼真度。作為最後的潤色,我們新增了一種動態的虹膜Caustic系統,它是受Jorge Jimenez和Javir von der Pahlen的GDC 2013講座啟發而開發的。我們還重做了面部,大大提高骨骼和麵部結構的準確度,這也對提升逼真度很有幫助。
美術總監Aryan Hanbeck:我們非常希望在《戰爭機器4》的角色面部基礎上顯著改進。遊戲的最初幾秒鐘有Kait從噩夢中醒來時的面部特寫鏡頭。我們組織了一個突擊小組,專門負責專案中大部分的Kait面部,他們就使用這個特寫鏡頭作為展示進步的試驗場。每隔一段時間,我們就能看到顯著的提高,並且對結果很滿意,但是接下來我們又會看到他們做出了其他改進。好在每當Kait有了改進,我們就能把那些變化帶到其他角色身上,所以最後所有角色的質量都有了飛躍。
《戰爭機器5》被稱讚為可能是對HDR運用得最好的遊戲。能詳細說說工作室是怎樣利用機器學習做到這一點的嗎?
Penty:我們使用了Redmond的ATG組開發的機器學習演算法來訓練一個逆向色調對映器進行色彩空間轉換。然後我們把這50%與Reinhard緩衝區混合,以實現最大限度的控制。
HDR背後的技術只不過是這套綜合技術的一部分。例如,在內容端需要進行許多調整,以確保槍口火焰和天空盒處於正確的光度範圍。我自己也需要進行許多調整,與美術總監和工程師們合作處理公開的引數,以確保HDR的外觀正確。有時候經過調整,它在一個關卡里看起來“很棒”,但同樣的調整值放到下一個關卡里觀看起來就很糟糕,所以必須非常小心地設定HDR值,確保在效果華麗的同時又能適應各種情境且保留美術師的意圖。
最後,我們還花了很多時間來確保有一個能代表各種光照情境的可靠校準螢幕。我們實現了在調整HDR滑塊時隱藏校準影象的能力,同時公開一條代表HDR輸出的曲線。最後,我們增加了控制HDR對比度和最大亮度的功能,這確實有助於玩家獲得他們想要的畫面。
《戰爭機器5》具有頂尖的動畫和華麗的實時過場動畫。能詳細說說你們是怎樣捕捉遊戲中的精彩表演的嗎?
Penty:我們改用了FaceWare來處理《戰爭機器5》的所有過場表演,這確實有助於提高保真度。當然我們還有優秀的動畫師團隊,他們在那些資料基礎上實現了遊戲中的表演。
我們的面部動畫主要基於Blendshape,有作為“調節器”使用的關節,讓我們能夠修改Blendshape。我們整修了《戰爭機器4》的所有面部形狀來提高面部動畫質量,並重建了面部的壓縮和擴張法線貼圖。然後我們通過19個不同的皺紋部位驅動擴張和壓縮法線貼圖的混合以及面部血液流動。所有這些改進合在一起,再加上角色著色器的改進,確實讓角色變得栩栩如生。
遊戲中環境的精細和多樣化程度是前所未有的。能說說你們是怎麼設計它們的嗎?
Penty:從技術角度講,嚴格控制畫素密度對我們來說很重要,因為我們從一開始就知道這個遊戲將是Xbox One X上的產品,所以我們給遊戲中的大部分物體新增了細節紋理通道。我們還下了很大力氣提高環境材質在GPU上的速度,這樣一來,雖然《戰爭機器5》是60 fps的遊戲,我們也能把物體密度提得更高。最後,我們又結合了HLOD通道來放寬對繪製呼叫的限制。
Hanbeck:《戰爭機器5》擁有《戰爭機器》系列遊戲中迄今為止最多樣化的環境。因此,我們必須確保每個生物群落區都有與眾不同的視覺效果特色,能給人留下持久的印象。我們從美術的角度對此投入了許多關注,確保盡我們所能地把顏色、色調和氛圍表現得最好。
考慮到《戰爭機器5》引入了開放世界場景片段,能談談你們是怎麼實現這些片段的嗎?
Hanbeck:遊戲中具有開放世界場景元素的較大空間給美術方面帶來了重大挑戰。既要保證效能,又要在場景中放入足夠的物體來確保它有真實感,這兩者之間的平衡是非常難把握的。最後我們不得不認清一個現實,那就是無法讓物體密度達到我們線上性關卡里習以為常的那種水平。要點在於,當你乘坐Skiff以10倍於平時的速度穿行於場景時,其實不需要那麼高的物體密度。我認為我們找到了合適的細節水平,使場景顯得不是太空曠,有一定的可信度。
Searcy:加入更多開放探索區域的中心思想是改進以往遊戲中“調味劑”般存在的載具部分,讓玩家有更多選擇。第一步是構建Skiff,它是一種新的風力載具。它本身駕駛起來就很有趣,這是關鍵。然後我們對開放區域進行了許多迭代,設法找到合適的探索、距離速度和地形。最後一個環節就是Jack的升級。設計了為Jack找零件的支線以後,我們就能打造一些有趣的戰鬥,獎勵玩家可以影響遊戲主線的元素,讓玩家能夠隨心所欲地控制探索和打主線任務的節奏。
Penty:總體而言,我對於我們在保持60 fps的前提下達到的大地圖區域視覺效果是非常滿意的。是美術、設計和技術之間的密切協作確保了Xbox記憶體不過載,把物體突然出現的現象減少到最低限度。由於視線關係我們對開放世界場景片段大量使用了HLOD系統,還有虛幻的地形系統。美術師先在World Machine中生成地形高度圖和紋理圖,然後將它們匯入虛幻引擎中的地形系統,在其中繼續雕刻。所有地形著色器都按照儘可能高的幾何體密度執行曲面細分著色器。開放世界場景區域也在很大程度上激勵了我們放棄烘焙的陰影貼圖,改用實時級聯和光線追蹤距離場陰影,因為我們實在不想為這些巨大的空間儲存陰影貼圖。
《戰爭機器5》具有令人折服的破壞設定,包括可破壞的掩體和會破裂的冰面。工作室是怎樣在遊戲中實現這些的?
Penty:與我們對粒子的研究相似的是,我們發現可破壞的掩體在《戰爭機器4》中造成了很大的CPU開銷,為了在Xbox One X上達到60 fps,我們必須解決這個問題。我們將自家的Swift Particle System擴充套件為Swift Destruction System,它本質上就是使用材質編輯器構建的基於頂點偏移的系統。我們將Swift Destruction與我們的Houdini Engine破壞工具緊密整合,後者會烘焙出模擬到UV集所需的所有資料(例如:破裂點)。為了做出破碎的冰面,我們用一個頂點著色器設定實現該效果,它會識別冰面是僅僅出現裂縫還是完全破碎。然後我們必須使用設計手段來設定一個藍圖,在冰面達到破壞閾值時正確地更新玩家碰撞。我們還使用了Alembic快取模擬來驅動在Houdini中離線建立的頂點流送破壞。這非常適合用於遊玩空間以外的預設破壞事件。
更多訪談內容,請關注下期內容:The Coalition深入講解《戰爭機器5》的技術(下)。
作者: Jimmy Thang
來源:虛幻引擎
原地址:https://mp.weixin.qq.com/s/bRKMGIGH72sbMfKefjO4Qg
相關文章
- 區塊鏈技術概念深入淺出講解區塊鏈
- 深入淺出解讀 Java 虛擬機器的差別測試技術Java虛擬機
- 學術乾貨|深入淺出解讀 Java 虛擬機器的差別測試技術Java虛擬機
- 技術分享| 快對講-5G對講
- 深入理解虛擬機器、容器和Hyper技術虛擬機
- 技術分享:NodeJS中的Events(事件觸發器)講解NodeJS事件觸發器
- Linux雲端計算技術學習:虛擬機器基本結構講解Linux虛擬機
- 講了個好故事又做了個更刺激的模式,《戰爭機器5》這次真是又香又飽模式
- LTE-5G學習筆記12--5G 技術通俗講解筆記
- webpack技術講解及入門Web
- jQuery心得5--jQuery深入瞭解串講1jQuery
- 來聽聽達摩院技術專家是怎麼講智慧外呼機器人技術機器人
- 關於將本地 SAP UI5 應用配置到本地 Fiori Launchpad 的技術實現深入講解試讀版UI
- LTE-5G學習筆記17--COMP技術講解筆記
- 容器技術和虛擬機器技術的對比虛擬機
- win10商店搜不到戰爭機器怎麼解決Win10
- 深入解讀Service Mesh 背後的技術細節
- 深入瞭解 Docker:革命性的容器化技術Docker
- 不要跟我講技術
- 深入理解多執行緒(五)—— Java虛擬機器的鎖優化技術執行緒Java虛擬機優化
- 爬蟲的實現原理和技術進行講解爬蟲
- 深入講解Flutter應用模板原始碼:計數器示例Flutter原始碼
- 技術分享| 快對講,全球對講
- DAPP互助單邊上揚模式系統開發技術講解(程式碼成熟)APP模式
- 恆訊科技講解:CDN的原理技術及使用方法
- 區塊鏈公鏈的開發丨技術講解方案區塊鏈
- 趣文:用雞講解技術債務的形成過程
- 視訊對講技術
- 【Java核心技術卷】深入理解Java資料型別、變數 (擴充套件講解,結合Java資料型別變數套件
- 前端基礎技術知識講解-面試圖譜前端面試
- 面試圖譜:前端基礎技術知識講解面試前端
- 視訊技術詳解:RTMP H5 直播流技術解析H5
- Zip 壓縮、解壓技術在 HTML5 瀏覽器中的應用HTML瀏覽器
- SDN控制器技術綜述:SDN交換機配置技術與控制技術的關係—VecloudCloud
- 最新的關於BSP技術的深入剖析與詳解3(轉)
- LTE-5G學習筆記16--Volte關鍵技術TTI ROHC講解筆記
- 深入講解調整Oracle SGA大小的解決方法Oracle
- 的盧技術張英:汽車機器人的本質上是移動資料中心機器人