在这个关于 Blender 4.5 中使用 Fluid 模拟器制作火焰和烟雾系列教程的第八课中,我们将介绍 Blender 中可用的两种 Effector 对象类型,也就是 Collision 和 Guides。
本教程是关于 Blender 4.5 中火焰与烟雾基础的 10 集迷你系列的一部分。要查看完整的剧集列表,请点击这里。
本教程的视频版本目前尚未提供该语言版本。
视频文字稿
大家好!在这个关于 Blender 4.5 中使用 Fluid 模拟器制作火焰和烟雾系列教程的第八课中,我们将介绍 Blender 中可用的两种 Effector 对象类型,也就是 Collision 和 Guides。
Effector 对象用于改变物理模拟元素的运动方向或影响它们的流动。在屏幕所示的场景中,火焰和烟雾直接穿过锅体,因为它们没有将其识别为障碍物。
为了解决这个问题,我们需要为锅体添加一个类型为 Effector 的 Fluid 组件,然后在专用菜单中选择 Collision。

如你所见,这里的参数非常少,而且其中大多数我们已经在 Flow 对象中见过。例如 Sampling Substeps,它会在帧与帧之间增加更多中间计算步骤。
我们也已经了解 Use Effector 选项,它类似于 Use Flow,可以设置动画,从而根据需要启用或禁用碰撞效果。
我们还知道 Is Planar 适用于没有体积的几何体,或者无法明确区分内部和外部的模型。这里的新参数是 Surface Thickness,它会在对象周围创建一种外壳结构。当模拟过程中火焰或烟雾与物体表面发生穿插时,这个参数会非常有用。
不过播放模拟后我们会发现,在某些帧中火焰仍然能够穿过物体。

为了解决这个问题,我保持相同的 Domain 分辨率,但进行了多次测试,逐步提高 Surface Thickness 的数值。当 Thickness 设置为 1 时,我得到了屏幕上显示的结果。我没有修改 Substeps 的数值,因为提示信息说明它主要用于快速移动的 Effector。我们的对象是静态的,因此我只调整了 Thickness,这就是最终结果。

在讲解 Guide 对象之前,我们需要再澄清一个关于碰撞的问题。在我使用的场景中,有一个 Plane 向上发射粒子。为了让粒子上升,我在粒子系统设置中禁用了 Gravity。该发射对象同时也是火焰模拟中的 Inflow 对象。因此,我将 Flow Source 更改为 Particle System,并在相应字段中指定了我创建的粒子系统。为了避免火焰粒子比系统粒子大得多且更块状,我提高了 Domain 的分辨率。
如你所见,这些粒子并没有与 Domain 内的物体发生任何交互。

在这种情况下,为了让火焰粒子在撞击物体时反弹,我们需要添加一个 Collision 组件。这种组件会让粒子产生反弹效果,但它们产生的烟雾,甚至部分火焰,仍然会进入物体内部。因此,我们还需要添加一个类型为 Collision Effector 的 Fluid 组件,以正确处理火焰和烟雾模拟。

本节最后我们来讲解类型为 Guides 的 Effector 对象。这类特殊对象必须具有速度,并且会影响模拟中火焰和烟雾的运动。为了演示示例,我添加了一个球体,它在模拟 Domain 内沿着一条奇怪的轨迹运动。这个球体目前还没有任何 Fluid 组件,因此对模拟没有影响。
当添加一个 Fluid Effector 组件并将类型选择为 Guide 后,我们会看到一些熟悉的参数,以及几个新的参数。其中 Velocity Factor 是我们之后会特别关注的一个。
播放模拟后,我们会发现性能有所下降,但物体对火焰或烟雾没有可见影响。
这是因为 Guides 的计算开销非常大,必须在 Domain 层级中启用,否则不会生效。
在启用 Domain 中的 Guides 部分后,我重新开始模拟。现在计算时间明显变长,因此我让 Blender 先完成计算,然后再向你展示结果。


结果已经与未使用 Guides 时明显不同,但效果还不算特别突出。为了增强该对象对模拟的影响,我选中它并测试更高的 Velocity Factor 数值。
这是将 Velocity Factor 设置为 5 时的模拟效果。烟雾被拖拽的方式变得更加明显。

这是将 Velocity Factor 设置为 20 时的模拟效果。可以看出,Guide 对象并不是 Collider,而是一种会扰动并拖动模拟元素的特殊类型。

不过,还有另一种方法可以影响火焰和烟雾的运动,那就是使用 Force Fields,我们将在下一课中进行讲解。