天美高階TA:淺談大世界場景自動生成技術

AllenP發表於2022-06-09
本文首發“TiMi Club 天美俱樂部”微信公眾號

中國遊戲行業發展至今,從專業到分工,正在經歷哪些變化?天美聯合騰訊遊戲學堂,舉辦“遊戲是門技術活兒:專業技能探祕”知乎圓桌活動,本文為圓桌議題“2022 年,有哪些遊戲領域的新技術令你期待?這些技術可能催生出什麼樣的遊戲內容?”下的回答,希望對大家有所幫助。

作者:AllenP
騰訊天美J2工作室高階技術美術

本人是一名負責程式化生成方向的 TA,個人興趣領域主要在大世界場景自動生成方向。

以往的場景生產基本都依賴於美術自由發揮,這樣雖然可以更好地發揮美術的藝術創造力,但需要大量的人工來堆砌資源,而且一旦場景設計做了修改,整個場景的美術資源基本都需要推倒重做,因此傳統場景生產的開發效率和修改成本都比較高。

為了能夠加速場景的生產效率,程式化生成技術就成了不二的選擇,這也是我目前最關注的新興技術之一。

在程式化生成的流程搭建中,程式化 TA 主要負責模組拆分的設計,生成規則的抽樣,生成演算法的實現,以及程式化生成工具流的搭建。

基於資料來源,很多東西都是可以通過程式化生成來製作的,如地形地貌的生成,河流的生成,植被的生成,基建的生成(道路,橋樑,建築,街區),氛圍的生成(如材質受酸雨的腐蝕,建築從上自下的髒跡)等。

簡而言之,程式化生成技術可以在僅需提供少量曲線資料,以及模組資源的情況下,自動化地將整個場景生成出來。

程式化生成具體是如何實現的?主要分為幾個步驟。

01、獲取資料來源

如河流的分佈,湖泊的範圍輪廓,道路的分佈資訊,建築的輪廓資訊等,這部分一般可以使用曲線+屬性的方式來表述。

天美高階TA:淺談大世界場景自動生成技術
由真實地圖的 OSM 資料匯入 Houdini 中形成的路網,河流資料

地形一般是用均勻的網格+高度圖來描述,網格一般是由引擎執行時生成的,因此如何生成地形實際就是如何生成這張高度圖。

如果是基於真實的地圖資料,可以在網上下載對應區域的 DEM 資料(數字高程模型),或者可以通過演算法進行迭代生成,比如使用噪聲圖疊加,熱力侵蝕,水侵蝕等演算法進行擬合。

道路,河流可以由曲線表示它的長度和走向,通過每一段標識的屬性可以獲取名稱,寬度等資料,以及地形的高低走勢,程式化生成出道路的模型,河流模型。生成時還要考慮一些約束對地形的影響,比如在起伏的山林中,道路始終是平整的,並且坡度不能超過一定的閾值。

建築,湖泊部分則可以通過封閉的曲線來獲取其在場景中的位置,通過型別屬性,來確定建築的生成風格,通過高度屬性來獲取建築有多少層等。

曲線資料的來源一般有兩種,一種是基於真實地圖資料的遊戲場景(比如可以通過 OpenStreetMap 下載地圖資料)。另一種方式是通過自己手動編輯曲線的方式來佈置路網。

02、對資料的補齊

除了通過手動編輯補齊外,還有一些自動補齊資料的方法。

比如通過路網資料,我們可以將地圖劃分為多個街區,可以自己設計演算法,對每個街區進行建築的填充,演算法除了可以考慮建築的分佈方式外(如寫字樓,可以採取沿街分佈,獨棟建築可以採取中心分佈),還可以根據街區的型別,去匹配不同型別,不同高度的建築群(如商業區,住宅區),最後由建築間形成的“縫隙”可以獲取到小路的資料資訊。

又比如,可以結合地形的高程資訊,水域的分佈資訊,地貌資訊,城鎮分佈資訊等,生成植被分佈的點雲資料。如果對生成的結果不滿意,也可以手動通過刷範圍的方式,人為地控制植被的分佈區域及種類。

03、將資料通過演算法轉化為 3D 模型

