在本教程中,我想讲一下如何使用 Blender 的程序化纹理,在 Compositing 中修改 Mist 和 Depth 信息,从而实现上面展示的效果:一种带有斑驳感的动态雾气遮罩。


本教程不提供中文配音。您可以在下方观看英语配音的视频,并选择中文、英文或其他语言的字幕。视频下方提供了翻译成中文的文字稿。


视频文字稿

大家好!在本教程中,我想讲一下如何使用 Blender 的程序化纹理,在 Compositing 中修改 Mist 和 Depth 信息,从而实现上面展示的效果:一种带有斑驳感的动态雾气遮罩。

Mist 和 Depth 会根据物体与虚拟摄像机之间的距离来生成遮罩。几天前我发布的一个教程中,已经详细介绍过它们的特性。

Blender 的程序化纹理是三维的,因此你可以在水平方向、垂直方向,甚至深度方向上移动或缩放它们。正如我们接下来会看到的,这一点在 Compositing 中同样适用。

如果我们在项目中添加一个程序化纹理,比如 Clouds,那么也可以在后期处理中,通过 Compositing 窗口中的 Input Texture 节点来使用这个纹理。将纹理连接到 Viewer 节点后,我们就能在窗口背景中实时查看它的外观。

如果修改 Offset 数值(用于平移纹理)或者修改纹理的 Scale,就可以在背景中观察到变化。特别是,调整 X 数值会产生水平变化,调整 Y 数值会产生垂直变化,而调整 Z 数值则会产生相对于摄像机向前或向后的变化。

我们还可以在纹理对应的选项卡中调整该纹理特有的参数,并在背景中实时查看这些变化。例如,在 Clouds 纹理类型中,我们可以修改 Size 或 Type 等参数。

使用方向键或者 Timeline 中的工具,我们可以在动画的各个帧之间切换。

此时纹理还不会产生动画,因为它的参数还没有被制作动画……不过这个问题我们马上就能解决。

要给某个参数添加关键帧,将鼠标放在参数上并按下 I 键,或者右键点击参数,然后在弹出的菜单中选择 Insert Keyframe。

例如,我们可以在第一帧时,在 Texture 节点中将 Size XYZ 设置为 1,并插入一个关键帧。然后切换到第 250 帧,将 Size XYZ 改为 0.1,并插入新的关键帧。

如果你在 Timeline 中浏览动画时发现动画在开始和结束阶段变化非常缓慢,这可能是 Blender 插值方式造成的。你可以在 Graph Editor 窗口中调整关键帧来修改这种插值效果。

现在,来自 Depth 和 Mist 的信息可以作为遮罩,用于根据点与虚拟摄像机之间的距离实现各种效果。

类似地,程序化纹理的灰度信息(它本身是 3D 的)也可以作为遮罩,或者作为调制遮罩的因子。

通过将灰度程序化纹理与来自 Depth 或 Mist 的信息相乘,我们可以让这些信息的某些区域变暗。而且这些操作可以被制作成动画,因为程序化纹理可以像之前看到的那样进行移动、缩放和各种变换……没错:这正是我用来制作本教程开头那些动画的方法。

你看到的渲染仅使用了 Mist 通道。实际上,虽然效果已经很有意思,但这些并不是场景的最终渲染,而只是对我所设置参数生成的动态雾气遮罩的分析结果。

在 3D 场景中,我设置了 Mist Start 和 Mist Depth 数值,使雾气从虚拟摄像机正前方开始,并在场景中最远的物体之后达到最大值,也就是完全白色的遮罩。

让我们来分析一下我使用的节点结构。从 Render Layers 输出的信息是 Mist,因为我们看到的只是雾效遮罩。由于我们使用的是 Mist 而不是 Depth,因此其数值范围在 0 到 1 之间。

现在我向你展示的是未经纹理调制、直接连接到 Viewer 节点的 Mist 输出信息。

接下来,Mist 被发送到一个 Multiply 节点中,与 Clouds 程序化纹理相乘。

Clouds 纹理的 Offset XYZ 参数已经被制作成动画,它们决定了纹理的移动,特别是在水平方向和深度方向上的移动。

在第一个片段中,纹理的 Size 设置为 2,因此生成了非常大的斑块,所以效果并不太明显。

将这两种信息相乘后的结果,会根据 Clouds 纹理中的暗部区域,对 Mist 信息形成斑驳的变暗效果。

最终结果的强度可以通过多种方式调整;在我的案例中,我选择使用 RGB Curves 节点。

RGB Curves 的输出随后又与一个 Blend Texture 相乘,也就是进一步变暗。这个 Blend Texture 通过编辑其 Color Ramp 生成了一个垂直渐变。这个部分值得特别关注,因为它能够带来更多有趣的自定义效果。

在教程开始时,我展示了两段不同的动画。

在这两种情况下,节点结构都是相同的,但变化的参数包括 Clouds Texture 的 Offset XYZ(用于控制运动速度)、Clouds Texture 的 Size 参数(用于控制效果密度),以及最重要的 Blend Texture 的 Color Ramp(用于决定 Clouds Texture 在 Mist pass 中的作用区域)。

特别是在第二种情况下,我通过设置更小的 Size 数值,加强了 Clouds Texture 的颗粒感,使效果更加明显。

此外,我还修改了 Blend Texture 的 Ramp,将效果限制在一个带状区域内,使前景和天空部分不受雾气影响。

通过调整 Ramp,Blend Texture 的渐变可以获得相当高的自由度,而且这些参数同样可以通过设置关键帧进行动画处理。这意味着它的外观能够随时间发生变化。

对 Blend Texture 参数进行动画处理,可以实现淡入淡出以及其他效果。总的来说,考虑到 Blender 中大量可以组合和制作动画的工具与参数,你会发现能够实现的效果非常丰富。

这里展示的只是一个简单示例,用来说明如何利用程序化纹理在 Compositing 中调制各种效果,无论是制作动画还是单张图像。至于具体组合与参数设置,则取决于你想实现的目标。

希望本教程能对你有所帮助!下次见!

搜索教程

输入短语,或输入多个用逗号分隔的关键词进行搜索。

本站提供 Francesco Milanese 制作的 3D 模型、教程及计算机图形相关资源。3D 模型的使用许可可通过各模型页面上的链接前往第三方商店购买,并须遵守适用的许可条款。 Francesco Milanese — 意大利增值税号:06321250877。 联系方式:info@francescomilanese.com


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