在本教程中,我将介绍我在 Blender 4.1 中使用 Cycles 渲染引擎创建一个完全程序化的带有蓝色云层的星空所使用的节点设置。
本教程的视频版本目前尚未提供该语言版本。您可以在下方观看带字幕的英文版视频;视频下方提供了翻译成中文的文字稿。
视频文字稿
大家好。在本教程中,我将介绍我在 Blender 4.1 中使用 Cycles 渲染引擎创建一个完全程序化的带有蓝色云层的星空所使用的节点设置。

因此,我们不会使用任何图像,而只使用 Blender 的 Procedural Noise 和 Gradient Textures。这样我们就可以显著调整最终效果,因为可以在不影响最终结果质量的情况下修改这些对象的参数。
灵感来自我最喜欢的电子游戏之一《The Secret of Monkey Island》中的夜空。
具体来说,是在 Mêlée Island 上可以看到的夜空。我们需要按以下顺序为 World Background 创建三个组成部分:星空背景、蓝色云层以及地平线辉光。



我之前展示给大家的渲染效果,是通过在后期处理中使用 Nodes Compositing 为星星添加一些辉光以及其他效果制作的。在介绍完 World Background 材质的节点设置之后,我们还会一起查看后期处理部分。

在一个新的 Blender 项目中,切换到 Shader Layout,或者打开类似的编辑器,然后在 Shader 选择器中选择 World。
在 Layout 中添加一个 3D View 窗口,这样你就可以在 Rendered 模式下实时观察各种效果。
此时,虚拟宇宙的背景将设置为 Blender 默认文件的设置。在我的情况下,是强度值为 1 的纯白色。

在继续之前,有一个非常重要的注意事项:不要在 Orthographic 模式下查看 3D Viewport 的 Rendered 预览,否则不会得到正确的结果。因此,请使用透视模式下的自由视图。
现在我们开始创建星空背景,也就是先创建一个黑色背景,然后在其上添加星星,这些星星表现为具有随机分布、强度和大小的彩色点。
要创建一个程序化的黑白星空背景,只需在节点设置中添加一个 Noise Texture,并显著提高 Scale 参数的数值,例如设置为 200 或更高。
同时,将 Detail 参数的数值至少设置为 5,以获得更好的效果。
然后,将 Noise 节点的 Factor 输出连接到一个 Brightness Contrast 节点,并将 Brightness 的数值设置为负值,例如 -0.7。

这样得到的星星有两个问题:亮度不够,而且是黑白的。
为了让不仅是星星,而且整个虚拟宇宙都更明亮,并最终作为场景的基础光源,可以提高 World Background 节点的 Strength 参数数值,例如设置为 3。请记住,我们之后还会在后期处理中使用 Nodes Compositing 为星星添加额外的辉光效果。
关于颜色,我们不能使用 Noise 节点的 Color 输出,因为那样得到的结果会过于丰富多彩。
不过,我们知道可以将 Noise 节点 Factor 输出中的灰白色点与一个随机颜色纹理相乘,从而得到具有不同大小和强度的彩色点。为此,可以再使用一个 Noise Texture,这次使用它的 Color 输出,并将 Scale 参数设置为 100,这样就可以得到许多白色区域以及一些彩色区域。
为了让这个纹理的颜色更加鲜明,再次使用一个 Brightness Contrast 节点,不过这次将 Brightness 数值保持为 0,并将 Contrast 数值设置为 0.7 或更高,根据需要进行调整。
为了得到彩色星星,使用一个 Color Mix 节点,并将模式设置为 Multiply,Factor 设置为 1,然后将两个 Brightness Contrast 节点的输出相乘。
为了完成这一部分的设置,将 Multiply 节点的输出连接到一个 Gamma 节点。这样我们就可以显示更多或更少的星星,使它们更亮或更暗,而不会使背景变亮,因为 Gamma 校正的作用方式不同于 Brightness 节点。

