《战神4》的风力&植被交互系统

作者:安柏霖 2019-09-16

《战神4》中的风力以及植被(其实还有其他很多mesh)交互系统,对于渲染栩栩如生的世界,烘托战斗气氛起到很好的作用。

战神4在GDC19上的分享,一方面展现了3A且完备的品质,一方面也分享了非常系统化的方案,学习起来非常享受,:)

先看下风力的交互品质:

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

这个flowmap的云也很酷

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

技术overall mindmap



风力表达




有一个wind volume的概念,存在3d贴图中,力会扩散和消散,使用多张3d texture来扩散即可。

图中顶端部分就是风力的视觉表达。

noise

好的noise对于风力表达至关重要,首先是大家比较常用的fractal noise function:


但是不同的风力和状态,如何去混合不同的noise,gow的方法是:

logarithmic binning


按照log的方式分级noise,然后每一级的采样是混合覆盖的多张noise sample,

比如1.3到1.5变化的时候,变化的混合factor,也就是固定sample,变化factor,这样能获得一个稳定变化的noise。

另外就是noise loop


在loop的时候,使用blend的方式让过渡smooth,并且因为是smooth的过渡,所以可以让sample更加的random,这样也避免了loop的情况。

mesh的交互参数和种类

这一块具体做的时候,细节上难度还好,就是能恰到好处的归纳出需要的参数会是一个迭代较长时间的过程,这里列下:


然后可交互的也包括fur,hair,胡子;

布料尝试了最后没上(种种原因)。

mesh交互算法

使用pivot based的做法:

在vertex color上存好要绕着那个pivot来做力的react

额外的可以定义mesh的物理属性甚至一些collision信息等等。

类似其实NaughtyDog的头发说的更加详细一些。

植被的cluster cards

这里其实已经超出本文讲的风力交互了,不过作者也提了,确实不错。



这里我们可以看到中间的纯3d模型和右边的基于cards的做法品质上差不多,但是面数几乎差两个数量级。

这里就是一套自己开发的工具,来生成这个cluster cards。


使用若干个plane,然后树相当于压扁投射到这个plane,然后给这个plane打分,如果它能capture到尽可能多的树的部分,且树的三角形扭曲变化的最小,那么这就是一个好的plane,会被保留。

然后把树往这个card上渲染就可以获得texture。


黑边处理

可以使用blur或者mip来扩展边缘,放置sample贴图时候因为使用linear filter而sample到黑边。

gow的建议是使用mipmap信息来扩展,速度上好很多。


[这里补充评论区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

最新评论
暂无评论
参与评论

商务合作 查看更多

编辑推荐 查看更多