在本系列关于 Blender 4.5 中使用 Fluid 模拟器制作火焰与烟雾的第四个教程中,我们将详细讲解在火焰与烟雾物理模拟中使用的三种 Flow 对象的参数。


本教程是关于 Blender 4.5 中火焰与烟雾基础的 10 集迷你系列的一部分。要查看完整的剧集列表,请点击这里。

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


视频文字稿

大家好。在本系列关于 Blender 4.5 中使用 Fluid 模拟器制作火焰与烟雾的第四个教程中,我们将详细讲解在火焰与烟雾物理模拟中使用的三种 Flow 对象的参数。

在我使用的场景中,有一些木柴放在壁炉里。这些木柴构成一个单一的网格对象,我们将把它设置为 Inflow。我已经为模拟创建了一个 Domain,只包围壁炉内部的体积范围。

我为这些木柴添加一个类型为 Inflow 的 Fluid 组件。Fire And Smoke 模式同时包含 Smoke 和 Fire 参数,因此我选择这个组合来分析所有参数。稍后我会指出哪些参数只属于 Smoke,因此在仅 Fire 模拟中不可用。正如你所看到的,参数并不多。

默认情况下,Flow Behavior 设置为 Geometry。正如我们在之前的章节中所了解的,这种模式会产生一次初始的火焰和烟雾爆发,之后对象将不再发射火焰或烟雾。它适用于爆炸或单次烟雾喷发,但在我们的案例中我们需要 Inflow 模式。无论如何,除了 Use Flow 复选框之外,Geometry 和 Inflow 共享相同的参数,因此我们将通过 Inflow 来分析所有参数。

在之前的章节中你已经知道,要控制火焰的数量,可以调整 Fuel 参数。在本例中,我们可以稍微降低它以生成活跃但不过度的火焰,或者大幅降低以产生发光的余烬效果。

我稍微缩小了 Domain 的尺寸,并提高了分辨率。在分析 Inflow 参数之前,我们先看看如何使用 Outflow 对象让壁炉内的烟雾消失。

Outflow 对象是一些网格,它们会在发生碰撞时让 Fluid 模拟元素,无论是火焰还是烟雾,都消失。我添加了一个简单的 Plane 作为 Outflow,并将其放置在壁炉顶部,也就是烟雾通常会上升进入烟囱的位置。Outflow 对象和 Inflow 对象一样,不一定需要在渲染中可见。因此我关闭了该 Outflow 对象在 3D Viewport 预览和最终渲染中的可见性。从现在起,我将在 Outliner 中选择它。

接着我为该对象添加一个 Fluid 组件,将类型设置为 Smoke Flow,并将 Behavior 设置为 Outflow。

这种对象的参数非常少,而且这些参数也同样存在于 Geometry 和 Inflow 对象中,因此我简单说明一下。

如果对象没有体积,或者更一般地说不是封闭体,就应勾选 Is Planar 选项。由于 Plane 正是这种类型的对象,我启用该选项。

Use Flow 参数允许启用或禁用 Inflow 或 Outflow,并且可以制作动画。如果你想在动画中创建间歇或非连续的火焰与烟雾发射或移除效果,这个参数会非常有用。

Sampling Substeps 参数定义在帧之间额外计算的模拟步数,用于提升模拟质量。对于快速模拟非常有帮助,即使较低的值,例如 3,也能产生明显差异。Surface Emission 和 Volume Emission 提供相对于对象表面或体积的发射或捕获偏移,但在本例中不需要使用。稍后我们会讲到 Flow Source。

播放模拟后,我们会发现起初一切正常,但在某个时刻有少量烟雾向上逃逸。增加 Substeps 数量也没有改变这种情况。

再次在 3D View 中让 Plane 可见,并改变观察角度后,解决方案变得清晰:Plane 太小了,因此在某个时刻部分烟雾从外侧逸出并向上升起。唯一的解决方法是适当放大 Plane,然后重新测试。

现在我们来详细分析 Inflow 对象的参数,除了刚才在 Outflow 中已经讲过的部分。

Smoke Color 实际上指的是 3D Viewport 预览中的烟雾颜色,因为烟雾的最终渲染颜色在其他位置定义。在复杂场景中,为其指定不同颜色有助于更容易识别烟雾,或者在 Shading 中使用该对象属性来更改 Domain Material 的颜色或其他特性。

Absolute Density 默认启用,通常建议保持启用状态,因为它确保 Domain 内火焰和烟雾的密度存在上限。

如果禁用,火焰和烟雾可能会急剧增加,有时会形成类似失控燃烧的效果。在这里,由于存在 Outflow,效果受到限制,因此我暂时将该对象从 Domain 中移除,向你展示火焰如何增强。禁用 Absolute Density 在某些场景下可能有用,但在大多数情况下并不需要,所以我将其重新启用。

Initial Temperature 和 Density 参数与烟雾相关,因此在仅 Fire 模拟中不可用。Density 指发射的烟雾数量,数值越高对应更大的体积。实际上在当前场景中烟雾过多,因此我降低这个值。

Initial Temperature 参数定义烟雾温度与周围环境温度之间的差异,并控制气体上升速度。不过它的效果与 Domain 中一个名为 Buoyancy Heat 的参数相关,因此我们将在之后的章节中更深入地讨论。

到目前为止,我让 Inflow 对象在整个表面发射火焰,但也可以通过在 Vertex Group 中选择顶点,然后在 Flow 组件的对应字段中指定该 Vertex Group 的名称,将发射限制在对象的特定部分。

另一个可以增加火焰发射变化性的工具是 Inflow 面板底部的 Texture。在这里我们可以分配一个 Texture,最重要的是 Offset 字段,它定义使用 procedural Texture 的哪一个“切片”。

Clouds 或 Noise 等 procedural Texture 不是二维图像,而是真正的三维体积。

通过在 Timeline 上为 Offset 值制作动画,如屏幕所示,我们可以在垂直方向上移动 Texture,每次使用不同的图案进行发射。

这会让火焰看起来不那么均匀。该系统的问题在于,通常需要多次尝试不同的 Texture 类型和 Offset 变化组合,才能获得理想效果。

Initial Velocity 组中的工具允许为火焰赋予初始方向和速度。这些字段名称相当直观,因此无需过多说明,不过我会在后续章节中通过另一个场景展示一个实际示例。

最后是 Flow Source 字段,它允许在 Mesh 和 Particles 之间进行选择。

含义很直接。到目前为止,我们一直使用 Mesh 从对象发射火焰和烟雾,并且可以通过 Vertex Groups 限制发射区域。

但对象也可以拥有粒子系统,有时我们可能希望由这些粒子而不是发射器本身来产生火焰和烟雾。

在这种情况下,需要将 Flow Source 设置为 Particles,并且指定该网格的哪个粒子系统用于驱动模拟。

正如你所猜测的,我们可以将 Flow 组件分配给对象的几何体,或者分配给所选对象的某一个粒子系统。

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


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