在本期教程中,我们将学习如何使用 Shadow Catcher 模式来捕捉 3D 模型投射到 Plane 上的阴影,并在 Compositing 中将这些阴影添加到最终渲染结果中。
本教程不提供中文配音。您可以在下方观看英语配音的视频,并选择中文、英文或其他语言的字幕。视频下方提供了翻译成中文的文字稿。
视频文字稿
大家好!这是关于 Blender 中一个小型照片合成项目的三部教程中的第二部分。
在上一期教程中,我们介绍了如何还原原始照片的构图,以及如何使用 Blender 的免费 fSpy 插件来定位物体。
在本期教程中,我们将学习如何使用 Shadow Catcher 模式来捕捉 3D 模型投射到 Plane 上的阴影,并在 Compositing 中将这些阴影添加到最终渲染结果中。
和我许多其他视频教程一样,本教程的 PDF 版本可以通过简介中的链接免费下载。现在也是订阅频道并开启通知的好时机,这样你就不会错过接下来的视频教程了!
首先,在 Compositing 编辑器中,我插入一个 Input Image 节点,并加载原始照片。

此时,虚拟摄像机的背景图像只会在虚拟摄像机视图中可见,而不会出现在最终渲染中。因此,如果我们现在开始渲染,看到的将会是 World 背景,而不是照片。
我还会添加一个 Alpha Over 节点,将原始照片连接到 Alpha Over 的第一个 Image 输入端口,再将来自 Render Layers 的渲染结果连接到第二个 Image 输入端口。然后,我把 Alpha Over 的输出连接到 Composite 和 Viewer。
不过,即使这样设置,最终渲染仍然会显示 World 背景。移除这个背景,是使用 Shadow Catcher 所必须完成的两个步骤之一。

为了只渲染要插入照片中的物体,同时保留它们投射到 Plane 上的阴影,我们需要执行两个操作。
第一步是选择 Plane 以及其他你希望隐藏的物体,然后在 Object Data Properties 选项卡的 Visibility 区域中,为这些物体启用 Shadow Catcher 选项。

第二步是在 Render 选项卡的 Film 区域中启用 Transparent 模式。这个模式会在最终渲染中隐藏虚拟世界背景以及被标记为 Shadow Catcher 的物体。

如果现在开始渲染,并使用我之前展示的节点设置,我们就会得到一个基础的照片合成效果,也就是把 3D 模型合成到原始照片中。

我想在 3D View 的 Rendered 模式下说明一点:启用 Shadow Catcher 和单纯隐藏物体并不一样,因为 Shadow Catcher 仍然会保留间接光照。在上一期教程的结尾,我曾偶尔隐藏 Plane 来检查物体的位置。在那种情况下,可见物体会显得更暗,因为来自 Plane 的反弹光已经不存在了。

不过,在启用 Shadow Catcher 和 Transparent 后,反弹光仍然会被保留。为了让你的照片合成更加真实,你可以使用带颜色或带 Texture 的物体,因为它们的颜色会影响 3D 模型最终的光照外观。

为了给大家展示一个实际例子,我会暂时关闭 Shadow Catcher,这样我们就能在 Rendered 模式中观察 Plane 的外观。
接着,我会给 Plane 应用一个 Principled 材质,将 Roughness 设置为统一的 0.6,并把原始照片作为 Base Color 通道的 Texture。严格来说,这并不是标准的 PBR 工作流程,因为我本应该为 Plane 提供一个不包含光照信息的 Base Color 贴图。我现在这样做,只是为了突出展示照片合成中的 3D 模型在间接光照上的差异。

为了将原始照片进行 UV 映射到 Plane 上,我使用了 UV Project 修改器。我之前在频道中的一个视频教程里已经介绍过这个修改器。
首先,我将 fSpy 摄像机设置为修改器中的 Object。接下来,为了提升映射质量,我需要执行两个操作。

第一步是增加 Plane 的细分数量。你可以根据物体边缘线条的情况来判断合适的细分数。在我的例子中,我使用的是 Loop Cut and Slide 工具来添加切线。
第二步是在修改器中设置与原始图像一致的 Aspect Ratio。我在 Image Editor 中打开原始照片的 Image 选项卡后,可以看到原图分辨率是 1200 × 1600 像素。
因此,我分别在 UV Project 修改器的 Aspect X 和 Aspect Y 字段中输入 1.2 和 1.6。


如果我们将没有 Texture 的材质产生的间接光照,与带有 Texture 的材质产生的光照进行比较,就会立刻发现一些差异,尤其是在靠近桌面的物体区域。

正如我之前提到的,我本应该使用符合物理规律的 Base Color 贴图,并让 Blender 使用 Spot Light 光源来计算反弹光。不过,即使是这个示例,你依然能够观察到其中的区别。
现在,我可以再次为 Plane 启用 Shadow Catcher,然后开始渲染。这样,原始图像就会通过 Alpha Over 节点作为背景被纳入 Compositing 中。

在最终图像中,我们也会得到由 Shadow Catcher 生成的阴影。在结束这第二部分教程之前,我建议在场景渲染和 Alpha Over 节点之间添加一个 Hue Saturation Value 节点,稍微降低渲染结果的饱和度。当你处理像本项目中这样颜色和 Texture 都非常鲜艳的物体时,这个调整会特别有用。

不过,这个小项目还没有结束,因为我还没有向大家展示如何在 Compositing 中单独处理 Shadow Catcher 信息,也还没有介绍如何进一步修改 3D 模型的图像,例如通过 Lens Distortion 添加一些镜头畸变效果。
这些内容我会在下一期教程中讲解!希望本期教程对你有所帮助。下次见!