Movie Render Queue渲染通道

关于Movie Render Queue支持的渲染通道的参考指南

Choose your operating system:

Windows

macOS

Linux

在渲染作业的设置中对 渲染通道(render passes) 进行设置,即可将其添加到 Movie Render Queue 输出。

点击并拖动滑块可查看Movie Render Queue支持的部分渲染通道示例。

每个渲染通道都会以单独的渲染模式输出你的电影。所有选中的渲染通道都将在最终输出文件夹中依次输出。你可以在外部后期制作中或合成所选的节目时使用它们。

添加渲染通道不会将它们额外应用到最终渲染。每个通道都以选中的输出格式输出为一个单独序列。

在UI中单击 +设置(+ Setting) 下拉菜单并选择要输出的渲染模式,即可将渲染通道添加到你在 设置(Settings) 窗口中的渲染作业。所有渲染通道都列示在 渲染(Render) 组下。

点击查看大图。

单击其中任意选项,将它们添加到输出 渲染(Rendering) 下的设置(Settings)列表中。

点击查看大图。

你可以像使用任何其他设置一样启用和禁用渲染通道,并且可以选择它们来编辑其属性(若有任何可用)。

支持的渲染通道

虚幻(Unreal)的主要输出由默认的 延迟渲染(Deferred Rendering) 设置来处理,将产生你在视口中看到的最终图像。提供了一些变体,包括细节光照、仅光照、路径追踪器、反射和无光照。这些变体不会在创建最终图像时使用,在此处提供只是为了匹配关卡编辑器视口。本部分详细介绍渲染通道的完整列表。

延迟渲染

延迟渲染(Deferred Rendering)包括如下选项:

渲染通道

示例图像(点击可放大)

说明

延迟渲染(Deferred Rendering)

最终渲染(Final render)

显示场景的最终图像,与你在视口中看到的相匹配。

细节光照(Detail Lighting)

细节光照(Detail Lighting)

一种特殊的着色器变体,仅显示与法线贴图相结合的光照。在显示场景的几何体时非常有用。

仅光照(Lighting Only)

仅光照(Lighting Only)

类似于细节光照,但没有影响光照的法线贴图。

路径追踪器(Path Tracer)

路径追踪器(Path Tracer)

在累加每个帧时,显示路径追踪数据。如需了解如何保持此模式的高图像质量,请参阅"减少路径跟踪器渲染中的噪点(Reducing Noise in Path Tracer Renders)"。路径追踪器目前并不支持所有渲染功能。

仅反射(Reflections Only)

仅反射(Reflections Only)

一种特殊的着色器变体,使世界场景中的所有内容都100%反光。

无光照(Unlit)

仅无光照(Unlit Only)

一种特殊的着色器变体,仅显示反射率,但没有光照信息。

所有延迟渲染(Deferred Rendering)通道都具有相同的属性,但每个渲染通道都可以单独配置。

延迟渲染选项(Deferred Rendering Options)

ID

属性

说明

1

累加器包含Alpha(Accumulator Includes Alpha)

如果启用,多重时间/空间取样将针对alpha通道进行累加。这要求将r.PostProcessing.PropagateAlpha设置为1或2,为此,你可以转到"项目设置(Project Settings)" > "渲染(Rendering)",然后使用"在后期处理中启用Alpha通道支持(Enable Alpha Channel Support in Post Processing)"设置。必须从你的场景中移除天空和迷雾,确保它们不会使所有像素不透明。如果启用此设置,将会使累加成本增加约30%,因此除非必要,应避免使用此设置。这适用于不使用多重时间或空间取样的渲染。

2

禁用多重采样效果(Disable Multisample Effects)

禁用混合了多种像素的后期处理效果,例如景深、时间抗锯齿、动态模糊和色相差,在使用对象Id渲染通道时不需要这些效果。你可以使用此设置为渲染作业排除这些后期处理,而不必在场景中手动禁用它们。

3

其他后期处理材质(Additional Post Process Materials)

在完成渲染后应用的其他后期处理材质数组。这可能会显著增加额外的时间。默认包括 MovieRenderQueue_WorldDepth MovieRenderQueue_MotionVectors

4

添加默认层(Add Default Layer)

