反射

UE4中包含的反射示例概述。

Choose your operating system:

Windows

macOS

Linux

ReflectionHeader.png

本示例展示了虚幻引擎4的实时反射功能。场景展示了一个废弃的地铁终点站,其中有许多漏水、污秽的瓷砖、破烂的管道和其他废墟环境细节。在此文档中,我们将概要介绍该场景中运用的技术以及实现效果所用的功能。

下图显示了此场景中开启和关闭混合时的反射,以展示其效果。

反射环境

反射环境的工作原理是采集多个点处的静态关卡,并将其重新投射到反射中的简单形状上(如球形)。美术师放置 ReflectionCapture Actor即可选择采集点。反射在编辑中实时更新,以协助放置,但在运行时为静态。 将采集的关卡投射到简单形状上可构成反射的近似视差。每个像素在多个立方体贴图之间混合,以获得最终结果。较小的ReflectionCapture Actor将覆盖较大的Actor,因此可根据需要提升区域中的反射视差准确度。举例而言,可将一个采集放置在房间中央,然后在房间角落放置较小的采集来提升反射效果。

reflection_environment.png

有关反射环境和反射捕捉的更多信息,请参见 反射环境

反射捕捉Actor

CaptureIcon.gif

反射捕捉Actor是精心放置在关卡各处的Object,它将反向数据馈送到反射环境中。

当前有两个反射采集形状:球体和盒体。形状十分重要,因为它 控制着场景的哪个部分将被采集到立方体贴图中、反射中关卡被重新投射到什么形状上, 以及关卡的哪个部分可以接收来自该立方体贴图的反射(影响区域)。

有关反射环境和反射捕捉的更多信息,请参见 反射环境

屏幕空间反射

屏幕空间反射是一种引擎功能,可帮助将Object置于地面之类的平坦表面上。它们在默认情况下是激活的,与反射环境的结果相混合,提供更全面的反射感。

ScreenSpaceReflections.gif

默认情况下屏幕空间反射在虚幻引擎4中处于活动状态,但可以根据设置使用控制台命令_r.SSR.Quality 3_或_r.SSR.Quality 0_切换。 下面是反射示例场景使用了屏幕空间反射(r.SSR设置为1)和未使用屏幕空间反射(r.SSR设置为0)的结果。

反射注意事项

在创建为了利用反射而构建的场景时,美工要牢记几个注意事项:

对比

在有强烈的整体明亮感和阴影对比的区域,反射往往更为明显。和在真实世界中一样,如果环境整体处于黑暗中,本身也很阴暗,但是遭到了强光照射,反射往往会显得很"突出"。这就是为什么这个示例选择了使用地铁场景。在地下,没有真正的自然光源。少数灯具被布置在相隔很远的地方,而且它们相当明亮。这就意味着整体的阴影和黑暗会作为衬托,使反射效果在观看者或玩家眼中很醒目。

Contrast.png

现实世界的反光表面

在创建逼真的反射效果时,除了利用对比,还应该考虑在现实世界中会形成反射的各类表面。在这个演示中,我们选择了在地面使用潮湿的水泥地,在墙上使用瓷砖。在大部分场景中都有滴水和流水,增加了大部分环境的反光度。当然,这也意味着明智地创建材质是得到良好效果的关键。

有关材质创建的更多信息,请查看我们的 材质 基于物理的材质 文档。

Subway.png

布置反射捕捉

ReflectionActors.png

获得合适反射效果的关键是在场景的各处布置反射捕捉Actor。你可能首先想到的是把这些Actor布满场景,直到看到良好结果。但是,在使用这些Actor时,需要记住一些规则:

  • 屏幕空间 ——每个反射捕捉Actor都会产生一些成本,具体取决于屏幕被其半径覆盖的范围。从这个角度来讲,它们类似于粒子或动态光源。也就是说,你应该注意避免将捕捉Actor的半径设得过大。

  • 重叠 ——反射捕捉Actor的半径是可以重叠的。重叠的Actor会导致每个像素的反射成本增大。再加上屏幕空间所增加的成本,你可能很快就会发现,简单地用高半径的反射捕捉Actor覆盖场景在性能上是不可行的。

  • 层级布置 ——为了在节省资源的同时得到良好的反射采集Actor布局,可以使用层级布局,这会让你获得重叠最少的可靠反射设置。在这样的系统中,要先布置一个大半径的捕捉Actor,获取来自背景的反射,然后布置一系列较小的捕捉Actor,获取细节相关的反射。

LevelReflection.png

大半径。反射关卡的大部分和背景。

比较局部化的反射。捕捉个别房间。

GREEN

小半径的细节反射。放置于需要重要的小细节的区域。

相关主题

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消