反射示例                                            

ReflectionHeader.png

概述

本示例展示了虚幻引擎4的实时反射能力。场景中展示了标志性的地铁车站,其中还包括了许多破败的环境细节,包括多处漏水,肮脏的墙面,损坏的水管等等。 本文中,我们将给出为带来这种特效所使用的技术和特性的高层次纲要。

以下图片分别开启和关闭了此场景中反射的混合以展示这种特效。

ReflectionsOnOff.gif

反射环境

The Reflection Environment works by capturing the static scene at many points and reprojecting it onto simple shapes like spheres in reflections. Artists choose the capture points by placing ReflectionCapture Actors. Reflections update in real time during editing to aid in placement but are static at runtime. Projecting the captured scene onto simple shapes gives approximate parallax for the reflection. Each pixel blends between multiple cubemaps to get the final result.  Smaller ReflectionCapture Actors override larger ones, so you can refine reflection parallax accuracy in areas as needed.  For example, you might place a capture at the center of a room and then refine the reflection by placing smaller captures at the corners of the room.

reflection_environment.png

如需获得关于反射环境和反射捕获的更多信息,请参阅Reflection Environment

反射捕获Actors

CaptureIcon.gif

反射捕获Actors是策略性地放置在整个关卡中并将反射数据装入反射环境中的对象。

There are currently two reflection capture shapes: sphere and box. The shape is very important because it controls what part of the scene is captured into the cubemap, what shape the scene is reprojected onto in reflections, and which part of the scene can receive reflections from that cubemap (area of influence).

如需获得关于反射环境和反射捕获的更多信息,请参阅Reflection Environment

屏幕空间反射

屏幕空间反射是辅助放置对象到平面(如地面)的引擎特性。 它们被默认开启,并会和反射环境的结果相混合,从而使得反射具有更为完整的感觉。

ScreenSpaceReflections.gif

屏幕空间反射默认在虚幻引擎4中开启,但可以使用控制台命令 r.SSR.Quality 3r.SSR.Quality 0 (根据设置不同而不同)来开关。以下是反射示例场景的结果,一个开启了屏幕空间反射(r.SSR为1),另一个关闭了屏幕空间反射(r.SSR为0)。

SSROnOff.gif

反射考虑要素

在使用反射来构建环境时,我们的美工要考虑以下几个问题:

对比

反射在总体光照和阴影对比强烈的区域或更为显著和明显。 正如真实世界那样,反射会趋向于“出现”在本身较暗或其所在处较暗的地方,但会在强光处消失。 这就是为何我们在此例中选取地铁场景。 作为地下场景,不存在真实的自然光来源。 这几个灯具的位置摆放松散并相对较亮。 这样对于观看者或玩家来说,阴影和暗处将成为出现反射的主要位置。

Contrast.png

真实世界反射表面

除了对比外,还有很重要的一点是在创建真实反射时,需要考虑在真实世界中创建反射的表面类型。 本演示中,我们对地面选择了潮湿混凝土,在墙面选择了瓷砖。 在场景中的大多数位置处,水都在不停滴下并流得到处都是,这样就使得场景中的大部分位置可以产生反射。 当然,这样也意味着为使得场景更具观赏性,我们在创建材质时认真花功夫至关重要。

如需获得有关材质创建的更多信息,请查看材质 & 贴图 以及 Physically Based Materials文件。

Subway.png

放置反射捕获

ReflectionActors.png

获取正确反射的关键是在您的场景中放置反射捕获Actors。 您首先可能会想把这些Actors放到您场景的不同位置,直到您获得较好的效果。 不过,在使用这些Actors时,要牢记一些规则:

  • Screen Space (屏幕空间)-每个反射捕获Actor都会产生系统性能消耗,根据该Actor占据您屏幕空间的半径而产生不同的性能消耗。 这样的话,它们类似于粒子或动态光照。 这意味着您不能让捕获Actor的半径过大。

  • Overlap (重叠)- 反射捕获Actor的半径会产生重叠。 由于重叠的Actors会增加反射产生的每帧的性能消耗。 如果再加上由于屏幕空间的加大而造成的系统性能损耗,可能很快您就因性能消耗过大而无法在场景中放置更多的大半径的反射捕获Actors了。

  • Hierarchical Placement (分层放置)- 为节省资源且仍有不错的反射捕获Actors布局,使用分层布局将让您在重叠最小的情况下有好用的反射设置。 在此系统中,大半径的捕获Actors被放置在从背景获取捕获的位置,随后一系列较小的捕获Actors获取细节周围的反射。

LevelReflection.png

红色

大半径。 反射关卡和背景中的大多数内容。

蓝色

更为本地化的反射。 捕获单个空间。

绿色

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


,