查看: 1337|回复: 0

深度解析《勿忘我》第三部分 制作潮湿环境

[复制链接]

839

主题

887

帖子

3663

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3663

最佳新人

发表于 2019-3-27 22:58:50 | 显示全部楼层 |阅读模式
游戏环境-Part C:制造潮湿环境

Sébastien Lagarde探索世界水的精确湿环境模拟。这是我们系列中探索游戏环境的第三部分。如对本站翻译的帖子请搜索GALAXIX论坛查看第一部分和第二部分。
http://www.galaxix.com/bbs/forum ... =591&extra=page%3D1
http://www.galaxix.com/bbs/forum ... =592&extra=page%3D1

在游戏规划的早期阶段,街道和环境可以是潮湿的,也可以是干燥的,下面是与Concept Art一样的干燥和潮湿的街道。请注意,正确的图像看起来是多么富有表现力,湿的表面在干燥时甚至比相同的表面更暗。

gsf.jpg     wet_conceptm-320x169.jpg

这里的目的是帮助理解绘制湿表面所涉及的物理过程。在游戏开发(双层、多孔、地下相互作用等)的背景下,湿表面真的很复杂,要正确处理,所涉及的复杂性尤其难以掌握。这是不可能解释或强调所有内容,但游戏开发者应该洞察并发现复杂的环境。由于背景是高端游戏,解决方案将不在于强制新的复杂照明模型,而是从干燥材料中调整BRDF参数,以在保持在渲染预算内的同时实现一些积极的现实主义。但是,这可以通过使用基于物理的照明模型和基于物理的值来实现。根据正确的物理参数,我们可以确定表面的性质。在此基础上,该方法还可以在处理基于程序的老化和风化以及许多其他类似的游戏环境问题时提供有用的信息。

基于物理的表面渲染

leaking_brain_interior1.jpg

物理渲染(PBR)现在在游戏中很常见。几年前,当S巴斯蒂安·拉加德在他的公司引进PBR时,这个团队实际上在研究雨天。此时,他们质疑是否应该使用新的照明模型来模拟湿表面?对于经典的游戏灯光模型,大多数人选择显示湿表面的方式是变暗漫反射项和增强镜面反射项。眼睛校准的湿漫反射/镜面系数。拉加德不只是想简单地将这种行为适应PBR,因此需要更好地理解水和材料之间的相互作用。这个故事是研究和发现混合。”这篇文章描述了水是如何影响材质的,并提供了利用物理照明模型模拟湿表面的方法,”他解释说。

第1节: 参考

潮湿环境?来自现实生活的参考

在这项研究中,决定将重点放在潮湿的城市环境,而不是自然或景观景观。

nightreflection1-320x130@2x.png

当夜晚下雨的时候,人们首先注意到的是明亮光源的长长的高光反射。

nightreflectionrough-320x179@2x.png

高光反射随下垫面的粗糙度而变化。

各向异性反射似乎遵循上述标准的“BlinnPhong”行为。

highlighroughness-320x142@2x.png

当表面粗糙时,高光会变暗。这是节能(上图)

perfectreflection-300x400.png

当表面光滑时,无论距离如何,我们都会得到完美的反射(左)。上面的右图显示了分布式表面如何使绿灯出现两次:

fuzzyreflection-320x142@2x.jpg



需要注意的是,反射“模糊性”只取决于
· 视角,
· 光角
· 折射率(即镜面反射)+
· 表面粗糙度

waterinhole-320x86@2x.jpg


水首先在较低的深度积聚,这有助于打破水坑。(这是我们在游戏中看到的一种重要的技术,可以分解下面的大型重复曲面)。

doublelayer.jpg



当有足够的水哔~时,有时可以看到一个明显的双层行为。如上图所示,我们既可以看到水层,也可以看到下面的表层。

fresneleffect.jpg

fresneleffec2t.jpg



水层的反射遵循菲涅耳定律。这意味着在掠射角(~0°)处存在完全反射,当从上方垂直于表面(~90°)观察时存在低反射。

fresneleffect_shapem.jpg