创建一个额外的模板层,其中包含Stencil Layers(模板层)数组中未包含的所有对象(见下文)。此默认层将单独渲染,让你可以创建不包含较小的对象组的渲染,以便稍后重新合成。

5

模板层(Stencil Layers)

模板层的列表,其中包含场景中的很多对象组。此场景将重新渲染所有对象,然后,不包含指定层中的对象的像素将被剪切并变成黑色。随后应用后期处理,并保留使用DoF、动态模糊和TAA的能力。可以通过"窗口(Window) > 层(Layers)"创建新层。模板层不支持每个层都具有后期处理材质,因为它们将与基础层的其他后期处理材质匹配,且仅与支持自定义深度/模板的材质兼容。

模板层

实时渲染中的很多效果要求将内容绘制到屏幕,这些效果稍后可以用于屏幕空间后期处理,例如 屏幕空间反射(Screen Space Reflections) 屏幕空间环境光遮蔽(Screen Space Ambient Occlusion) 。在更加传统的分层系统中,你只能渲染一个角色,同时需要从周围的环境中选取反射效果。这在实时渲染中通常是不可能的,因此转而实施了 模板层(Stencil Layers)

利用模板层,针对每个层重新渲染整个场景,但属于一个层的actor也会渲染到模板缓冲区中。然后使用 模板层(stencil layers) 剪切不属于要置于此层上的actor范围内的像素。优势在于阴影投射对象将仍然可以将阴影投射到你的actor上,并且你的actor将能够将阴影投射到其他层上。

一旦渲染到模板缓冲区,应用的后期处理效果将占用每个像素,并将半透明黑色写入到像素中。此过程在半透明之后并在后期处理之前发生,然后将对此层应用后期处理。alpha通道可以保留,以便在后期制作中了解哪些像素实际受到影响以及受影响程度。

以下是三个模板层和默认层的示例。你可以看到后期处理效果(例如景深)已经正确应用,并且前景中的对象已经从背景图像中剪切出来。这些图像可以一起添加回去,从而形成与最终渲染相似的结果,虽然这可能需要取消预乘数据。

渲染划分成不同的模板层。

以下是Nuke中的示例,该示例对原始图像中的某个指定层应用了一次色调偏移。渲染原始图像时,在颜色输出(Color Output)设置中启用了alpha通道累加,但禁用了色调曲线(Tone Curve)。

点击查看大图。

点击查看大图。

模板层不是真正的层系统,因为半透明对象将显示其后面其他层中的不透明对象,并且在前景对象挡住半透明对象时,背景层将显示黑洞。

减少路径追踪器渲染中的噪点

路径追踪器(Path Tracer) 渲染模式累加渲染的每个帧的路径数据。这会产生有噪点的图像,因为填充了图像的像素,尤其是当摄像机帧的内容发生显著变化时。

点击查看大图。

要减少此噪点,你应该增加抗锯齿(Anti-Aliasing)设置中的空间采样数。

增加的空间采样计数(Increased spatial sample count)

这将多次渲染图像,并且额外的采样将使路径追踪器更有效地填充间隙。需要大量空间样本才能有效去除路径追踪器渲染中的噪点,而这将极大增加输出图像所需的时间。

具有1、8、16、32、64、128个采样的路径追踪器渲染示例

目前无法确保完全没有噪点的渲染。

路径追踪器渲染模式在虚幻引擎4.26中是试验性质的。未来会进行进一步调整。

对象ID

延迟渲染(Deferred Render)

对象ID渲染(Object ID Render)

对象ID渲染通道在虚幻引擎4.26中是试验性质的。此外,此功能仅在虚幻编辑器中可用,不能在发布版中使用。

对象ID(Object Id) 渲染通道输出一个图像,其中,场景中的每个组件都会分配到唯一的ID。你可以在后期制作套件中使用此图像,以在场景中选择单独的对象,并为这些对象创建遮罩,以便可以有选择地将调整应用到特定对象。例如,你可以仅更改一个对象或一组对象的色调,而不会影响整个图像的色调。

