在这个关于 Blender 4.5 中使用 Fluid 模拟器制作火焰和烟雾的系列教程的第一课中,我们将了解在 Blender 中创建模拟所需的两个基本元素。
本教程是关于 Blender 4.5 中火焰与烟雾基础的 10 集迷你系列的一部分。要查看完整的剧集列表,请点击这里。
本教程的视频版本目前尚未提供该语言版本。您可以在下方观看带字幕的英文版视频;视频下方提供了翻译成中文的文字稿。
视频文字稿
大家好。在这个关于 Blender 4.5 中使用 Fluid 模拟器制作火焰和烟雾的系列教程的第一课中,我们将了解在 Blender 中创建模拟所需的两个基本元素。
让我们从一个空的 Blender 场景开始。要在场景中添加火焰或烟雾,你可能会认为第一步是插入一个能够发射这些元素的对象。这个想法是正确的,但它只代表了在 Blender 中运行模拟所需基本组件的一半。尽管如此,我们还是先在场景中添加将作为发射器的对象。
Blender 的火焰和烟雾模拟工具位于每个对象的 Physics 选项卡中。我们需要添加的组件类型是 Fluid,它同时处理液体以及火焰或烟雾模拟。最初你只会看到一个名为 Type 的菜单,它尚未区分液体或其他类别,而只是列出模拟中可能的角色类型。
各个元素类型的工具提示已经为我们提供了一些功能上的线索。特别是,我们可以看到 Flow 类型用于向场景中添加或移除元素。由于我们创建的第一个对象是为了让它成为火焰和烟雾的发射器,我们将选择这个类型。

现在组件面板中会出现多个新选项。第一个是 Flow Type,默认设置为 Smoke。打开菜单后我们会注意到,Liquid 只有一个选项,而火焰和烟雾则提供三种选择:分别为单独的元素,或者它们的组合。Fire And Smoke 选项包含两者的参数和设置,因此在本系列教程的初始阶段,我将选择这个选项。

如果你熟悉 Blender 中其他类型的物理模拟,例如 Cloth 或 Collision,你可能会认为此时只需将 Timeline 移动到第一帧并按下 Play 按钮,就可以开始火焰和烟雾模拟。然而这样做并不会产生任何结果。因此,让我们回到 Timeline 的第一帧,并介绍进行 Fluid 模拟所需的第二个基本角色:Domain。
每一个 Fluid 模拟都必须在一个由网格定义的三维空间中进行,这个空间也称为体积。在 Blender 中,这个体积被称为模拟的 Domain。之所以必须这样做,主要是出于性能方面的原因,因为这些模拟需要大量的内存和计算资源,我们稍后会看到这一点。Domain 可以是任意形状的对象,但 Blender 最终会采用它的 Bounding Box。因此,最直接的选择是一个适当缩放的 Cube。
将发射器对象包围在作为 Domain 的 Cube 内部之后,选择这个 Cube,并添加一个类型为 Domain 的 Fluid 组件,子类型设置为 Gas。Cube 会立即变为透明,从而显示其结构。你还会注意到在某个下角出现了一个较小的立方体,我们很快就会解释它的作用。不过最显著的变化是,Domain 内部的 Inflow 对象现在被火焰包围了。

在 Timeline 中将第一帧设为当前帧,然后点击 Play 开始模拟。确实发生了一些变化,但作为第一次火焰和烟雾模拟,它看起来有些令人失望,因为火焰只在最初几帧出现,随后只剩下烟雾。

这种行为的原因在于发射器对象的一个设置,所以让我们选中它。我们关注的 Fluid 组件参数是 Flow Behavior,默认设置为 Geometry。工具提示说明 Geometry 使用当前几何体来产生火焰,而 Inflow 模式则会持续向场景中添加火焰。因此我们将模式切换为 Inflow,回到 Timeline 的第一帧,再次点击 Play。
“Inflow 添加火焰”这个表达是理解一切的关键,因为 Inflow 对象会从几何体出发,在每一帧持续生成新的模拟元素。而 Geometry 模式则只在第一帧考虑几何体,随后立即将其“消耗”。从某种角度来看,Geometry 模式就像燃烧一小片纸,或者烟雾机只喷出一口烟;而 Inflow 则更像炉灶的火焰或持续工作的烟雾机,会不断产生烟雾。
你可能已经注意到,火焰尤其是在对象底部看起来有些过于方块化,更准确地说是呈现立方体状,因为我们是在三维空间中。这种外观的原因在于 Domain 中一个名为 Resolution 的参数,它决定了 Domain 体积被划分为多少个小立方体。
这个分辨率由出现在 Domain 下角的小立方体进行可视化表示。
事实上,尤其是在 Resolution 数值较低时,你可以清楚地看到火焰和烟雾被划分为相同大小的立方体。

Fluid 模拟通过将 Domain 的体积划分为称为 Voxel 的小立方体来运行。这些是用于计算模拟的最小单位,因此 Voxel 是二维图像中像素在三维空间中的对应物。与像素类似,在相同体积下拥有更多的 Voxel 会带来更高的质量,但代价是更多的计算能力和磁盘内存占用。最佳做法是从默认的 Resolution 值 32 开始,先调整其他参数,直到获得理想的火焰和烟雾形态。之后可以提高 Resolution 进行测试,最终在输出最终结果时将其提高到非常高的数值。
说到内存使用,我们来看一下 Fluid 模拟数据存储在哪里,尤其是因为我还没有保存项目文件。这些信息可以在 Domain 对象的 Cache 部分找到。从那里显示的路径可以看出,Blender 已在磁盘上创建了一个文件夹来存储模拟文件。由于我尚未保存当前项目文件,这个文件夹被创建在一个临时位置。因此请不要像我这样操作。在创建 Domain 和其他 Fluid 模拟元素之前,务必先保存你的 Blender 项目文件。这样缓存文件夹就会创建在与你的项目文件相同的目录中,你就不必在磁盘上四处寻找它了。
如果此时我们切换视口着色模式,或者在 Timeline 的中间帧进行渲染,我们将看不到火焰或烟雾。这是因为目前在 3D Viewport 的 Solid 模式下看到的只是火焰和烟雾在三维空间中的 Voxel 可视化,而我们尚未为它们定义用于渲染的 Materials。我们将在下一集介绍这一部分内容。