Flame场

flame场是模拟火焰和爆炸的重要组成部分。它储存着传递给流体的反应物剩余生命值,比如fuel。这个场通过sourcing添加数据,pyro解算器负责减少它的值,然后生成希望输出的数据。取决于反应物耗尽的程度,它可以生成各种不同的输出数据。可以产生烟、增加温度或者导致爆炸。flame也可以用做emission场,以此用来查看或者渲染。

举一个简单的例子,你或许希望反应物在刚开始燃烧时产生大量的热,燃烧结束时产生烟。你可以通过设置pyro解算器中Flames标签下的output参数来设定。

与传统pyro的区别

在houdini18之前,pyro模拟燃烧需要使用fuel场。在热的区域,会被注入fuel,会立即产生burn场。这个burn场会重新计算heat场,heat场会捕获烟雾的发光部分。最终,累积的heat场和瞬间的burn场会生成需要输出的数据。

新的工作流程需要在SOPs中产生瞬间的burn,然后作为sourcing的一部分。工具架上的Sparse Fireball就是一个很好的例子。

burn会被当作初始爆炸的来源。瞬间的burn被合并到物体的flame场和divergence场。

这个方式的优势在于可预测和可控性都要比老的流程好。比如,如果你想要爆炸燃料增多,你可以直接给burn source做动画关键帧,以此达到想要的速度。

一些情况下需要火焰会扩散燃烧到整个燃料,可以使用Pyro Source Spread SOP节点,这个节点通过输入点云来模拟扩散行为,尤其是控制扩散火时很有用。

生命值Lifespan

flame数值通过sourcing持续增长。通过Volume Source DOP节点添加方式是Maximum。这可以确保flame值在source中可以被刷新,但是不会一直累加。

Pyro解算器和气体与flame场平流。反应物也用于生成启用的输出,flame场中的数值相应的减少。这个比率被解算器上的Flames标签中Flame Lifespan控制。数值大则慢速反应。更准确地说,火焰寿命值为 2 意味着需要 2 秒才能完全耗尽初始火焰值 1。

通常来说,需要L*f秒来消耗f中的flame数值,L就是Flame Lifespan。直观上来说,Lifespan越大,火焰上升的越高。

输出数据

在存在的反应物中,也就是flame不为0的数值中,反应在整个模拟过程中不断发生。这些反应的直接影响是减少反应物的量,就像上面解释lifespan那样。反应过程也可以生成不同的输出数据来影响模拟。比如增加气体的温度或者导致爆炸。

你可以在解算器的Flames标签中控制这些输出数据。三种可能的输出数据是烟、温度和扩张,这会分别影响density、temperature和divergence场。每个输出数据都会有单独的调节参数,由一个基础的倍增参数、Flame范围和一个可选的重映射flame场组成。每个体素的输出数据都会按着下面的方式计算:

  • flame数值从Flame Range重映射到 0-1 范围。如果启用 Remap Flame,则在上一步的结果中进一步重映射 Flame Ramp。如果Flame Range的端点不为零,则在那一侧的所有Flame值都将生成相应的输出。
  • 重新映射的结果乘以基数得到输出值。这是烟雾的Emission Amount、温度的Temperature Amount和膨胀的Expansion Rate。
  • 输出的值会被合并进目标场中,烟雾合并到density中,温度合并到temperature,扩张合并到divergence。

还有一些特别要注意的点。

烟smoke

Smoke输出对于在火或者爆炸中生成烟雾很有帮助。这个输出数据会输入给density场中。Emission Amount是烟雾生成的相关基础倍数,它控制所产生烟雾的可见厚度。

有两种方法可以将输出与目标场合并:Max 和 Add。 在 Max 模式下,最终的density结果是场的当前值和计算输出之间的最大值。 当 Merge Method 设置为 Add 时,输出按时间步长标量化并添加到density场中。 在这种模式下,Emission Amount控制每帧的density场增加多少。

Max merging 的好处是它只在尚未饱和的区域发出烟雾,并防止密度值不受控制地增长。如果想在不考虑已经存在的烟雾的情况下注入烟雾,可以改用添加。

温度temperature

温度输出能够模拟放热反应的影响,因为它会修改temperature场。这个输出对于爆炸非常有用,在这种情况下,火球中携带的反应物可以确保它保持热度并继续上升。Temperature Amount控制输出的整体比例。

与烟雾输出类似,有两种方法可以将输出与目标场合并。Add工作方式:将输出添加到temperature 场。在Pull模式下,temperature 值以与时间步幅无关的方式和输出混合。Strength 参数控制混合速率,值越高,与输出匹配得越紧密。

设置为Pull模式时,temperature场只会在输出超过当前值的区域受到影响。这允许反应加热但不冷却环境气体。这种合并方法相对于 Add 的优势在于它只能将气体加热到反应温度。

扩张Expansion

Expansion 输出为模拟引入了向外速度,允许爆炸在初始爆炸后继续扩展。 此输出对于上升的火球特别有用,它的加入可以使烟雾产生“滚动”效果,并允许火球以可控的方式继续膨胀。

扩张是通过改变散度场引起的。Expansion Rate控制效果的整体大小,值越大,扩展速度越快。

(完)

Leave a Reply