看上面这两个系列的最后一张照片(即从上面往下看),你就可以看出摄影师的身体没有很清楚地反映出来。折射率为1.33的情况下,在90°角内,水只反射2%的入射光(远小于相机掠过水面时该系列的另一端)。根据入射光的亮度和下垫面的反照率,反射可能会显得很弱,甚至可能被其他光源完全淹没。在左边的例子中,摄影师不够明亮,不能被视为反射,但是来自天空的光足够强,可以被视为水中非常淡的白色色调(阴天)。在正确的情况下,我们可以区分反射的建筑物的颜色外观,因为天光在其上反射,而摄影师的身体面对地面,没有反射足够的光。

dryreflectpuddleL.jpg



当下面的表面有暗反照率,而你有一个晴朗的天空,低干扰,水面的行为几乎像一面镜子。

为了产生游戏效果,拉加德拍摄了大量的参考资料,不是要使用,而是要研究。上面是一组剪辑,显示上面提到的点。例如,正如参考视频开头所看到的,雨水只会在有足够积水的地方引起涟漪。涟漪是一个同心圆,它与降雨强度有关。风对水坑有重要影响(1:34)。

要观察的关键是,在城市环境中,大多数潮湿的表面都是漫射的黑暗和镜面的明亮,如下图所示。

wet-dry21.jpg

城市环境显然需要用各种各样的支柱来填充,在城市环境中,许多支柱将由塑料或金属制成。有趣的是,它们的性能与路面或路面略有不同。

noporeousmaterial.jpg



但并非所有材料都会受到漫反射项的影响,塑料或金属除外。

dryingstreet.jpg



干燥时,镜面强度的消失速度比漫反射的变暗速度快。当然,表面不会以相同的速度干燥(左侧完全潮湿,中间部分干燥,右侧几乎完全干燥)。

第2节:执行


人们能够通过视觉区分湿表面和干表面。观察站展示了许多图片来说明这一点。人们保留的主要视觉线索是潮湿的表面看起来更暗,更高的镜面反射,并且在潮湿时显示出饱和度和色调的细微变化。

wetdry.png



这种行为常见于天然或人造粗糙材料/多孔材料(砖、粘土等)、粉末材料(沙、污垢、土壤等)、吸收性材料(纸、棉、织物等)或有机材料(毛皮、毛发等)。然而,情况并非总是如此,光滑的材料(玻璃、大理石、塑料、金属、漆面等)不会改变。

例如,街道上的干粗石和湿粗石有很大的区别,厨房里的高抛光湿石和高抛光干石有很小的区别。我们将重点关注湿表面,这些湿表面大部分是粗糙的和漫反射的材料,在水中淬火,并且在其表面上有一个非常薄的水层。因为这是我们目标城市外部环境中最常见的材料类型。

为什么粗糙的湿表面比干的时候更暗?因为它们反光较少。

这种光反射的减少有两种光学现象:

1 粗糙的材料有小的气隙或气孔(湿的时候会被水填充),以及
2 当孔隙被填满时,会出现“含水饱和度”,水会以薄层的形式附着在材料上。

让我们先看看薄层水的影响。粗糙的表面导致漫反射。由于全内反射,从表面反射的部分光将被水-空气界面反射回表面。当从密度较高的介质移动到密度较低的介质(如光纤)时,会发生全内反射。当然,这并不像基于部分内反射的一次反射那么简单,因为这种反射光是散射的,所以来自表面的反射光在再次反射之前会被表面吸收另一轮。这种光来回照射会使表面变暗。

至于上面的原始点——填充小的空气间隙和气孔——新的水比它所取代的空气具有更高的折射率。(1.33对1.0的空气)因此,这种新的浸水材料的折射率更接近于更粗糙(电介质)(非反射/导电)材料的折射率。光在表面下的散射在前进方向上更具方向性。在光离开表面之前增加的散射增加了光的吸收量,从而减少了光的反射。换句话说,它看起来更暗。

材质的变暗也伴随着饱和度和色调的细微变化。在光谱反射测试中,可以看出,由于这种减少,表面颜色变得更加饱和。这是不同波长的光散射不同的特性。由于湿物质反射的“红色”波长比短的“蓝色”波长长,因此,物体的颜色似乎已经发生了色调变化,变成了一种更饱和的颜色。

为什么粗糙的湿表面更具镜面反射?


粗糙表面的气隙逐渐充满水,水几乎具有镜面状的特性。简单来说,材质变得更光滑。一块抛光或涂层的石头和一块湿石头非常相似-看起来都像光滑的表面。