生成方法分為兩種,一種是通過演算法生成獨立的模型,這種方法比較適用於遊戲中特殊模型的生成,如不規則的交匯路口,弧度比較大的護欄等。

另一種是使用預先準備好的資產,根據一定的規則,將模型分佈在對應的點雲資料上。比如草,樹木,路燈這種一個點雲代表一個物體的。又或者是類似於建築模組這種,一組點雲資料代表一個物體的,如圖:

天美高階TA:淺談大世界場景自動生成技術
《黑客帝國覺醒:虛幻引擎 5 體驗》建築模組拆分示意圖

大型建築立面的牆可以用幾種模組拼接生成。這種拼接方式的好處是能夠節省模型、貼圖的資源量,並且在遊戲中可以使用 Instance Draw 的方式進行繪製,從而降低實時渲染的開銷。

04、場景裝飾物的填充和環境氛圍的填充

比如建築的掛件,街道上的路燈,護欄等。這些都可以通過抽樣一些分佈規則,通過自動撒點的方式進行生成。

比如如果設計師希望表達一種偏末世的場景,可以根據地勢的走向,對場景生成一些環境氛圍元素,例如:被水淹過的道路上可以生成一些青苔,建築上可以生成藤蔓,根據不同季節,植被顏色,茂密程度可以有所調整,被海嘯襲擊過的區域植被,地形損毀程度的模擬等。

在大世界的程式化生成方向,最近令我印象比較深刻的內容是由 Epic Games 推出的《黑客帝國覺醒:虛幻引擎 5 體驗》。

天美高階TA:淺談大世界場景自動生成技術
《黑客帝國覺醒:虛幻引擎 5 體驗》

這款技術 Demo 介紹了一套完善的、基於 Houdini 的現代城市的程式化生成方案,它不僅考慮瞭如何對真實物件效果的還原,還考慮到了如何使用更省的方式實現效果,從而減少效能及資源量方面的壓力。

比如,在建築生成上,介紹了一套如何生成現代建築的完備方案,包括如何對建築模組進行合理的拆塊兒,如何對建築進行拼接,如何使用 Instance Draw 來降低渲染壓力,以及一些製作時防止模組穿插的小技巧,如對銳角,鈍角類建築轉角模組的處理,通過一個通用的連結角來杜絕模型拼合可能引起的穿幫現象。

比如,在材質製作上,介紹瞭如何實現基於深度的 3D 假室內的效果,不但表現效果可以模擬真實的室內場景,而且從效能方面考慮,用單個材質渲染代替了真實的 3D 室內場的模型渲染,有效降低了效能開銷。

虛幻商店也給到了這個專案的資源包,可以直接檢視該工程的所有資源和程式化生成製作的相關外掛。通過對這個工程進行深度分析,可以幫助我們零距離地瞭解如何用工業化的方式去生產 3A 品質的遊戲,同時也可以自己去實踐如何去生成新的世界。

最後暢想一下這項技術的未來。現在的工業化生產,主要還停留在開發者應用的階段,未來如果把 Houdini 的這一套生成演算法搬到遊戲引擎中,結合實時光照,GI 的特性,可以使這個編輯器功能轉變為玩家 DIY 的遊戲功能,比如實現自由度更大的建造系統,自定義關卡設計等。讓玩家能夠體會到生產高質量場景的快感。

對於 TA 來說個人覺得有幾個方向可以去深入研究:

1. 如何對演算法進行加速,使平常要花費幾分鐘的生成工作,可以在幾秒鐘甚至毫秒時間內完成。比如可以考慮把演算法搬到 ComputeShader 中,利用 GPU 的並行度進行加速,也可以考慮採用多執行緒,分塊等方式將需要計算的超大任務,拆分成更小的任務塊分多次處理。

2. 如何將枯燥的編輯工具,變得好玩。一方面在編輯方式上考慮更加貼合玩家的使用習慣,一方面可以增加一些編輯時的動效,比如畫線時帶上一些拖尾效果,生成物件時增加一些有趣的出場方式等。

對TATD職位感興趣的同學,歡迎加入天美工作室群一起來打造具有世界級影響力的遊戲作品,簡歷定點投放:yatingcai@tencent.com


來源:TiMi Club 天美俱樂部

相關文章