在本教程中,你将使用上一个教程中的材质和资产创建一个夜景场景,并应用一系列后期处理效果,包括曝光、泛光、镜头光晕和颜色分级。 你还将学习如何使用后期处理体积以及Lumen全局光照与反射来提升场景中的光照与反射质量。
后期处理效果能够以无损方法改变关卡的视觉效果和氛围。 你可以将这些效果想象成给摄像机添加滤镜,或在镜头前放置一块彩色滤片。
后期处理效果可以实时应用,无需修改关卡中的资产。 这些属于无损效果,因此可以在不影响材质或复杂光照设置的情况下进行视觉调整。
下方图像中的两个关卡之间的唯一区别是颜色分级——这是后期处理的一个类别。
游戏开发者使用不同类型的后期处理效果来引导玩家注意力、传达游戏机制信息,并增强视觉叙事。 例如:
多个后期处理效果可以组合使用,以建立统一的游戏视觉风格,或用于特定的游戏情境。 在下面的演示中,我们使用了多个效果,直观地展示玩家处于水下的状态。
后期处理效果也可用于控制光照功能的优化。 如果你玩过3A游戏,可能会注意到可以调整资源密集型效果的选项,例如反射质量。 在本教程的后续部分,你将使用后期处理体积来平衡虚幻引擎中的反射质量的保真度与性能。
接下来,我们来看看如何在游戏关卡中应用后期处理效果。
后期处理体积的结构
你可以通过在关卡中放置后期处理体积来应用后期处理效果。 体积定义了效果应用的区域。 这些体积在运行时对玩家是不可见的,并且可以设置为有边界(Bound)或无边界(Unbound)。
让我们来看一个示例,展示有边界体积和无边界体积之间的区别。 在下图中,我们创建了三个影响饱和度(Saturation)的后期处理体积。
请注意上方视频中的两个现象。 当玩家沿着走廊前进时:
即使玩家不在体积内部,无边界体积的饱和度也会保持不变。 这是因为无边界体积全局应用效果,作用于整个关卡。 体积的缩放和位置并不重要。
有边界体积的饱和度效果仅在玩家位于体积内部时可见。 这是因为有边界体积会在局部范围内应用效果——仅作用于其边界范围内的区域。
稍后,你将学习如何通过混合体积,以便在玩家接近其边界时触发效果。
体积可以像图形设计软件中的图层一样分层堆叠。 无边界(或称为全局体积)会叠加在关卡中较小的有边界体积之上。 同样地,你也可以为相互重叠的有边界体积设置分层优先级。
全局体积有助于整个游戏保持一致的视觉风格,作为后续叠加效果的基础,并使工作流程井井有条。
例如,逐层叠加视觉效果可以避免难以定位和调试等意外结果。 对于需要为多个关卡处理数百种特效的团队来说,保持条理清晰可以节省宝贵的开发和调试时间。
接下来,你将在关卡中设置三个后期处理体积,并为它们设置优先级。
设置全局与局部体积
让我们回到你在为场景打光教程中创建的后期处理体积,并确认它是否在全局范围内应用效果:
在大纲视图中,搜索PostProcessVolume并选中它。
将此体积重命名为
PPV_Global。在细节面板中,展开后期体积设置。
确认无限范围(无边界)已勾选,且Priority设置为
0。
接下来,你将创建两个新的体积:一个包围Room 3,另一个包围Room 3内的关卡过渡点。
你将调整每个有边界体积的优先级,使其在玩家进入时优先生效,覆盖全局体积。 设置优先级时,较高的值优先于较低的值。
要创建新体积,请执行以下操作:
在编辑器主工具栏中,点击创建 > 视觉效果 > 后期处理体积。 你也可以通过搜索来找到它。 添加两个体积。
将第一个体积命名为
PPV_Room3,第二个命名为PPV_LevelTransition。在大纲视图,选择
PPV_Room3并将其缩放设置为8.5, 10, 5。将其位置设置为
1600, -1050, 370。 它应该大致包围Room 3。在后期处理体积设置下,将优先级设置为
100。选择数值时,请确保它们之间有较大的差距。 这样,你可以在无需更新现有体积优先级的情况下插入或移除体积。 例如,在每个数值之间按10或100进行递增调整。
将混合半径设置为
0,并确认无限范围未被勾选。选择
PPV_LevelTransition并将其Scale设置为1.5, 1.5, 2.5。将其位置设置为
2170, -1450, 600。 该体积应大致包围关卡过渡点。将其优先级设置为
200,并确认无限范围未被勾选。
本教程中的体积现在就设置好了。
尝试使用后期处理预设
在本节中,你将尝试以下后期处理类别中的效果:
镜头
曝光
泛光
镜头光晕
颜色分级
偏移
对比度
全局光照与反射
Lumen场景光照质量
Lumen场景细节
反射质量
屏幕追踪
要追踪的最大粗糙度
曝光
曝光用于控制关卡亮度的上限和下限。 请记住,后期处理体积不会改变关卡中其他Actor的属性。 在下面的演示中,光源的亮度并没有发生变化。 真正发生变化的是允许进入摄像机镜头的最大可见光量。
在现实世界中,这种效果类似于摄像机的光圈控制其捕捉的光量。 或者,就像你的瞳孔如何放大和收缩以适应不同的光照条件。 正因如此,虚幻引擎中的曝光也被称为眼部适应(Eye Adaptation)。
你可以通过曝光设置,模拟现实世界的光学效果,为游戏增添真实感。 例如,当玩家从暗处移动到亮处时,延长全局曝光调整所需的时间,可以模拟人眼适应更强光线所需的时间。
在本节中,你将调整PPV_Global和PPV_Room3的曝光设置,以在玩家走入Room 3时创建夜晚过渡效果。
要设置曝光,请执行以下操作:
在大纲视图面板中,选择
PPV_Global。在细节面板中,展开曝光,勾选MIN EV100,并将其设置为
-10。勾选MAX EV100,并将其设置为
20。在大纲视图中选择
PPV_Room3。在细节面板中,展开曝光,勾选MIN EV100,并将其设置为
-1.0。
在视口中右键单击并选择从此处运行(Play From Here)来测试你的关卡。 当你移动到Room 3时,曝光应发生变化,但目前的变化过于突兀。
为了延长过渡持续时间,你将通过使用混合半径将全局体积与有边界体积进行混合:
在大纲视图中选择
PPV_Room3。在后期处理体积设置中,将混合半径设置为
1500。
测试你的关卡。 现在,当你向Room 3移动时,曝光应逐渐发生变化。
即使使用相同的曝光数值,你的关卡效果也可能与我们的不同。 在上一个教程中,我们通过调整定向光源的设置,使场景看起来更像黄昏。
接下来,你将使用泛光调整霓虹灯牌的发光效果。
泛光
泛光(Bloom) 是一种光照瑕疵效果,表现为光线似乎溢出光源或反射的边界。
在电影中,这种不完美源于摄影机传感器和镜头捕捉光线的方法,但在游戏中,我们也可以为了艺术目的而模仿这种效果。 例如,泛光和曝光可以用于在视觉上表达玩家进入梦境、闪回,或在爆炸后处于眩晕状态。
在虚幻引擎中,你在上一个教程中也已经见过泛光效果:当你将自发光材质的亮度参数提高到1以上时,就会出现该效果。
与其逐一调整每个资产的属性来实现整体效果,不如使用后期处理体积来控制Room 3的整体泛光效果。
在大纲视图中选择
PPV_Room3。在细节面板中,展开镜头类别。
展开Bloom类别,然后勾选强度(Intensity)。 将其设置为
0.8,或使用你自己的值。勾选阈值,并将其设置为
1,或使用你自己的值。
阈值设置了会让泛光开始对关卡产生影响的最小值。 你可以将其理解为一种钳制效果,就像上一个教程所示。 强度用于控制泛光生效后的强弱程度。
将阈值设置为-1可使关卡中的所有颜色都对泛光产生影响。
接下来,你将为霓虹灯牌添加镜头光晕。
镜头光晕
镜头光晕是一种光照伪影,当强光在镜头缺陷或摄像机内部元件上反射时就会产生。
该效果可用于在游戏中为艺术目的进行的模拟。 例如,镜头光晕可以引导玩家注意某个反光资产、增强真实感,或在玩家直视太阳时强调日光的强度。
要在关卡中创建镜头光晕,请执行以下操作:
在大纲视图中选择
PPV_Room3。在细节面板中,展开镜头 > 镜头光晕。
勾选强度,并将其设置为
0.5。勾选BokehSize,并将其设置为
5。较低的数值会产生更清晰、色散更少的散景效果;较高的数值则会产生更多的色散。
勾选BokehShape,并搜索
DefaultBokeh。在电影中,散景光斑的几何形状来自摄影机光圈的形状。 由于这种效果在电影中非常普遍,因此游戏也对其进行了模拟,尽管游戏中并不存在物理光圈。
在关卡中的光源或自发光材质前来回移动,以此测试你的工作成果。
接下来,你将使用颜色分级向玩家传达游戏机制。
颜色分级
就像在图像编辑软件中一样,你可以使用颜色分级来调整关卡的饱和度、对比度、伽马值、增益、偏移、色调等。
你可以借助这些工具,改变关卡所呈现的时间感、氛围或类型风格。 例如,棕褐色调是一种暗示古旧感的颜色分级风格。
在你的关卡中,你将使用颜色分级来向玩家传达他们何时进入了关卡过渡点。 关卡过渡点是你在设计解谜冒险游戏中创建的一种游戏机制,用于将玩家传送到新关卡。
目前,当你站在关卡过渡点上时,你脚下的矩形光源强度不足,无法与房间中的定向光源和点光源相抗衡。 从玩家的角度来看,这可以得更清晰地传达从游戏玩法到关卡过渡的变化。
如果呈现手法清晰且一致,玩家就能逐渐学会识别并期待那些用于提示游戏机制的视觉线索。
要通过后期处理解决此问题,请执行以下操作:
在大纲视图中选择
PPV_LevelTransition。在细节面板中,展开色彩分级 > 全局,并勾选偏移。
偏移(Offset)会影响关卡中最暗的区域,因此非常适合用于调整这个昏暗房间的整体色调。
你可以选择自己的值,或者设置R =
-1.0,G =-0.02,B =0.15,和Y =0.07。房间现在应该呈现蓝色:
为了解决由点光源产生的白色高光热点,展开色彩分级 > 高光,并勾选对比度。
对比度用于调整关卡中最暗区域与最亮区域之间的差异。 在这里,降低对比度会压低白色亮度,使其落入偏移校正的阈值范围内。
将数值设置为:R =
0.5,G =0.8,B =0.7,Y =1。热点应该不那么明显了:
要测试效果,在视口中右键单击并选择从此处运行。 当你跑上JumpPad并落在关卡过渡点时,屏幕应变为蓝色。
接下来,你将使用后期处理体积来控制反射质量的优化。
全局光照与反射
后期处理体积可以控制视觉效果的质量和影响范围。 当使用诸如动态光照等高消耗的渲染特性时,这可以帮助你平衡保真度和性能。
请记住,资源分配通常会影响开发过程中的决策。 在广阔的室外关卡中,你可以使用后期处理体积来远离玩家所在的区域,以便节省画质开销——因为玩家不会注意到那些区域。 这样可以将资源保留给更重要的区域,例如游戏过程中玩家周围的区域,或电影镜头中的摄像机周围。
体积的全局光照和反射设置包含不同的光照计算方法,适用于不同的开发需求:
| 方法 | 说明 |
|---|---|
无(None) | 禁用所有全局光照或反射计算。 光源不会产生反弹光或反射,阴影将显示为纯黑色。 |
Lumen | Lumen全局光照(GI)是虚幻引擎的全动态全局光照系统,适用于所有光照类型。 |
屏幕空间 | 屏幕空间全局光照(Screen Space Global Illumination,SSGI)是一种快速的动态光照系统,它只计算屏幕视野范围内的光照。 |
在下面的演示中,当选择Lumen方法时,请注意霓虹箭头的橙色光辉会动态地影响场景。 这是因为自发光材质(并非真正的光源)在使用Lumen时会被计算,而在使用其他方法时则不会。
除了控制画质之外,后期处理体积还可以控制光照和反射在场景中的影响范围。 Lvl_Adventure相对较小,因此渲染距离不是问题。 然而,对于更大的区域(例如在开放世界游戏中,远距离可能会消耗大量资源),诸如Lumen场景视距和最大追踪渲染距离之类的设置可用于平衡场景范围与性能。
使用Lumen GI调整反射质量
在本节中,你将通过一系列练习解决问题,从而调整关卡的全局光照和反射设置。 在操作过程中,你将逐步了解每个设置,并改进你在上一个教程中创建的湿地板反射效果。
你将调整的设置包括:
| 设置 | 说明 |
|---|---|
| 全局光照 | |
Lumen场景光照质量 | 计算场景光照保真度。 数值越高,画面质量越高,但会增加性能开销。 |
Lumen场景细节 | 控制场景中可以呈现的实例大小。 数值越高,细节越丰富,但性能成本也越高。 |
| 反射 | |
质量 | 提高Lumen反射在表面上的保真度。较高的数值意味着更高的保真度,并可减少伪影,但会增加性能开销。 |
屏幕追踪 | 切换Lumen全局光照的屏幕空间追踪功能。 启用屏幕追踪可以提高反射保真度,但它只会影响屏幕上可见的部分。 |
要追踪的最大粗糙度 | 设置Lumen仍会追踪反射的最大粗糙度值。 |
要继续操作,请将这些值应用于PPV_Room3:
全局光照
方法:None
Lumen场景光照质量:
0.25Lumen场景细节:
0.25
反射
方法:None
质量:
0.25屏幕追踪:未勾选
要追踪的最大粗糙度:
0.0
要开始练习,请执行以下操作:
在视口或大纲视图中,找到你在上一个教程中创建的一个自发光资产。 根据你的喜好将其摆放在地板上。
在大纲视图中选择
PPV_Room3。前往细节面板。 要使用Lumen GI,请展开全局光照,勾选方法,然后选择Lumen。
你的场景现在应如下所示:
要使用Lumen反射,展开反射,勾选方法,然后选择Lumen。
你的场景现在应如下所示:
在粗糙度较低的材质上,反射更为明显。 由于
BP_Floor在变湿时的粗糙度为0(无粗糙度),请将Max Roughness to Trace设置为1.0。你的场景现在应如下所示:
湿地板丢失了部分自发光强度。 要解决这个问题,请勾选屏幕追踪。
你的场景现在应如下所示:
虽然反射光量有所提升,但反射本身仍不够清晰。 为了提高清晰度,将质量提高到
1.0。你的场景现在应如下所示:
反射清晰度有所提升,但在箭头后方仍然可以看到细微的伪影。
要解决伪影问题,可以增加Lumen GI生成的采样数量。 在Lumen全局光照下,勾选Lumen场景光照质量,并将其值设置为
1.0。勾选Lumen场景细节,并将其值设置为
1.0。你的最终场景现在应如下所示:
通过这些设置,你已经使用Lumen全局光照和反射来控制Lvl_Adventure的视觉保真度与性能。 在你自己的关卡中探索这些设置,并思考应向哪些地方分配更多资源以提升画质,或在哪些地方节省资源以优化性能。
下一步
在下一个教程中,你将学习如何创建后期处理材质,并应用一个屏幕特效来指示伤害。