大世界場景美術製作流程探討實現方式
說到大世界場景的遊戲很多同學可能都會想到UBi的far cry 5 ,Ghost Recon, R星的荒野大鏢客2 等等一些主機遊戲,怎麼才能在製作上面完成這樣一個體量的遊戲呢?本文主要是結合一些目前主流做法,去分析製作技術特點,瞭解大世界中的一些實現方式,讓我們有一個比較宏觀認知。
首先貼一個far cry 5 和Ghost Recon的連結
相信很多同學已經看到過這兩個地址了,後文會著重以這些主機的分享去探討怎麼把這些技術實際運用到我們現在的專案中。
地圖尺寸
對於製作大世界前期我們首先要認知的是遊戲中的地形到底要製作多大,是否能滿足我們的可玩區域,以保證我們的地形對於玩法是可控的。
上圖是我們比較熟悉的PUBG 他們的實際面積是64k㎡ ,他們是按照1KM
1KM 去製作LEVEL ,切分8*8(64)塊地形. (後面會講到地形制作方式)實際可玩海島區域大概佔了60%左右。
上面的影片裡面有詳細的各個遊戲尺寸大小,可以詳細的參考一下每個遊戲的總面積,和可玩區域大小,當作一個指引。
(相信已經有很多文章講解了大世界的各個流程,在這裡寫這些也希望能讓自己加深記憶,寫的不對的地方希望大家多多指正)
地形制作
這裡我們就直接來分析地形制作過程,上圖pubg 我們可以看到 面積是64㎡ ,對於這麼龐大的地圖我們是不可能用製作小關卡的方式,類如在DCC軟體建模製作Static 靜態模型然後匯入引擎,這裡就會有幾個缺點:
1。不利於前期的策劃的白盒驗證,比如反覆修改上面的道路 房屋 的座標位置,地形就會穿插
2。製作迭代成本比較高,需要多個成員配合協作才能完成,比如策劃和美術協同合作。
這個時候就需要有一套完整的工具集來打通各個製作環節,減少重複勞動,提高開發效率。
現有的引擎已經完善的提供了一整套地形編輯方式(ue4)
連結裡面是UE4官方文件,非常系統的講解了地形的製作方法,可以多多閱讀理解裡面的一些使用方法。
現在多數的手遊都是相關的地編利用引擎編輯地形,這樣效率比較高,易於修改迭代,關卡策劃也能在相應的地形上面編輯製作出相應的白盒BSP 匹配地形,這樣做其實沒什麼大的問題,但是美術效果方面可能會打折扣,手動刷地形是無法制作出下圖這樣真實度高自然豐富的細節
這時我們就需要藉助World Machine。 World Creator 。 houdini。 這些專業的地形軟體(網上有很多教程 這裡就不累述了)
這裡我比較推薦前期可以利用World Machine。 World Creator 來製作大型,World Machine節點化,World Creator相對於World Machine會對美術更友好些,下面有相對應的影片,感興趣的同學可以看看。
houdini 會更直觀一些,和World Machine一樣透過節點實現,但是houdini是3D檢視可以實時在檢視視窗中檢視結果。
製作完對應的大型,這時我們需要在houdini中製作細節類,同時製作模組,透過project任何組合自己想要的山脈,製作出一個大世界包含多種地形。
UE4 4。25中也有類似的地形分層製作概念,下面這個影片裡有詳細的介紹
分層製作地形,原理和ZB製作一樣,便於後期修改,編輯地形對形狀不滿意可以直接抹除。
當製作出地形後,這時我們已經完成了第一步,對於製作已經有了一定的瞭解,但是對於效果這是不夠的,類似下圖
我們需要對地形做包裝,這就有了MASK概念
現實中地形是有草地,有石頭等等材質,地形上面有樹,有各種植被。這裡實現的方式就是需要對各個層做mask處理。
如上圖所示,側面岩石一層mask,雪地 一層mask,沙地一層mask
houdini和UE4打通了流程環節,就可以直接在ue4裡得到houdini裡面實現的效果。
(把houdini整合進UE4,所有儲存的中間資料都可以直接在UE4讀取,真正的實現不需要像worldMachine匯出高度圖然後就不能修改地形的情況)
當我們在UE4想在修改的時候,我們可以用引擎筆刷修改,然後儲存匯出相對應的heightmap
houdini讀取,在操作修改任意地形,侵蝕演算法,在生成出相對應的height mask圖 。
這裡的地形制作流程:world Machine - (houdini - UE4)
levelstreaming
製作完成地形後,我們需要考慮大世界關卡載入問題,這個概念非常關鍵,可以幫助管理以後資產按照物體大小來區別存放,製作相對應HLOD,提升遠景顯示效果。
上圖是ue 4官方關卡載入文件,詳細介紹了關卡的構成,如何設定levelstreaming
按照官方給的效能注意,
假設我們的地形總尺寸是8*8KM 按照1KM 一個LEVEL來載入的話,在UE4 裡面我們需要
overall resolution 是 1009 (1009 是頂點數,地形是按照元件分段 每一個元件都是一個LOD的基本單元,我們按照63*63
,
2*2,8*8,得到1008個四邊形,那麼就有1009個頂點)
這個時候我們的8公里的解析度就需要設定成 8065
在houdini 裡 output輸出的時候 設定 tile 8*8。
UE4
到這裡我們就已經完成了大地形的輸出。
TIP
level streaming
預設引數是500M,如果我們地形是1KM 那我們需要設定1000M
(level 會按照物體大小自動生成level bounds,用來計算我們當前的載入)
關於我們的地形制作環節已經完成, 後續會接著實現植被,岩石,道路,城市等技術內容。