Hello . 大家好
今天給大家帶來地平線的技術分享
我是神棍趙
近期重讀了一遍地平線開發商在2017年GDC的技術分享GPU Based Procedural Placement In Horizon Zero Dawn。已經有很多人分享過這個PPT,所以我也就不再拾人牙慧,沒有完全的翻譯,隨意寫點這次重讀的心得體會,與大家交流交流。說錯的地方歡迎指正,感激不盡。
首先地平線中是將道路,水,山石之類的mask,發送到GPU疊加,然後對混合結果進行採樣生成植被。 正巧近期PC版發布了,感興趣的可以買來實際體驗一下生成效果。
根據適宜生長植被的mask獲取點雲信息,生成植被。
這次研究PPT,貌似想明白了一些事情:
1.他們的高度圖用0.5一個像素的精度, 與其地圖太小有很大關係,地平線的地圖為5平方英裡,約13平方千米。ue4大喊一聲:就這!我上我也行!2.Ecotopes A-H, 存儲的可能就是所有的生態類型分布,採用2米一個像素的精度是因為遊戲中植被以喬木為主,冠徑很大,不需要太精確的數據, 且生態類型之間沒有重疊,所以就用了一張精度不是很高的圖。
3.展示生成數據用了這27張圖,但不是代表只用了這些輸入數據,有一小部分應該是利用已有貼圖實時生成的。例如通過高度圖就可以算出地形坡度,根據河流就可以算出地形的溼度,可以把地形坡度,溼度也看做一張圖,所以實際生成植被的過程需要考慮非常多的因素。
當採樣點後生成點雲傳為cpu時,傳遞的是一個3x4的矩陣,只傳回了旋轉,位置,縮放,而沒有指定具體的能植被類型與變體信息。這樣就可以推測出下圖中展示的生成關係圖的大致內容應該就是根據縮放值選擇合適的樹木變體,例如縮放值小的就是幼苗,縮放值大的就選擇成熟體。
有一個專門的植被編輯器來處理植被之間的關係,但限於計算時間(實時生成),邏輯應該比較簡單。
最後有專門的工具檢查生成效果,從下圖可以看出沒有明顯的聚類關係,顯然沒有做迭代解算。
編輯邏輯就是先確定生成區域的Mask, 再指定生成類型(tree/brush),最後指定具體的生態群落,主要的編輯方式就是用筆刷控制生成區域的Mask。
最終的生成效果都類似這種大的喬木,以及非常低矮的灌木,簡單粗暴效果也不錯。
若問能不能在ue4 中實現類似的植被編輯工具?答案當然是能,畢竟我們站在ue4 這個巨人的肩膀上。 相信對於epic官方來講更是小菜一碟,快三年了,EPIC 也該上菜了。
- End -
喜歡Thepoly的可以通過三種方式與我們建立聯繫。分別是公眾號、微信群以及QQ群。公眾號是我們最為官方的窗口,更多內容都必須關注公眾號後才能獲取。另外現已開通網站:www.thepoly.cn更多精彩請關注我們。