对象ID通道具有几个具体的要求,需要提供有用的信息。按照这些步骤来启用该通道,并设置你的渲染队列来提供支持:

  1. 打开 插件(Plugins) > 内置(Built-In) > 渲染(Rendering) ,然后启用 Movie Render Queue其他渲染通道(Movie Render Queue Additional Render Passes) 插件。启用插件后,需要重新启动编辑器。这会将对象ID添加为Movie Render Queue设置菜单中的选项。

    其他渲染通道(Additional render passes)

  2. 对象ID(有限)(Object Ids (Limited)) 渲染通道添加到作业设置中。

    对象ID设置(The Object IDs setting)

  3. 对于计划与对象ID通道组合在一起的其他渲染通道,将 禁用多重采样效果(Disable Multisample Effects) 设置为 真(true) 。这将排除动态模糊、景深、抗锯齿和其他将混合多个像素层的后期处理,确保所有对象保持清晰的边缘。为了让对象ID通道需要与最终图像正确排队,此设置是必需的。

  4. 延迟渲染(Deferred Rendering) 设置的 延迟渲染(Deferred Rendering) 数据下,展开 其他后期处理材质(Additional Post Process Materials) ,并同时启用 MovieRenderQueue_WorldDepth MovieRenderQueue_MotionVectors 材质。

    点击查看大图。

  5. 对于要渲染的所有摄像机,确保将 屏幕百分比(Screen Percentage) 设置为 100 。为了让对象ID通道需要与最终图像正确排队,此设置是必需的。

    屏幕百分比100%(Screen Percentage 100 percent)

  6. 抗锯齿(Anti-aliasing) 设置添加到你的作业,并将 空间采样计数(Spatial Sample Count) 至少设置为 8 。这有助于克服不支持TAA的限制。使用 时间采样计数(Temporal Sample Count) 不会产生所需的结果,因为每个采样之间缺少可以覆盖缝隙的动态模糊;你最终将得到对象的多个副本,彼此隐约重叠在一起。

    将空间采样计数设置为8(Set spatial sample count to 8)

  7. .exr序列(.exr Sequence) 输出模式添加到你的设置,并停用或移除任何其他输出。确保启用了 多层(Multilayer) 属性。

    设置多层EXR(Set multilayer EXR)

在完成这些设置后启动Movie Render Queue时,它将输出一个多层EXR,其中包含最终图像、对象ID、世界深度和运动向量。

