这是一个关于 Blender 中 Compositing 的基础教程,使用的是 4.1 版本,面向初学者,重点讲解如何在渲染结果中应用 Ambient Occlusion。


本教程的视频版本目前尚未提供该语言版本。


视频文字稿

大家好。

这是一个关于 Blender 中 Compositing 的基础教程,使用的是 4.1 版本,面向初学者,重点讲解如何在渲染结果中应用 Ambient Occlusion。

Ambient Occlusion 是一种技术,根据具体实现方式,用来计算或模拟由于环境光无法到达而产生的物体阴暗区域。这种情况通常出现在角落、缝隙、凹槽、狭小空间、隐藏区域以及其他类似位置。

当两个物体彼此接触时,也会产生这种效果。例如在本教程所使用的场景中,物体放置在桌面上。如果没有实现 Ambient Occlusion,渲染结果看起来就不够真实,因为物体看起来不像真正接触在一起。

当启用 Ambient Occlusion 后,它可以更清晰地定义物体形状,并增加空间深度感,使图像更加可信和真实。

在本教程中,我们将学习如何获取 Ambient Occlusion 信息,如何调整环境光遮蔽区域的范围大小,以及如何增强或减弱该效果的强度。

另外还有内容。在教程的最后,我还会讲解当渲染场景中包含虚拟宇宙背景时该如何处理,所以请看到最后。

在 Blender 中,可以在 Material 层级实现 Ambient Occlusion,也就是为场景中的每一个 Material 单独设置,也可以在 Rendering 层级实现,利用 Blender 提供的场景中物体位置与形状信息。在本教程中,我们将重点讲解 Rendering 层级的 Ambient Occlusion,也就是在 Post-Production 中实现。

本教程使用 Cycles 作为渲染引擎,但该工作流程同样适用于 Eevee。

默认情况下,在 Blender 中渲染场景时,Render Layers 节点不会提供 Ambient Occlusion 信息。

因此,首先需要在 Properties editor 的 View Layer 选项卡中,在 Light Passes 部分启用 Ambient Occlusion Render Pass。

完成后开始渲染,然后切换到 Compositor editor。在这里可以启用 Backdrop 功能,并插入一个 Viewer 节点,以便在背景中查看变化。

在我的示例中,我插入了一个 Reroute 节点,并将它连接到 Composite 和 Viewer 节点。

这样,发送到 Reroute 节点的信息将同时传递到保存到磁盘的最终渲染结果,以及我们在 Compositor editor 背景中看到的图像。

如果要调整编辑器背景中的合成预览大小,按 V 或 ALT V。

如果要移动该预览,按住 ALT 并使用鼠标中键拖动。

首先,将 Render Layers 节点的 Ambient Occlusion 输出连接到 Reroute 节点,以便进行观察。

Blender 会直接基于场景中的几何体为我们提供物体遮蔽信息,因此我们可以看到不同物体之间的遮蔽效果,例如杯子与桌面之间的接触区域,也可以看到单个物体内部的遮蔽,例如花朵内部的结构。

我们还会注意到这些信息非常细碎,更准确地说是带有噪点。不过幸运的是,有一个专门用于降低噪点的节点。因此,在 Ambient Occlusion 输出和 Reroute 节点之间添加一个来自 Filter 组的 Denoise 节点。即使使用 Denoise 节点的默认设置,效果也会立即显现。

为了将这些信息添加到原始渲染图像中,我们在节点结构中插入一个来自 Color Mix 组的 Mix Color 节点,将其模式设置为 Multiply,并将 Factor 参数设置为 1。接下来,将 Render Layers 节点的 Image 输出连接到 Multiply 节点的第一个 Image 输入。

然后,将 Denoise 节点的输出连接到 Multiply 节点的第二个 Image 输入。最后,将 Multiply 的输出连接到 Reroute 节点以查看结果。

将颜色与灰度值相乘会使颜色变暗,因为本质上是将 0 到 1 之间的数值相乘。因此,最终结果会小于原始两个数值,从而得到更暗的颜色。

渲染结果看起来立刻比原始版本更加真实。我们可以通过反复切换 Multiply 节点的启用与禁用来评估 Ambient Occlusion pass 的效果。方法是选中该节点,然后多次按下 M 键,这是对选中节点执行 Mute 操作的快捷键。

不过还没有结束,因为在将 Ambient Occlusion 通道的信息应用到图像之前,我们还可以放大、缩小,或者让其更暗或更亮。

为了更清楚地观察接下来对 Denoise 节点输出所做的操作效果,我将该节点重新连接到 Reroute。

为了扩大或缩小 Ambient Occlusion 生成的区域,可以使用来自 Filter 组的 Dilate/Erode 节点。该节点执行形态学操作,对暗部区域的形状进行处理。

在 Distance 字段中设置正值会缩小暗部区域,而设置负值则可以扩大这些区域。

为了让 Ambient Occlusion 信息变暗或变亮,可以使用 Gamma 节点。该节点可以在不将灰度像素完全推向纯黑或纯白的情况下,对图像进行提亮或压暗。

如果你愿意,也可以使用 RGB Curve 节点,通过调整 C 曲线来模拟 Gamma 曲线,从而获得类似效果。

这种操作与对原始像素数值进行简单加减完全不同,更适合用于这种类型的校正。

现在我们已经了解了 Dilate/Erode 节点和 Gamma 节点的作用,将 Gamma 的输出连接到 Multiply 的第二个输入。

然后,将 Multiply 的输出连接到 Reroute 节点。

这样,我们就可以调整各个节点的参数,并直接在原始渲染图像上观察效果。

最后,请记住 Multiply 节点还提供一个参数,即 Factor,用于调节应用到原始渲染图像上的效果强度。将该值设为 0 时,只会得到原始渲染结果;将其设为 1 时,会完全应用该效果;中间数值则对应比例应用。

在结束本教程之前,还有最后一点说明。

到目前为止,我使用的场景是在室内设置的。由于虚拟宇宙背景通过窗户的 Glass 材质进行了一定程度的“过滤”,因此没有出现问题。

但是在户外场景中,虚拟宇宙的背景在 Ambient Occlusion 通道中会显示为黑色。如果将该信息与原始图像进行 Multiply 运算,背景就会变成完全黑色。

为了解决这个问题,在渲染此类场景之前,还需要启用 Environment Render Pass。该通道会单独分离虚拟宇宙的背景,并以彩色形式表示。

在这个通道中,所有其他物体都会显示为黑色。

现在添加一个 Mix Color 节点,将其模式改为 Exclusion,并将 Factor 设置为 1。然后,将 Environment Render Pass 连接到该节点的第二个 Image 输入。接着,将之前用于将 Ambient Occlusion 应用于原始渲染的 Multiply 节点输出,连接到 Exclusion 节点的第一个 Image 输入。

请记住,在这个设置中,只有当第一个 Image 输入是 Image 与 Ambient Occlusion 相乘的结果时,Exclusion 节点才能正确工作。因此,不要将 Image 直接连接到 Exclusion。

本教程到这里就结束了。希望对你有所帮助。我们下次再见。

本网站仅用于展示我的部分作品,不具有任何推广或商业目的。请注意,目前我不接受,也不会回复任何定制项目、咨询服务或其他形式的合作请求。


高级隐私策略信息和cookie文件的使用