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