我们已经完成了本教程的第一个效果。在继续下一个效果之前,可以将直到 Gamma 为止的节点整理为一个新的节点组,并命名为 STARS。
云层和地平线辉光各自都是通过两个部分创建的。第一部分定义生成效果的 Texture,第二部分定义将该效果添加到当前天空中的混合因子。
由于需要先将云层与星空背景混合,然后再应用地平线辉光,我们先来定义云层。
理论上,创建蓝色云层是比较简单的,因为只需要在节点设置中再添加一个 3D Noise Texture,这次将 Scale 设置为 3,Detail 设置为 5,然后将该节点的 Factor 输出连接到一个 Color Ramp 节点,用于定义云层的颜色。
Color Ramp 节点可以根据你的需要通过实验进行设置。在我的示例中,我将第一个标记设置为黑色,位置为 0.36;然后将第二个标记设置为纯蓝色,位置为 0.93;接着将插值模式改为 Easing。

通过这两个节点,我们已经可以得到程序化的蓝色云层,但存在一个问题:这些云层会出现在整个虚拟宇宙中。我们需要让它们从地平线上的某个高度开始出现,并且能够根据需要调整这个高度。因此,我希望创建一个黑白渐变遮罩,并将其与这些云层相乘,从而在渐变纹理黑色区域对应的位置隐藏云层。
为此,在节点设置中添加一个类型为 Linear 的 Gradient Texture,以及一个 Vector Mapping 节点,并将其模式设置为 Point,同时将 Rotation Y 设置为 90°。
为了实现该渐变的正确映射,将新的 Vector Mapping 节点的 Vector 输入连接到一个 Texture Coordinate 输入节点的 Generated 输出。
为了能够提高或降低渐变的过渡线位置,在节点设置中再添加一个 Color Ramp 节点。在这种情况下,需要调整默认 Color Ramp 左侧的黑色标记,以移动渐变的过渡位置。
现在,可以使用一个 Color Mix 节点将得到的两个 Color Ramp 的输出相乘,将混合模式设置为 Multiply,并将混合因子设置为 1。

现在,你也可以将这部分节点设置整理为一个新的节点组,并命名为 CLOUDS。
接下来,我们进入蓝色云层效果的第二部分,也就是将其与星空背景进行混合。
为了将该效果添加到星空背景中,在节点设置中插入另一个 Color Mix 节点,不过这次保持其为 Mix 模式,而不是像之前那样改为 Multiply 模式。
将 STARS 节点组的输出连接到这个新的 Mix 节点的第一个 Color 输入。
然后,将 CLOUDS 节点组的输出连接到这个新的 Mix 节点的第二个 Color 输入。

现在我们同时得到了云层和星星,但显然,在云层较为浓密的地方不应该看到星星。为了解决这个问题,将 CLOUDS 的输出连接到用于混合星星和云层的 Color Mix 节点的 Factor 输入。
我们正在使用的 CLOUDS 输出目前还不适合,因为它是带颜色的,而且强度也不正确。为了解决这些问题,在 CLOUDS 的输出与 Color Mix 节点的 Factor 输入之间依次插入一个 RGB TO BW 节点和一个 Gamma 节点。然后,将 Gamma 的数值设置为一个非常小的值,例如 0.01。

第三个也是最后一个效果,是在地平线上添加一点轻微的辉光,以增强最终效果。
这个第三个节点组的节点设置可以通过复制 CLOUDS 中的 Texture Coordinate、Mapping、Gradient Texture 和 Color Ramp 这一组节点,然后修改这些节点的参数来获得。
实际上,由于我们还需要 RGB TO BW 和 GAMMA 节点,因此可以连同这两个外部节点一起复制整个 CLOUDS 节点组。
请注意这里,因为需要执行一个非常重要的操作!此时,复制得到的节点组仍然是原始 CLOUDS 节点组的一个实例,因此对这个节点组进行的任何操作也会同时修改原始节点组。

在进行任何操作之前,点击节点组中带有数字 2 的按钮,使其从原始节点组中分离出来。Blender 会将这个新节点重命名为 Clouds 001。

首先,将这个新的节点组重命名为 HORIZON-GLOW,然后进入该节点组内部。

