以 Phoenix FD 制作蔓延的火焰

文 / Hammer Chen, Gergana Lilkova

本文算是网友要求的教程。很多人一直在询问笔者在“Burning Car RnD”视频中的燃烧汽车是如何制作的。那段影片是通过燃料燃烧(fuel-based burning)完成的。当温度达到燃点时,燃料就会开始燃烧。基于燃料的火焰燃烧效果很逼真; 可是燃料本身就是一种流体,这表示着燃料会在物体表面流窜。燃料溢出难以控制,可能产生难以预期的模拟结果。

在这篇提示和技巧文章中,我们将向您展示一种基于动态 mask,创建火焰蔓延的另一种方法。 我们将使用 VRayDistanceTex 从设定动态的 Box 生成 mask。由于我们可以完全控制 mask 扩展的速度和速度,因此这种火焰比基于燃料的火焰更能直接操控。这种方法对于项目制作来说更实用。笔者个人比较偏好这个方法。

虽然我们使用”一道火焰”作为例子,但同样的概念可以应用于许多其他燃烧效果 – 如燃烧的瞭望塔,燃烧的纸张,火焰烧成一个文字…等等效果。


整体设置。火从地上的 Plane 发出。为了控制流体的局部发射位置,我们在平面上放置一个具有动态的 Box。然后将该 Box 添加到 VRayDistanceTex 的 object list 当中。 VRayDistanceTex 是一种特殊的 V-Ray 程序纹理,这个纹理会根据点到 object list 中指定的几何体的距离返回不同的颜色。 因此,这个程序纹理可以用在 PHXSource 的 mask 槽中。通过这种方式,我们可以通过设定好关键帧的 Box 来控制火焰的蔓延。

对 Box(长宽高为 22 X 38 X 568 cm)的高度设定动画,在其上加上 Noise Modifier,因此这个 Box 可以用来产生火焰的蔓延,让火从平面的一侧烧到另一侧。不仅限于使用 Box; 你也可以使用任何几何形状。 在本例,我们使用 Box,因为我们要创建一道火焰,所以选择使用 Box。


确保将 Box 放在 Simulator 的“Scene Interaction”卷展栏中的“Exclude List”中。 否则,这个 Box 将干扰流体模拟。


Fire / Smoke Source (PHXScource)。 在场景中拾取平面,将其设定微流体发射源。 将 VRay CompTex 放入 Mask 插槽中。 将 Mask 类型设置为 Texmap。


在 VRayCompTex 中,将 VRayDistanceTex 放在 Source A 中,并在其对 Object list 中添加 Box001。 这将为 PHXSource 生成黑白 mask。 为了进一步使 mask 更自然有机,我们将其与 Source B 合成 – Noise 程序性噪声。 最后,您将得到一个增长的 mask,如左下图所示。


至于流体模拟本身,初学者可能会发现要产生想要的火焰型态并不容易。 以上是使用默认 dynamics 和渲染设置仿真的图像。还算不错,但这不是我们想要的火焰模样。 倘若您想创建小规模火焰,请注意以下事项:


1.在 Dynamics 中使用适当的守恒方法。首先要做的是改变守恒类型。 默认设置为 Direct Symmetric + Multi-Pass,但这样的配置不适于小型火焰。 因此,我们将守恒方法转换为 Direct Smooth + Backtrace。我们还将 SPF 提升至 3,得到的火焰噪声更小,更平滑。


2.渐层和曲线。其次,体积渲染选项中的曲线也起着重要作用。虽然上面的两张影像像看起来完全不同,但实际都来自同一模拟。 唯一的区别是 Volumetric Settings中 的曲线和渐层色。 默认曲线(左)在渲染中创建过度曝光,丢失了火中心的大部分细节; 而右边的曲线显示带有细节的火焰。注意曲线上的控制点会影响火焰的核心强度以及该位置的相应建层颜色。通过这条曲线和定制的渐变,我们可以拥有一个没有过度曝光的火焰(最高温度),以及逼真的黄色-橘色 – 蓝色的渐层。


3.微调火焰的不透明度。第三件要点是不透明度调制。这个步骤乍一看可能看起来微不足道,但会影响火的最终外观。 默认情况下,火焰的根部显得过于实心,您可以通过在 Modulate 插槽中放置 VRayDsiatnceTex 来缓解此问题。


在 VRayDistanceTex 的 Objects 列表中,我们添加了 Plane001。 这会在其根部产生一个调制火焰不透明度的 mask,这样一来可以产生更真实的火焰。 如果火焰是在汽车引擎盖上,那么您应该将引擎盖的几何体放到对象列表中而非 Plane001,依此类推。


4. PHXTurbulence。如果你想要火焰更有活力,你可以在场景中添加 turbulence。设定好适当的强度与大小,这个力场将吹拂火焰,提升火焰的写实度。 当然,如果你想要火焰温和些,可跳过这一步。注意到场景还放置了一个做为风力的 Plain Force,您可依需求决定是否加这个力场。

最终成果:


另一个例子是在 PHXSource 的 mask 中额外添加一个 logo bitmap:

下载 3ds Max 场景档
这个 3ds Max 场景文件相当小,设置很简洁。 由于本文并没有详细说明每个步骤,为了让您更轻松地学习,您可以点击这里下载文件(提取码: ysep)并自己探索场景。还包括体积渲染设置文件(* .tpr)文件。 祝学习流体模拟愉快!