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控制效果的整体大小,值越大,扩展速度越快。
(完)