专栏/育碧GDC大会PPT渣翻(1)——孤岛惊魂6云层与润湿材质

育碧GDC大会PPT渣翻(1)——孤岛惊魂6云层与润湿材质

2022年07月10日 13:23--浏览 · --点赞 · --评论
粉丝:27文章:35

感谢在野大佬提供的gdc大会的全套ppt

2022年3月,游戏开发者大会(GDC)于旧金山召开。育碧公司在大会上分享了如何在《孤岛惊魂6(FarCry6,或简称FC6)》当中制作一套完善的天气系统,并适应场景。由于本PPT有大量干货,故本人分为多次进行摘编、翻译。如有不准之处,欢迎在评论区指正。

孤岛惊魂6实机画面

欢迎来到雅拉!这个加勒比的热带天堂将会给予玩家最真实的体验。

为了做到这一点,我们需要一套真实的天气系统用于模拟,并且还要做到美术团队的需求:

- 动态天气

- 自然过渡

- 高效

- 一个开放世界的游戏建立一个天气系统

为了实现上述要求,FC6的TA团队设计了一套完善的天气管理器(weather manager)。

天气系统流程图

这个流程图说明了最终的操作顺序。

FC6团队先配置了五天的天气数据,用于循环。游戏运行时,首先查阅天气预报,以获得当前时间的天气预设。

然后根据玩家所在的位置,应用区域调整机制,得到当前的天气状态。这个状态可以在游戏运行时重写,以保证根据具体需求动态调整。顺带一提,FC6团队对于区域的判定延伸到更小的区域,如室内、洞穴以及美术可能需要定义的任何其他场景。

最后,使用这个天气状态来更新湿润度、雨水和闪电的时间,并输出最终参数。这些参数都是变量,如湿度系数、雨量系数等。游戏程序在运行时,可以访问这些变量来表现最合适的视觉效果、音频效果和游戏性等等。

如何根据玩家在世界中移动的位置来改变天气?

对于每个区域,FC6的TA们暴露了最小和最大的曲线来限制某些天气属性。

一个使用案例是他们将室内区域的最大雾气曲线设置为0,以防止雾出现在室内。这样做的限制是如果当前室内区域有可以看到外界的窗户,玩家一走进来,会看到外面的雾气消失。因此不管是策划还是美术都要注意,有窗户的室内场景的摆放与设置,防止穿帮。

天气管理器将玩家周围所有可能重叠的区域纳入其中,并把相应曲线进行相应的插值,以输出调整后的天气。

雅拉的暴风雨

为了响应天气系统,物体材质也应当做出相应的表现。例如下小雨时,物体应当有一点点润湿的感觉;下大雨时,地面上应该有深浅不一的水坑等等。如果想实现这样的效果,意味着:

每个asset都需要一个潮湿的状态,这样才能在干燥状态和潮湿状态之间进行混合。

这么做必然会存在问题:

1. 有太多的asset(因为需要额外的润湿数据),极大增加工期。

2. 美术团队都有自己的管线和着色器,在实际开发时会使用各自的环境进行操作。鉴于FC6的规模,很难保证不出现冲突。

对此,FC6的TA团队的解决方案是并行工作流程:每制作一个材质时,必须有润湿和干燥两种状态。为了做到这一点,流程需要尽可能的简单和统一。为了规避风险,这套流程主要由TA驱动,做到 "开箱即用"(即:在软件上指产品在安装后,无需配置或修改,即可使用的功能或特性。也指默认即对所有用户可用,不需支付额外费用或进行另外的配置。)。

实现这套流程,意味着在布置场景时,我们能够在世界中拖放asset,而且这些asset应该在雨中变湿。当然,有些asset会得到更多的细节和抛光,但对于最简单的物体来说,只要按照这套流程走下来,就不必要再过多的检查或配置了。

静态物体与动态物体对比

在游戏中,物体类型通常分为静态物体(不会移动)与动态物体(会移动)。首先我们看看相对简单的静态物体润湿。

静态湿润主要适用于已经用Object Bank模式(注:该模式一种基于物体的高层语义图像特征表示,所提取的高层特征具有较丰富的场景语义)存储的assets,包括物件和建筑物。

湿润程度是通过使用天气管理器提供的湿润因子参数来确定的。我们还使用湿润阴影图来掩盖适当的湿润度。

静态湿润在视觉上是最简单的,它将被应用在延迟照明过程中,这意味着它将被应用在一个地方。静态湿润的优点简单,所有的东西都可以一次性调整,缺点是不够灵活。

WetnessFactor计算

静态物体的湿润需要计算的主要湿润度是湿润度阴影贴图,它遮盖了例如在阳台下或在室内的物体。这一点很重要,因为我们会重复使用我们的道具,所以无论它们被放在哪里,它们的湿润度都应该是准确的。

由于我们的静态湿润度是在延迟照明通道中应用的,所以我们将湿润度阴影存储在延迟阴影通道中。然后我们将采样的阴影与天气管理器的WetnessFactor相乘,得到最终的湿度。

场景实例
场景的润湿阴影图(气泡产生的原因是精度问题)

在参考了相关资料后,FC6团队确定需要的两个视觉变化参数为反照率和平滑度。

一些材料如纸板会变暗,但不会变得太闪亮。像瓷砖这样的材料不会变黑,但会变得更有光泽。有些材料则介于两者之间。所有这些的关键是材料的吸收性如何。而描述材料吸收性的参数,称为孔隙度。

孔隙度与反照率的变化有最直接的关系。

高孔隙度的材料,如泥土、织物和原木,会变得饱和,显得非常黑暗。

低孔隙度的材料如塑料、大理石和金属会在其表面积水,而不是被吸收,这意味着它们的颜色应该是不变的。

有了材质贴图,再叠加孔隙度贴图,即可进行下一步工作了。但是这样做有一个问题:不是所有材质都能负担的起一张额外贴图的开销。

因此,我们需要一种方法,在没有孔隙度纹理的情况下推导出孔隙度。

由于孔隙度和平滑度是概念上相关的属性,因此可推出以下公式:

Porosity = PorosityFactors.x * smoothness + PorosityFactors.y

其中两个孔隙度因子值是浮动的,我们可以为每个材料类型指定。这个公式基本上生成了一个具有平滑度图的所有细节的孔隙度图,但其值位于我们设定的范围内。

最后,将这个参数在不破坏原有结构的条件下,暴露到pbr材质配置中,让美术人员填写配置即可。

对于输入很少的近似值,我们不可能使每个材质球响应正确。更重要的是判断全局,而不是单个asset。这帮助我们避免了无休止的值调整循环。


投诉或建议