对于光滑的材质,水不会填充材料内部,也不会从材料内部产生变黑。但是,上面薄薄的一层水仍然会产生一些变暗的效果,如上所述。

从渲染的角度来看,一个需要注意两种光学现象:一种是由于表面上有一层水,另一种是考虑材质内部的水。Jensen等人于1999年在“湿材料渲染”中提出了一种双层表面反射和次表面散射照明模型。他们提供的表面模型是一个薄层模型,外部空气和密度更大的材质之间有一层薄薄的水。将致密材料模拟为散射体。

这个伟大的照明模型不是为游戏而提出的,而且太昂贵(费显卡)了,不能实时使用。

但是解决问题的两个部分的概念仍然是RememberMe团队处理的问题。换言之,解决了潮湿环境下的薄层和亚表面散射效应的某种变化。


实时双层材质


为了解决这个实时游戏应用程序的基本渲染问题,团队想要让《勿忘我》的关卡更加真实尔,拉加德需要有一个双层的BRDF,顶层的BRDF是水,而底层的是原始BRDF。有一个现成的实例,他决定可以根据他们的情况进行调整——一个来自Weidlich和维基百科的模型。

wwbrdfexplanation.png


1 对于给定的两个任意输入方向wi和wo,对最顶层(1)的brdf进行评估。(这里看到粉红色和蓝色)。这会产生一个反射分量,通常还有两个折射方向。

2 折射到下一级(2)的任何能量都遵循两个折射方向,并且部分被吸收。

3 假设这两个折射方向在下一层(2)上的一个点处相交,并且从步骤1开始重复该过程,直到碰到不透明层为止。

4 从底部返回时,单个BRDF分量受其上一级的菲涅耳透射系数的影响,并添加到总BRDF中。

waterair.png

换言之,它们向下折射,直到碰到不透明层,然后再向上反弹,但要受折射率的影响(这可能导致完全内部反弹向下)。

使用这样一个简单的分层表面模型,团队演示了如何在游戏引擎中高效地呈现大量有趣和重要的表面类型。从艺术家的角度来看,他们还展示了这种方法的便利性,因为它只使用一些直观的参数。

Weidlich提出BRDF和分层地几个方面结合成一个单一的微brdfs统一模型的内部反射和吸收,accounted和各个层,可以有任何任意的BRDF。这是构建一个薄膜表面的水在顶层材料(但不是说水坑湖下面)。


以下是迄今为止的过程总结:

本文首先研究了水对湿表面照明的影响。

然后,我们看到了一些实时实现分析光的两个光学现象,这是基于观察。它们有一些缺点——它们错过了基于图像的照明实现,它们在游戏中的使用成本仍然是Xbox360/PS3游戏的一个问题。在计算机图形学中,除了改变光照模型外,还有另一种方法可以用来模拟光学现象。可以简单地创建/编辑/捕获湿表面和干表面BRDF参数(漫反射、镜面反射、镜面反射功率…)。这不是一个真正的“模拟”,因为人们知道表面的最终湿状态,但现在您可以渲染湿表面并动态弄湿游戏世界。只需在干湿BRDF参数之间插入而不更改照明模型!

为什么不使用干和湿两套贴图呢?

其好处是过程简单,并且它仍然兼容任何类型的照明,如基于图像的照明。同时拥有干和湿的BRDF纹理集的缺点是时间编写和存储它们。全湿照明模型方法需要更多的说明,而这种湿/干方法只需要很少的额外说明。然而,在游戏开发中,禁止将内存/磁盘空间中的存储空间翻倍,并禁止作者增加纹理数量。

解决方案-尝试找到一种方法来调整干燥的brdf参数,以获得湿的brdf参数的近似值,从而避免存储和创作新纹理的不便。

拉加德解释说:“目前我所知道的几乎所有游戏都选择遵循BRDF参数的调整路径,例如:StalkerUncharted 2/3(在主角上)、刺客信条3、Crysis 2/3、Metal Gear Solid V等。”