从 HORIZON-GLOW 中删除 Noise Texture、Color Ramp 和 Multiply 节点,并将第一个 Color Ramp 直接连接到节点组输出。
将 Gradient Texture 节点的模式从 Linear 改为 Easing,以获得更加平滑的过渡效果。
现在我们得到一个渐变遮罩,在地平线位置为黑色,并向上逐渐变亮。
选择 Color Ramp 的第一个标记,将其颜色改为深蓝绿色,例如 RGB 0.007,0.018,0.031,并保持其位置为 0.0。
选择第二个标记,将其移动到位置 0.09,使其非常接近第一个标记,然后将其颜色改为黑色,并将 Alpha 设置为 0,使其完全透明。
因此,这个新的渐变将在底部呈现蓝绿色,在顶部完全透明。

使用一个处于 Mix 模式的 Color Mix 节点将该效果与其他效果进行混合。将用于混合 CLOUDS 和 STARS 的第一个 Color Mix 节点连接到这个新的 Color Mix 节点的第一个输入。
将 HORIZON-GLOW 节点组的输出连接到这个新的 Color Mix 节点的第二个输入。

由于我们之前执行了复制操作,HORIZON-GLOW 节点组的输出应该已经连接到一个 RGB TO BW 节点和一个 GAMMA 节点。将 GAMMA 节点的输出连接到第二个 Color Mix 节点的 Factor 输入。这一次,我建议将 Gamma 的数值设置为 0.5 或更高。

然后,可以将第二个 Color Mix 节点的输出连接到 Background 节点,从而得到最终效果。接下来,我们将在后期处理中为星星添加辉光效果。
在进入后期处理添加辉光之前,我提醒大家,目前为止讨论的所有效果都是通过程序化 Textures 创建的,因此可以对它们进行修改,并通过插入关键帧来制作动画。
例如,我们可以为通过带颜色的 Color Ramp 生成云层的 Noise Texture 添加 Texture Coordinates 和 Mapping 节点。完成之后,就可以通过调整新的 Mapping 节点的 Location 和 Rotation 参数来为云层的移动和变化制作动画。

有多种方法可以为星星的亮度制作动画效果。
例如,你可以进入该节点组,并在 Gamma 节点与节点组输出之间插入一个处于 Multiply 模式且 Factor 设置为 1 的 Color Mix 节点。然后,添加一个程序化 Magic Texture,并将该 Magic Texture 的 Factor 输出连接到新创建的 Color Multiply 节点的第二个图像输入。

完成之后,可以通过多种方式为 Magic Texture 的变化制作动画,例如像处理云层那样使用 Texture Coordinates 和 Mapping 节点修改其坐标,或者直接为 Magic Texture 的 Scale 参数数值添加动画。
这样,这个 Texture 就会在背景中移动,并在与星星相乘时随机使其变暗。不过,这只是实现以随机且动画方式变化星星亮度的其中一种方法。
好了,现在让我们切换到 Compositing Layout,并启用用于后期处理的 Nodes。
在开始渲染之前,请在 Properties 编辑器的 View Layers 选项卡中的 Render Passes 部分启用 Emission 和 Environment。

添加 Viewer 和 Reroute 节点,并启用 Backdrop 按钮,以便在渲染后预览最终效果。
渲染场景,以获取 Emission 和 Environment 信息,并对渲染结果应用辉光和其他效果。
使用一个处于 Add 模式且 Factor 设置为 1 的 Color Mix 节点,将 Render Layers 节点的 Emission 和 Environment 输出相加。
将一个 Glare 节点连接到该节点的输出。在我的示例中,我将其设置为 Fog Glow 模式,将 Threshold 参数设置为较低数值,Quality 设置为 High,Size 设置为 9,并且最重要的是将 Mix 设置为 1。我之前在频道发布的多个教程中已经讨论过 Glare 节点的 Mix 参数,并说明将该参数设置为 1 时,只会得到单独的 Glare 效果,这样就可以根据需要对其进行调整。
现在,你可以添加其他节点来进一步修改效果,例如 Glare、Blur 或 RGB Curves,就像我所做的那样。
无论如何,你需要将获得的 Glare 效果与原始渲染结果相加。可以使用另一个处于 Add 模式且混合因子为 1 的 Color Mix 节点来完成此操作。将 Render Layer 的 Image 输出连接到该 Add 节点的第一个 Image 输入。

在完成这一步混合之后,我们仍然可以继续应用其他效果,例如亮度和对比度校正,或者最后添加一个暗角效果。
现在,我们只需要渲染动画并查看最终输出结果。

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