《戰神4》的風力&植被互動系統

遊資網發表於2019-09-16
《戰神4》的風力&植被互動系統

《戰神4》中的風力以及植被(其實還有其他很多mesh)互動系統,對於渲染栩栩如生的世界,烘托戰鬥氣氛起到很好的作用。

戰神4在GDC19上的分享,一方面展現了3A且完備的品質,一方面也分享了非常系統化的方案,學習起來非常享受,:)

先看下風力的互動品質:

https://www.bilibili.com/video/av60091567

這個flowmap的雲也很酷

https://www.bilibili.com/video/av60092549

技術overall mindmap


《戰神4》的風力&植被互動系統

風力表達


《戰神4》的風力&植被互動系統


有一個wind volume的概念,存在3d貼圖中,力會擴散和消散,使用多張3d texture來擴散即可。

圖中頂端部分就是風力的視覺表達。

noise

好的noise對於風力表達至關重要,首先是大家比較常用的fractal noise function:

《戰神4》的風力&植被互動系統

但是不同的風力和狀態,如何去混合不同的noise,gow的方法是:

logarithmic binning

《戰神4》的風力&植被互動系統

按照log的方式分級noise,然後每一級的取樣是混合覆蓋的多張noise sample,

比如1.3到1.5變化的時候,變化的混合factor,也就是固定sample,變化factor,這樣能獲得一個穩定變化的noise。

另外就是noise loop

《戰神4》的風力&植被互動系統

在loop的時候,使用blend的方式讓過渡smooth,並且因為是smooth的過渡,所以可以讓sample更加的random,這樣也避免了loop的情況。

mesh的互動引數和種類

這一塊具體做的時候,細節上難度還好,就是能恰到好處的歸納出需要的引數會是一個迭代較長時間的過程,這裡列下:

《戰神4》的風力&植被互動系統

然後可互動的也包括fur,hair,鬍子;

布料嘗試了最後沒上(種種原因)。

mesh互動演算法

使用pivot based的做法:

在vertex color上存好要繞著那個pivot來做力的react

額外的可以定義mesh的物理屬性甚至一些collision資訊等等。

類似其實NaughtyDog的頭髮說的更加詳細一些。

植被的cluster cards

這裡其實已經超出本文講的風力互動了,不過作者也提了,確實不錯。

《戰神4》的風力&植被互動系統

《戰神4》的風力&植被互動系統

這裡我們可以看到中間的純3d模型和右邊的基於cards的做法品質上差不多,但是面數幾乎差兩個數量級。

這裡就是一套自己開發的工具,來生成這個cluster cards。

《戰神4》的風力&植被互動系統

使用若干個plane,然後樹相當於壓扁投射到這個plane,然後給這個plane打分,如果它能capture到儘可能多的樹的部分,且樹的三角形扭曲變化的最小,那麼這就是一個好的plane,會被保留。

然後把樹往這個card上渲染就可以獲得texture。

《戰神4》的風力&植被互動系統

黑邊處理

可以使用blur或者mip來擴充套件邊緣,放置sample貼圖時候因為使用linear filter而sample到黑邊。

gow的建議是使用mipmap資訊來擴充套件,速度上好很多。

《戰神4》的風力&植被互動系統

[這裡補充評論區Avatar Ye提供八卦,ubisoft farcry製作中,植被的mipmap也是美術手改,來達到牛逼效果,(個人評價,的確遊戲開發裡蠻力也是一種巧)]

reference

Interactive Wind and Vegetation in‘God of War’

Wind Simulation in‘God of War’

作者:安柏霖
專欄地址:https://zhuanlan.zhihu.com/p/74570626

相關文章