这并不奇怪,因为该方法看起来很简单,并且非常适合延迟着色渲染器:“您可以在g缓冲区中调整干BRDF参数,而不会使照明系统复杂化。然而,由这些游戏生成的湿brdf参数要么是粗糙的,要么是错误的近似值(从物理意义上讲,我同意视觉上看是可以的)。大多数使用相同的眼睛校准因子来衰减漫反射和增强场景中每个湿表面的镜面反射(旧方法),而不管材料属性(粗糙度/平滑度、多孔性、金属/电介质…)。刺客信条3甚至根据降雨的类型改变了系数的强度,这是一个额外的错误步骤:他说,这是指任何形式的降雨在多孔表面上都能使水饱和。”有点不同的古墓丽影:一个幸存者出生后,使用“暗光”来减弱湿表面漫反射部分接收的光,镜面部分被修改为其他游戏。当他们使用灯光通过灯光预处理渲染器生成雨水时,我认为他们打算用这种方法弥补小G-Buffer中漫反射参数的缺失。这再次错误地将相同的改性系数应用于所有干燥表面。”


本文其余部分的目的之一是改进由干参数生成的BRDF湿参数。我们首先讨论多孔介质材料的漫反射(或次表面散射部分)和镜面参数的调整,然后讨论其他材料的漫反射(或次表面散射部分)和镜面参数的调整,最后讨论可在表面上积聚的薄层水以及厚积水(如水坑)的情况。

多孔介质材质(Porous dielectric material)


研究小组需要找到一个可以应用于干漫反射参数的因子,以获得湿漫反射参数和光泽度参数的等效值。

观察其他的实施和解决方案,例如:在Nakamae驾驶模拟器中的沥青,使用0.1到0.3之间的系数来减弱漫反射,使用5到10的系数来提高镜面反射。正如许多方法一样,这是在不考虑表面特性(如粗糙度)的情况下完成的。
反照率:这通常是一个完美的“兰伯坦(Lambertain)”表面的颜色-即一个完全漫反射的表面…所以未加工的木头非常接近,而抛光的桌面木头则不是。在本文中,我们使用了一个稍微不那么严格的定义……但是目的是相似的(在我们使用这个术语时可能有一些特殊性,但是目的是讨论“哑光不闪亮的颜色”)。


关键是要更好地解释反照率的变暗。很明显,研究小组希望找到一个方程,在干燥的城市环境中,任何反照率都有一种方法可以得到湿值。因为在游戏中有大量的材质,它们需要在不同的时间干湿。

如果有一个简单的关系,比如湿=反照率干值的90%,那就简单了。研究小组发现,这种关系或者说是前奏曲更为复杂。实际上有一个非线性关系,有点像伽马曲线——当你增加或减少一个表面的反照率时,它在干湿之间映射。

wetdryalbedo2.png

湿反照率和干反照率的最大差异出现在干反照率的中间区域。深色表面在第一次与表面接触时会吸收更多的光,内部反射的作用就不那么重要了——因此减少了湿润的影响。明亮的表面将倾向于反射比被吸收更多的光-也减少了湿润的影响。在这两种情况下,干湿反照率之间的关系仅取决于地表折射率(IOR)、水的IOR和干湿反照率。

有了这个曲线,rememberMe团队就有了一个只存储一个BRDF参数集并生成另一个参数的键。这个公式提供了一个很好的方法,可以只存储干(或湿)值,并动态计算其他值,而不是同时存储这两个数字。


问题结束了?不完全是这样。

正如上面提到的游戏Nakamae,Lagarde担心解决方案不仅仅是基于表面的反照率和IOR属性。从故事顶部的所有参考资料中,他知道多孔性和表面粗糙度是一个重要因素。

其他的研究似乎也是这样进行的。因此,研究小组研究了材质数据库,但没有找到一个有用的简单解决方案或另一个公式关系,这会影响到表面的倾注量或粗糙程度,但他们知道这两个因素都会影响湿关键渲染点时的变暗。

“我们现在知道这是低反照率,粗糙和多孔材料往往有更大的润湿效果。我们也知道,高反照率、光滑材料或无孔材料受水的影响较小。粗糙度和气孔应被视为两个不可见的微观几何特征。但是粗糙度和多孔性在某种程度上是相关的。在岩石的具体情况下,似乎有一个线性关系,但我们不能概括。对于一些粗糙的表面,它是非线性的,而且粗糙的表面根本没有多孔性,例如乙烯基、皮革等。”

在没有任何已发表的作品的情况下,“对于我们游戏开发的背景,我们将仅仅依靠直觉,这就是为什么我们将多孔性和粗糙度联系起来”,并且“勿忘我”团队为艺术家提供了额外的控制,包括多孔性掩模和额外的控制。

水坑


