《幽灵行动·荒野》中的程序化技术:道路、河流、城镇、植被
本節是《幽靈行動·荒野》大世界制作技術的第二章。技術美術工程師Erwin Heyms展示了他的團隊在開放世界游戲中如何處理小城市,河流和道路的程序化生成的一些細節內容。
道路與河流
加入Ghost Recon Wildlands 項目時,創建道路是我的首要任務。當時,我們正在研究如何houdini應用到我們的開發流程當中。我們想要創建一個巨大,逼真且美麗的,玩家可以真正深入體驗的開放世界。使用傳統的地形雕刻技術來創建荒野世界是一項艱巨的任務,這就是我們決定創建程序化工具的原因。
我們有數千公里的公路,這是多姿多彩的玻利維亞獨特的景觀構成。要使整個景觀世界有一個連貫統一的公路,我們需要一個統一的計算系統。
?
?
我們的道路系統運行得非常快,這使我們見識到自動化工具對于驅動制作流程的強大作用。這大大提高了我們迭代道路系統的速度,而且它還為我們提供了大量的關聯數據,我們可以將其用于其他程序化工具以及游戲邏輯數據中。
路網系統本質上是一種定制的尋路算法,它會依賴地形的特征進行計算。
設計人員只需要為每段道路設置路點,并告訴工具要創建哪種類型的道路,就會自動生成道路并嵌入到當前的路網中。
該工具必須易于使用,并且對我們的美術師來說足夠靈活,因此,我們要確保設計人員可以方便調整道路的彎曲走向,比如能決定哪些區域尋路算法應該跳過,比如新建的路段要以多大的粘度融入原本的路網中。
?
?
這聽起來可能很復雜,但實際上非常容易理解,這其實跟在現實世界中構建道路的思路是一樣的。在現實世界中中,道路的規劃決于建筑成本以及如何生產最便宜的道路。
在后臺,我們的路網系統基本上就是這樣做的。我們給尋路器定義一些特性,比如遇到陡峭的斜坡,我們的道路會呈現很多急轉彎的走向;遇到平坦的地勢就會稍微平順一些。最終,會生成一個中蜿蜒盤旋的山路的感覺。
同時,尋路器會遵循現有的道路網,按照實現世界建路原則(成本低廉),新創建的道路將會融入到現有的路網中并且合理設計道路分叉。這個功能尤其有利于構建一些非常美觀逼真的路網。
至于我們如何將道路網絡應用于地形……
我們通過導出獲得一系列的高度圖應用到地形上,使得地形變形以適配路網,同時導出材質權重圖來標記路網區域的材質。
為使加快工作流程,路網的地形變形的計算會放在渲染農場上進行,每當設計師完成鋪設道路的工作時,他們都可以將數據推送到渲染農場,幾分鐘之內就可以得到結果并貼在地形上了。
?
?
鐵路和河流工具使用類似的過程,它們都使用尋路算法,但規則不同。
鐵路工具比道路需要更淺且更平坦的路徑,并在嘗試穿越山坡時沿途創建了隧道和橋梁。
Twan De Graaf生產的河流和小溪只允許出現在沿著山坡下行的地方,并且尋路是從山頂開始最近的水域。
?
最終,河流,道路和其他元素的融合有時會創造出一些令人驚嘆的效果。
城市建筑
最大的挑戰之一是使城鎮看起來逼真,尤其是對于不同的環境和規模。
道路連接必須合理,城鎮必須看起來好像是向外發展,中心的大型建筑向外輻射到較小的房屋和農田。
交給設計人員的工具的第一個版本可以建立看起來像鄉村的城鎮。
它建造了一系列主要街道,較小的街道將中心連接起來,并向外輻射到郊區和農田。
?
?
第一個版本的工具是這樣從左到右一步一步生成的?
最初,該工具主要產生于像這樣的小村莊。
這種方法效果很好,但是與生產中的許多其他事情一樣,一旦賦予藝術家更大的創作能力,他們就會想要更多。
?
?
雖然我們的設計師能夠手動繪制或清除道路,但這種形式的工具太局限了,無法產生令人信服的結果。
我們真正需要的是創建城市,這意味著我們需要解決更多更復雜的問題。
因此,對于第二個版本,我添加了對網格道路,人行道,建筑物行和其他一些功能的支持。
?
?
Barvechos –一個龐大的城市。
該工具還需要一些時間來計算建筑物的位置。“計算時間”隨著您要創建的解算區域的增加而呈指數增長。
一次計算我們一些最大的城鎮的所有建筑物可能需要20分鐘。
但是,可以通過將數據緩存到磁盤來減少解算時間,這還可以一次在較小的群集中計算建筑物的位置。
算法
建筑物放置系統可能是整個解算工具中最復雜的部分。
它使用了一種自我感知的打包算法,我們可以獲取一系列建筑物,每個建筑物都有自己的放置在城鎮中的規則。
該算法嘗試按優先級順序或預定比例從列表中放置每個建筑物。
該工具會首先對關鍵性地標建筑進行優先級排序,然后填充上的其余部分:房屋和市場攤位等其他真正使城鎮栩栩如生的二級建筑結構。
該算法的工作原理是根據道路將城鎮劃分成多個區域,然后從里到外掃描每個區域以查找合適的放置位置。
然后,它收集有關這些位置的各種信息,然后對照建筑列表,QQ號碼交易判斷哪些建組適合放置在這些區域。
這些位置上的信息包括:與市中心的距離,水邊或附近的鐵路,地形的坡度、由設計師特別指定的信息。
?
?
該工具還會查看有關已放置的其他建筑物的信息。
如果城鎮中已有教堂,則不會在該教堂附近150米之內產生另一座宗教建筑。
總共我創建了70多個不同的規則和條件,我們可以為每個建筑物設置這些規則和條件,這確實使放置算法變得非常強大和靈活。
如果我們出于任何原因不得不搬遷或更改城鎮,該工具可能會使這項本來很繁重的任務變得非常容易。
綜上所述,在發展過程中,最大的城鎮之一巴維喬斯(Barvechos)可能已被完全重建了5次以上。
?
Khochi –該鎮將許多不同的工具結合在一起。
植被
大場景的植被放置由兩個部分組成
?
- 草:根據地形材質的權重密度圖進行分布
- 樹、灌木:灌木和樹木的散布規則由Houdini工具計算并生成點云數據的方式實現
?
散布樹木和灌木叢基于一個非常簡單的概念“cascade”:下圖中,紅色的點表示大樹,綠點代表中型樹,藍色點代表小樹和灌木叢。
?
?
為了增加復雜性,我們首先調整密度,比例,坡度,資源之間的空間等。然后再添加額外的一些規則,比如朝陽面、比如規定哪些物種對應地表哪一層材質、多層地表材質之間的包容和排斥,例如雨水侵蝕,河床,懸崖等等。最后,我們結合這些規則刪除一些不正確的植被分布。在道路,鐵路,水域和行人路上,植被會被自動刪除。
我們與地形/巖石美術師緊密合作,以匹配地表分配規則(是指splat map)和植被規則。這樣,與植被分布有關的地表材質,巖石和flowmap直接影響了森林在遠處呈現的效果。
?
?
在資源方面,我們嘗試對同一物種采用不同的結構,并避免每個群落具有太多不同的物種,這是會更自然一些。您使用的物種越多,就越難做到真實和自然。
?
?
在性能方面,密度是一個問題。我們提出的解決方案是:我們沒有采用每種資源固定的LOD距離值得方法,而是決定采用更靈活的方法:根據植被密度來調整LOD值。
因此,根據其在世界上的位置,同一資源可能具有不同的LOD值。更高的密度意味著LOD更激進,會更快地切換到最后一層LOD:Imposter。
?
?
Imposter是建造如此大的森林的最后一個重要組成部分,從遠處可見。這是一個動態的billboard系統,可根據攝像機的角度允許樹木呈現的不同側視圖。它包含不同的紋理通道達到更復雜的光照效果,例如保持光照關系,假投影和半透明。
?
?
?
總結
以上是生活随笔為你收集整理的《幽灵行动·荒野》中的程序化技术:道路、河流、城镇、植被的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UE 手游在 iOS 平台运行时内存占用
- 下一篇: 在UE4中创建受《羞辱》启发的环境