游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2258|回复: 0

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

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2019-9-16 11:37:23 | 显示全部楼层 |阅读模式
v2-120de5cbd534f13c17870e8dea268e3b_1200x500.jpg

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

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

先看下风力的交互品质:

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

这个flowmap的云也很酷

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

技术overall mindmap


1.jpg

风力表达


2.jpg


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

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

noise

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

3.jpg

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

logarithmic binning

4.jpg

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

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

另外就是noise loop

5.jpg

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

mesh的交互参数和种类

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

6.jpg

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

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

mesh交互算法

使用pivot based的做法:

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

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

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

植被的cluster cards

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

7.jpg

8.jpg

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

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

10.jpg

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

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

11.jpg

黑边处理

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

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

v2-6fb8197f039bbfc4cd4fe3e2be04e9e3_hd.jpg

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-12-23 02:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表