当研究小组只有一薄层水时,仍然有一个反射,对应于来自下垫面的扰动法向。但对于较厚的一层水,如水坑,可能有一个完美的反射来自平面正常。换句话说,表面是平的,即使水坑底部不是平的。因此,研究小组给艺术家们提供了一个渐进的法向地图和顶点法向之间的融合,可以为增加水层的高度提供视觉上正确的结果。一种方法是说水坑的反射忽略了水坑下面的表面,另一种方法是它受下面的影响。

为了总结这一部分,团队最终得到了控制:

· 用于漫反射变暗和反射波波峰(湿表面,非真实表面水)
· 对于表面上的薄层水而言,—一种控制中的少量水,称为“哔~水”,使正常光线稍微平滑,镜面反射略微增强(高光更小,反射清晰度更好,强度增加)。
· 对于水坑-有能力拥有完全平坦和反射水。
本文介绍的系统具有良好的效果,易于实现,适用于Xbox360/PS3游戏。

最后一步是定义和完善一个系统,使湿表面干燥的现实。假设是动态天气,太阳可能出来,他们将需要解决干燥和湿润过程。

drying-1.png



干燥的过程比最初出现的要复杂得多。通过观察,我们看到了一些干燥模式。干燥过程不均匀。
此外,湿表面呈现出空间变化的反射。干燥时,镜面反射消失,但漫反射仍比干燥表面暗。

dryingsurface-1.png



Lu等人对这些干燥进行了全面研究。(2005)。由于物体的几何形状和湿表面的形状,干燥速度在空间位置上有所不同。干燥也与暴露有关,比如太阳会影响干燥、空气温度,再加上暴露在火中……、空气运动(风)、重力和材料内流体的布局(表面上任何点与干燥材料之间的距离有很大影响)。有关干燥的更多理论,请参阅Lagarde Post。

该团队设计的最终系统允许动态降雨、不同条件、表面变湿和变干,允许相同型号和纹理在相同照明模式下变湿或变干,并且允许在这两者之间有很大的灵活性。
具有讽刺意味的是…

在“勿忘我”中,游戏以静态风化条件结束!-“我们只使用了这里展示的一小部分。雨是静止的-我们为所有的东西创造了湿的纹理。这是一个质量的提高,因为艺术家完全控制渲染和性能。拉加德评论道:“这是故事的寓意,让你的特点与游戏环境相适应。”



结论



MIDPARIS_72m.jpg

以上是许多有助于理解物理过程的因素,包括湿表面变暗和变亮。湿表面真的很复杂,要正确处理,复杂的内容很难掌握在游戏开发的背景下,“我自己还没有完全了解,但希望你能看到,我们不是被迫构建一个复杂的照明模型来获得良好的湿表面感觉,只需从干材料中调整BRDF参数就可以完成这项工作。.我要强调的一点是,使用基于物理的照明模型和基于物理的值有很大的好处。通过物理参数,您可以识别曲面的性质。当你处理基于老化和风化的程序效应时,有用的信息,”拉加德解释说。

要点是:

- 变暗和镜面反射是由两种光学现象引起的
- 由于水的变化导致漫反射部分的饱和度增加、色调偏移和亮度降低,以及镜面部分的平滑度增加。
- 只有多孔材料才会受到雨水的影响。
- 用双层/多孔BRDF处理潮湿表面的复杂照明模型示例
- 通过调整BRDF处理潮湿表面的几种简单方法
- 使用具有物理值的物理照明模型可以识别材质的性质。
- 多孔性是考虑动态老化和风化效应的一个参数。
- 干燥过程是一个复杂的过程,干燥是不均匀的,湿镜消失比扩散快。

综上所述,本文并没有涵盖所有内容,团队也没有涵盖材料湿度的各个方面(比如说纸张潮湿时透明度增加),但它强调了在现代复杂且高度吸引人的游戏中,只让环境看起来潮湿所需的工作量。尤其是面对现实世界中高端游戏的内存和性能要求时。

感谢S_Bastien和该团队允许fxguide展示他们在“勿忘我”上的出色工作。

GALAXIX独家翻译
如需转载请注明本站地址
www.galaxix.com
www.galaxix.com/bbs

关注galaxixv,官方微信公众号。
GALAXIX UE4 讨论学习群 140439020
UE4精英学习群  12762592
UNITY学习群   194092348
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


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