手機開放世界動態生態開發

開放世界遊戲面對主要問題是資源的加載和卸載問題
基本做法是基於劃分區塊,整個區塊做多級LOD
但是這套做法主要解決靜態場景問題,對於純動態場景,有額外的問題需要解決
目標則是,構建完全由程序生成地形和生態羣落的樹木,草和NPC分佈
 
1:過程地形的生成
最簡單的做法基於多重perlin噪音的混合生成
perlin噪音生成地形結構太過機械,缺少蝕刻特性,改善方法
通過perlin噪音生成基礎的多個生態分佈
每個生態再去讀取通過 worldMachine 之類的工具生成的具體的高度圖
這樣就能構成一個整體世界隨機生態分佈,每個生態地形又有足夠的細節
 
不同的生態應該採用不同的紋理,地形採用Mesh方式構建,頂點色標註不同生態,通過頂點色偏移紋理數組,從而控制不同生態採樣不同紋理
在生態邊緣,通過額外繪製若干邊緣mesh一層的方式,在兩個生態之間通過Alpha透明度過渡的方式,混合紋理,實現生態邊緣的逐漸過渡
 
過程地形紋理,可以通過坡度,噪音的方式採樣多張紋理,增加細節表現
這種地形在局部擁有細節,但是缺少全局的結構特徵,缺少類似gaea工具的Clut生成的地理顏色分佈,以及宏觀法線缺少,導致低精度Mesh缺少足夠的遠景宏觀法線細節
也可以通過頂點色控制生態宏觀法線的紋理數組採樣,生態邊緣通過額外Mesh過渡
 
地形Mesh的頂點色也可以包含部分AO信息,便於壓低地表坑洞顏色,增加地表細節
 
2:過程草的生成
地形上需要有覆蓋物來增加細節,以10*10的Cell大小,來生成高密度的草,可以限制只附近50m範圍內生成,通過GPU Instance繪製草體
而花朵等其它裝飾植被可以限制爲附近10m生成,這樣既可以高覆蓋率,同時也增加了草的細節
草體渲染,通常卡通化,不需要繪製陰影,只接受陰影,同時草的發現始終向上,通過額外紋理形成多種顏色分佈,以及草浪的顏色變化
 
3:過程樹木的分佈
樹木生成高度依賴於地形的高度,地形以64* 64爲一個Cell,近處高精度區域爲5*5,而在之外整個7*7範圍爲中景,再遠則爲遠景
中景遠景的樹木可以通過GPU Instance的方式直接繪製,近景則需要採用單個prefab實體的方式加載,因爲近處的樹木需要碰撞等邏輯交互
中景遠景可以通過Imposter billboard方式渲染,近景製作兩級LOD,第二級即是billboard
中景billboard以zone爲單位作爲批次,整個GPU Instance繪製
 
4:水體
水體和地形Mesh一一關聯,每個64*64m的Zone,有一塊水體Mesh
 
5:遠景地形和遠景水體
遠景水體通過一片巨大的水平面繪製,遠景地形通過可以通過一塊2KM*2KM大小Mesh繪製,也可以對遠景進行切塊,根據距離逐漸降低精度,通過Mesh加Skirt的方式,來消除連接處的接縫問題
 
6:天空和大氣環境
通過實時反射球,反射天空盒和地形,採樣反射球較低的mip級別,用於做假的大氣散射顏色,在霧氣計算邏輯中處理
天空盒,採用過程方式,通過配置四個時間段,清晨,正午,傍晚,深夜,不同的天空盒,混合材質,來繪製天空盒
天空盒基本氛圍,地面,地平線,天空,太陽,太陽光暈,多個部分來配置顏色,對於月亮,可以額外採樣一張紋理,來繪製
環境額外包括風,雨,雪,霧,等基本的配置,風可以通過粒子表現,地面霧氣分爲遠景的霧片,和貼地面的平面霧氣
霧氣還包括基於距離和基於高度的霧氣,以及近處的霧氣粒子
7:雲朵
雲朵可以接受光照,以及採樣法線貼圖,但是需要控制最低亮度
 
 
 
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章