在本教程中,我们将学习如何将渲染的 Render Passes 保存到 EXR 文件中,然后重新打开这些文件并在 Compositing 中进行修改。


本教程的视频版本目前尚未提供该语言版本,但可在页面顶部选择英文查看。


视频文字稿

大家好!在本教程中,我们将学习如何将渲染的 Render Passes 保存到 EXR 文件中,然后重新打开这些文件并在 Compositing 中进行修改。

具体来说,在这个示例中,我们将演示如何利用 IndexOB 信息通道,从一张渲染图像中提取某个对象的遮罩,并在 Compositing 中修改它的一些属性。

本教程使用 Blender 3.6 制作,不过所介绍的功能至少从 2.49 版本开始就已经存在。

好的,让我们开始吧!先来看如何将场景的 Render Passes 保存到 EXR 文件中。

我打开了一个 Blender 项目,其中包含多个对象,已经准备好进行渲染。

在 Properties Editor 的 Output 选项卡中,我将渲染输出文件类型设置为 OpenEXR Multilayer。请确保选择该格式的 Multilayer 变体。

在开始渲染之前,我需要在 Properties Editor 中 View Layer 选项卡的 Passes 部分选择要保存到文件中的 Render Passes。

在这个例子中,我只选择 Object Index,因为我希望通过稍后分配的数值标识符来分离特定对象。

在 Render Layers 节点中会出现 IndexOB 字段,这就是这里对 Object Index Pass 的称呼。请注意,不需要将此信息连接到 Composite 节点。

现在,我为场景中的一些对象设置不同的数值索引,比如桌子、椅子或窗户玻璃。数值索引需要在 Properties Editor 的 Object 选项卡中,Relations 部分的 Pass Index 项里为每个选中的对象设置。

现在可以开始渲染场景了。渲染完成后,将其保存为一个扩展名为 EXR 的文件。

第一部分完成:我们已经将所需的信息通道保存到 EXR 文件中了!

接下来,你可以使用免费资源包中提供的 EXR 文件来复现我的步骤。

现在我们打开一个新的 Blender 项目,看看如何修改文件中保存的渲染结果中的某个元素外观。

首先,打开一个 Compositing Nodes 窗口并启用 Nodes。

删除 Render Layer 节点,并添加一个 Input Image 节点来替代它。

同时添加一个 Viewer 节点和一个 Reroute 节点,并进行连接,使 Image 节点的 Image 输出连接到 Reroute,然后从 Reroute 同时连接到 Composite 和 Viewer 节点。

这样我们就可以在该窗口中看到工作预览。

在 Image 节点中,加载我们在本教程第一部分保存到磁盘的 EXR 图像。也可以直接将 EXR 文件从磁盘拖放到 Compositing 窗口中。

将 Image 节点的 Combined 输出连接到 Reroute 节点。

如果启用了 Backdrop 选项,你会看到图像作为窗口背景显示。按 V 键可以缩小预览,按 ALT + V 可以放大。

如果将 EXR 文件拖放到 Compositor Editor 中,你会在节点中看到 IndexOB 以及其他通道。

如果是通过 Image 节点打开 EXR 文件,则不会自动出现这些通道。

在这种情况下,如果打开 Image 节点的 Transform 面板,并点击 Node - Properties - Composite,你会发现可以将该菜单项改为 View Layer。

这样会出现第二个菜单,你可以选择 IndexOB,这说明信息已经加载,但还无法在 Compositing 窗口中直接访问。

打开一个 Image editor。

在 Image editor 中加载刚刚导入项目的 EXR 图像。

此时,在 Compositing 窗口的 Image 节点中就会出现 EXR 文件保存的各个字段。不太清楚原因,但似乎必须在 Image editor 中打开图像,才能在 Compositing 中访问其组件。

很好,现在我们已经获取了 OpenEXR Multilayer 文件中的信息,其中包括 IndexOB 字段。在教程的第一部分中,我为一些对象的 Pass Index 设置了数值。为了提取它们,我们在 Image 节点的 IndexOB 输出和 Reroute 节点之间插入一个 Converter - ID Mask 节点。

然后调整 Index 字段的值,直到识别出桌子,此时在 Backdrop 预览中桌子会显示为白色,其余部分为黑色。

接下来,我们可以提取某些对象的遮罩,并直接在渲染图像上进行修改。例如,我们可以对桌子使用一个 Color Balance 节点。

为了只获取桌子的原始颜色,我们将 ID Mask 的输出与 Image 节点的 Combined 输出相乘。

可以通过一个设置为 Multiply 模式的 Color Mix 节点来实现,确保将 Combined 连接到 Mix 的第一个 Image 输入,将 ID Mask 输出连接到第二个 Image 输入。

然后将 Multiply 的输出连接到 Color Balance 节点,或者根据需要连接到其他颜色校正或效果节点。

为了在完整图像中查看编辑结果,我们还需要添加一个 Color - Alpha Over 节点。

接着,将 Combined 连接到该 Alpha Over 节点的第一个 Image 输入,将 Color Balance 的输出连接到第二个 Image 输入。

然后将 Alpha Over 节点的 Image 输出连接到 Reroute 节点。

此时 Alpha Over 节点没有按预期工作,因为它的 Factor 设置为 1,这意味着只使用第二个 Image 输入,也就是 Color Balance 的输出。

为了只在桌子区域应用第二张图像,我们需要一个除了桌子区域外全部为黑色的遮罩。

这个遮罩将用作 Alpha Over 节点的 Factor。

而这个遮罩正是 ID Mask 节点提供的结果。

建立这个连接并观察结果,然后可以根据需要继续调整 Color Balance 或其他后期处理节点。

可以通过选中 Color Balance 节点并反复按 M 键来评估效果差异,这是“Mute”的快捷键,用于切换节点启用或禁用。

使用其他 ID Mask 节点,并为 Index 字段设置不同的值,可以分离图像中的其他元素,并用不同的节点组合进行修改。

在这个示例中,我在渲染前只启用了 Object Index 并将其保存到 OpenEXR Multilayer 文件中,但实际上你可以保存其他 Passes 来实现不同效果。

希望这个教程对你有所帮助!下次见!

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


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