对象ID使用Cryptomatte [ https://github.com/Psyop/Cryptomatte]规范存储在EXR文件中,用于读取此数据的插件可用于第三方软件。

世界深度

世界深度(World Depth) 是以世界单位编写的深度,存储在红色通道中。这可以用于在后期制作中重新创建 景深(Depth of Field) 。可以从EXR元数据中读取摄像机焦距和快门大小,以自动匹配游戏内的景深。

下面是 Nuke Zdefocus2 节点的示例。此示例将从EXR文件中读取元数据,并生成与实时发现的模糊相似的模糊。

set cut_paste_input [stack 0]

version 12.0 v3
push $cut_paste_input
add_layer {FinalImageMovieRenderQueue_WorldDepth FinalImageMovieRenderQueue_WorldDepth.red FinalImageMovieRenderQueue_WorldDepth.green FinalImageMovieRenderQueue_WorldDepth.blue FinalImageMovieRenderQueue_WorldDepth.alpha}
ZDefocus2 {
 z_channel FinalImageMovieRenderQueue_WorldDepth.red
 math depth
 fill_foreground false
 center {{"[metadata exr/unreal/camera/FinalImage/focalDistance]"}}
 focal_point {960 540}
 size {{"((input.height*(focalLength*focalLength / (fstop * (focalDistance - focalLength)))*.5 / sensorWidth)/10)" x1 26}}
 max_size 100
 filter_type bladed
 legacy_resize_mode false
 show_legacy_resize_mode false
 blades {{"[metadata exr/unreal/camera/FinalImage/dofDiaphragmBladeCount]"}}
 name ZDefocus1
 selected true
 xpos 959
 ypos 229
 addUserKnob {20 User}
 addUserKnob {7 focalLength l "Focal Length"}
 focalLength {{"[metadata exr/unreal/camera/FinalImage/focalLength]"}}
 addUserKnob {7 focalDistance l "Focal Distance"}
 focalDistance {{"[metadata exr/unreal/camera/FinalImage/focalDistance]"}}
 addUserKnob {7 sensorWidth l "Sensor Width"}
 sensorWidth {{"[metadata exr/unreal/camera/FinalImage/sensorWidth]"}}
 addUserKnob {7 fstop l Fstop}
 fstop {{"[metadata exr/unreal/camera/FinalImage/fstop]"}}
}

运动向量(速度)

运动向量存储在X和Y为[0,1]的坐标上,其中[0.5, 0.5]表示无运动。

以下Nuke VectorBlur节点可以用于将运动向量应用至你的图像。虚幻将规格化的运动向量存储到整个屏幕上,这可能与其他渲染包不同。因此,在Nuke VectorBlur节点中,uv_offset设置为-0.5(重新调节为[-.5, .5],而非[0, 1]),然后根据图像的宽度来推动动态模糊比例。

set cut_paste_input [stack 0]
version 12.0 v3
push $cut_paste_input
add_layer {FinalImageMovieRenderQueue_MotionVectors FinalImageMovieRenderQueue_MotionVectors.red FinalImageMovieRenderQueue_MotionVectors.green FinalImageMovieRenderQueue_MotionVectors.blue FinalImageMovieRenderQueue_MotionVectors.alpha}
VectorBlur2 {
 uv FinalImageMovieRenderQueue_MotionVectors
 uv_offset -0.5
 blur_type uniform
 scale {{input.width}}
 soft_lines true
 name Unreal_VectorBlur
 selected true
 xpos 1338
 ypos -93
}

根据你选择的软件,可能需要分别重新调节运动向量的X和Y通道。请参阅下一部分,了解详细信息。

在后期制作中合并对象ID、深度和速度

可以通过合并多重空间采样、深度和速度,生成与虚幻的后期处理管线相似的结果;通过深度贴图得到景深,通过速度纹理得到动态模糊。这样可以使用对象ID遮片来选择对象和颜色以进行更正,然后再应用后期处理。初始渲染时,可以通过8个或更多空间采样重新创建抗锯齿。

要通过DoF和MotionBlur保留正确的光亮高光,应在禁用色调曲线(设置(Settings) -> 颜色选项(Color Options) -> 禁用色调曲线(Disable Tone Curve))的情况下渲染场景。这将在sRGB色彩空间中输出HDR线性数值。应用DoF和MotionBlur之后,现在可以将其(从线性sRGB中)转换为所需的色彩空间如果你没有禁用色调曲线,则在应用DoF和MotionBlur之后,高光看起来会非常暗淡,因为HDR数值在应用模糊之前会显著降低。

ColorOutput.png

以下是一个示例Nuke图表,该图表使用了上述ZDefocus和VectorBlur节点。对于要在Nuke中使用的速度纹理,需交换其红色和绿色通道(下面图表中的RG_TO_GR,使用ShuffleCopy节点)。

此外,由于虚幻将规格化的运动向量[0-1]同时存储在X和Y中,你需要将红色通道重新调节为ImageHeight/ImageWidth(此示例中为1080/1920),或0.5625。为了完成此重新调节,我们从速度通道中减去-0.5,乘以0.5625,然后再将0.5加回速度通道,最后再将其插入VectorBlur节点。如果不重新调节红色通道,将导致动态模糊出现错误的角度。

此Nuke图表利用8次空间采样、对象ID通道、运动向量和世界深度来渲染exr。景深信息是自动从exr元数据中提取的。Cryptomatte节点可用于创建风扇叶片和地毯的遮罩,然后用作单次色调偏移的遮罩。应用色调偏移之后,将会应用此前提及的ZDefocus节点,然后应用VectorBlur。

要使用此功能,必须在项目设置中启用"基础通道期间的输出速度(Output Velocities During Base Pass)"。更改此项目设置之后,必须重新启动编辑器。

此外, r.BasePassForceOutputsVelocity CVar必须设置为1。通过编辑/Engine/Config/ConsoleVariables.ini,可以在整个引擎中应用此设置,或者可以在每次开始电影渲染时将其应用为控制台变量。

BasePassOutputsVel.png

ConsoleVariables.ini

[Startup] r.BasePassForceOutputsVelocity=1

UI渲染器(非合成)

UI渲染器将渲染作为含有alpha的单独输出添加到视口的Slate或UMG控件。你可以将此功能与合成程序中的最终图像结合使用,从而添加要渲染的任何UI元素。

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