《幽靈行動·荒野》中的程式化技術:道路、河流、城鎮、植被
作者:Kerry 本文首發於知乎專欄“TA週刊”
地址:https://zhuanlan.zhihu.com/c_125154506
上一篇:《幽靈行動·荒野》程式化技術介紹,我們籠統介紹了其程式化技術的應用以及實際專案遇到的問題。
本節是《幽靈行動·荒野》大世界製作技術的第二章。技術美術工程師Erwin Heyms展示了他的團隊在開放世界遊戲中如何處理小城市,河流和道路的程式化生成的一些細節內容。
道路與河流
加入Ghost Recon Wildlands 專案時,建立道路是我的首要任務。當時,我們正在研究如何houdini應用到我們的開發流程當中。我們想要建立一個巨大,逼真且美麗的,玩家可以真正深入體驗的開放世界。使用傳統的地形雕刻技術來建立荒野世界是一項艱鉅的任務,這就是我們決定建立程式化工具的原因。
我們有數千公里的公路,這是多姿多彩的玻利維亞獨特的景觀構成。要使整個景觀世界有一個連貫統一的公路,我們需要一個統一的計算系統。
我們的道路系統執行得非常快,這使我們見識到自動化工具對於驅動製作流程的強大作用。這大大提高了我們迭代道路系統的速度,而且它還為我們提供了大量的關聯資料,我們可以將其用於其他程式化工具以及遊戲邏輯資料中。
路網系統本質上是一種定製的尋路演算法,它會依賴地形的特徵進行計算。
設計人員只需要為每段道路設定路點,並告訴工具要建立哪種型別的道路,就會自動生成道路並嵌入到當前的路網中。
該工具必須易於使用,並且對我們的美術師來說足夠靈活,因此,我們要確保設計人員可以方便調整道路的彎曲走向,比如能決定哪些區域尋路演算法應該跳過,比如新建的路段要以多大的粘度融入原本的路網中。
這聽起來可能很複雜,但實際上非常容易理解,這其實跟在現實世界中構建道路的思路是一樣的。在現實世界中中,道路的規劃決於建築成本以及如何生產最便宜的道路。
在後臺,我們的路網系統基本上就是這樣做的。我們給尋路器定義一些特性,比如遇到陡峭的斜坡,我們的道路會呈現很多急轉彎的走向;遇到平坦的地勢就會稍微平順一些。最終,會生成一箇中蜿蜒盤旋的山路的感覺。
同時,尋路器會遵循現有的道路網,按照實現世界建路原則(成本低廉),新建立的道路將會融入到現有的路網中並且合理設計道路分叉。這個功能尤其有利於構建一些非常美觀逼真的路網。
至於我們如何將道路網路應用於地形……
我們通過匯出獲得一系列的高度圖應用到地形上,使得地形變形以適配路網,同時匯出材質權重圖來標記路網區域的材質。
為使加快工作流程,路網的地形變形的計算會放在渲染農場上進行,每當設計師完成鋪設道路的工作時,他們都可以將資料推送到渲染農場,幾分鐘之內就可以得到結果並貼在地形上了。
鐵路和河流工具使用類似的過程,它們都使用尋路演算法,但規則不同。
鐵路工具比道路需要更淺且更平坦的路徑,並在嘗試穿越山坡時沿途建立了隧道和橋樑。
Twan De Graaf生產的河流和小溪只允許出現在沿著山坡下行的地方,並且尋路是從山頂開始最近的水域。
最終,河流,道路和其他元素的融合有時會創造出一些令人驚歎的效果。
城市建築
最大的挑戰之一是使城鎮看起來逼真,尤其是對於不同的環境和規模。
道路連線必須合理,城鎮必須看起來好像是向外發展,中心的大型建築向外輻射到較小的房屋和農田。
交給設計人員的工具的第一個版本可以建立看起來像鄉村的城鎮。
它建造了一系列主要街道,較小的街道將中心連線起來,並向外輻射到郊區和農田。
第一個版本的工具是這樣從左到右一步一步生成的
最初,該工具主要產生於像這樣的小村莊。
這種方法效果很好,但是與生產中的許多其他事情一樣,一旦賦予藝術家更大的創作能力,他們就會想要更多。
雖然我們的設計師能夠手動繪製或清除道路,但這種形式的工具太侷限了,無法產生令人信服的結果。
我們真正需要的是建立城市,這意味著我們需要解決更多更復雜的問題。
因此,對於第二個版本,我新增了對網格道路,人行道,建築物行和其他一些功能的支援。
Barvechos –一個龐大的城市。
該工具還需要一些時間來計算建築物的位置。“計算時間”隨著您要建立的解算區域的增加而呈指數增長。
一次計算我們一些最大的城鎮的所有建築物可能需要20分鐘。
但是,可以通過將資料快取到磁碟來減少解算時間,這還可以一次在較小的群集中計算建築物的位置。
演算法
建築物放置系統可能是整個解算工具中最複雜的部分。
它使用了一種自我感知的打包演算法,我們可以獲取一系列建築物,每個建築物都有自己的放置在城鎮中的規則。
該演算法嘗試按優先順序順序或預定比例從列表中放置每個建築物。
該工具會首先對關鍵性地標建築進行優先順序排序,然後填充上的其餘部分:房屋和市場攤位等其他真正使城鎮栩栩如生的二級建築結構。
該演算法的工作原理是根據道路將城鎮劃分成多個區域,然後從裡到外掃描每個區域以查詢合適的放置位置。
然後,它收集有關這些位置的各種資訊,然後對照建築列表,判斷哪些建組適合放置在這些區域。
這些位置上的資訊包括:與市中心的距離,水邊或附近的鐵路,地形的坡度、由設計師特別指定的資訊。
該工具還會檢視有關已放置的其他建築物的資訊。
如果城鎮中已有教堂,則不會在該教堂附近150米之內產生另一座宗教建築。
總共我建立了70多個不同的規則和條件,我們可以為每個建築物設定這些規則和條件,這確實使放置演算法變得非常強大和靈活。
如果我們出於任何原因不得不搬遷或更改城鎮,該工具可能會使這項本來很繁重的任務變得非常容易。
綜上所述,在發展過程中,最大的城鎮之一巴維喬斯(Barvechos)可能已被完全重建了5次以上。
Khochi –該鎮將許多不同的工具結合在一起。
植被
大場景的植被放置由兩個部分組成
- 草:根據地形材質的權重密度圖進行分佈
- 樹、灌木:灌木和樹木的散佈規則由Houdini工具計算並生成點雲資料的方式實現
散佈樹木和灌木叢基於一個非常簡單的概念“cascade”:下圖中,紅色的點表示大樹,綠點代表中型樹,藍色點代表小樹和灌木叢。
為了增加複雜性,我們首先調整密度,比例,坡度,資源之間的空間等。然後再新增額外的一些規則,比如朝陽面、比如規定哪些物種對應地表哪一層材質、多層地表材質之間的包容和排斥,例如雨水侵蝕,河床,懸崖等等。最後,我們結合這些規則刪除一些不正確的植被分佈。在道路,鐵路,水域和行人路上,植被會被自動刪除。
我們與地形/岩石美術師緊密合作,以匹配地表分配規則(是指splat map)和植被規則。這樣,與植被分佈有關的地表材質,岩石和flowmap直接影響了森林在遠處呈現的效果。
在資源方面,我們嘗試對同一物種採用不同的結構,並避免每個群落具有太多不同的物種,這是會更自然一些。您使用的物種越多,就越難做到真實和自然。
在效能方面,密度是一個問題。我們提出的解決方案是:我們沒有采用每種資源固定的LOD距離值得方法,而是決定採用更靈活的方法:根據植被密度來調整LOD值。
因此,根據其在世界上的位置,同一資源可能具有不同的LOD值。更高的密度意味著LOD更激進,會更快地切換到最後一層LOD:Imposter。
Imposter是建造如此大的森林的最後一個重要組成部分,從遠處可見。這是一個動態的billboard系統,可根據攝像機的角度允許樹木呈現的不同側檢視。它包含不同的紋理通道達到更復雜的光照效果,例如保持光照關係,假投影和半透明。
原文連結:
https://80.lv/articles/procedural-world-building-in-ghost-recon-wildlands/
https://80.lv/articles/vegetation-generation-in-ghost-recon-wildlands/
擴充套件閱讀:
[技術分析]探討大世界遊戲的製作流程及技術——前期流程篇
探討大世界遊戲的製作流程及技術——大場景製作技術概況篇
相關文章
- 大世界遊戲製作:《幽靈行動·荒野》程式化技術介紹遊戲
- 育碧Ubisoft新作《幽靈行動:斷點》首度亮相斷點
- 《幽靈行動:斷點》更像是時運不濟的“背鍋俠”斷點
- “摩登時代”:試論《幽靈行動:斷點》為何惡評如潮斷點
- “幽靈小分隊”反常理出牌背後,是安全防禦的缺失還是駭客技術的炫技?
- 《幽靈行動:斷點》:育碧開放世界流水線又一力作斷點
- 育碧承認《幽靈行動:斷點》失敗:缺乏獨有亮點斷點
- 育碧新作《幽靈行動:斷點》洩露 10月4日發售斷點
- 幽靈選單介紹;
- 如何解決分散式系統中的“幽靈復現”?分散式
- 《幽靈行動:斷點》:追求開放世界 卻被亂花迷了眼斷點
- eMarketer:程式化技術的使用正在擴大
- IE CSS Bug系列:noscript 幽靈CSS
- 《荒野大鏢客2》的大氣雲霧技術
- 11個最新最流行的幽靈按鈕
- 人臉識別技術在道路交通管理中的應用探究
- [App探索]JSBox中幽靈觸發器的實現原理探索APPJS觸發器
- 到《幽靈行動:斷點》,歐美大廠們終於把“開放世界”玩死了斷點
- win10荒野行動卡頓怎麼回事 win10系統玩荒野行動卡頓如何修復Win10
- 淺談城鎮特色夜遊的設計與規劃
- win10荒野行動閃退怎麼回事 win10系統玩荒野行動閃退的處理方法Win10
- 《荒野迷城》聯動電影《749局》,攜手開啟生存冒險之旅
- CSS必學:元素之間的空白與行內塊的幽靈空白問題CSS
- 黑暗幽靈(DCM)木馬詳細分析
- 賓士更新道路救援APP,融入了AR技術APP
- 春節黑馬!《荒野迷城》榮登iOS三榜第一!iOS
- CSS精靈圖技術CSS
- 企業數字化能否突破技術的圍城
- 使用WebMagic+ActiveMQ+Quartz實現全國城鎮天氣自動更新的API介面開發WebMQquartzAPI
- 【併發技術02】傳統執行緒技術中的定時器技術執行緒定時器
- 涅槃團隊:Xcode幽靈病毒存在惡意下發木馬行為XCode
- Linux glibc 幽靈漏洞修復方案Linux
- [MtOI2019] 幽靈樂團
- Win10荒野行動使用獨立顯示卡怎樣設定_Win10荒野行動使用獨立顯示卡的設定步驟Win10
- 《戰神4》的風力&植被互動系統
- Win10系統怎樣解除安裝幽靈熔斷補丁_win10解除安裝幽靈補丁的方法Win10
- 《幽靈行者》:近期最酷炫的賽博朋克遊戲之一遊戲
- 幽靈詭計:遊戲敘事的意義、方法與技巧遊戲