Bifröst 概述和概念

Bifröst 是一种可使用 FLIP(流体隐式粒子)解算器创建模拟液体效果的程序框架。您可以从发射器生成液体并使其在重力下坠落,与碰撞对象进行交互以导向流并创建飞溅,并使用加速器创建喷射和其他效果。

Bifröst 对象、节点和属性

Bifröst 模拟的效果由场景中不同对象和节点的多个属性控制。编辑并优化模拟时,需要在多个位置调整属性。

将有三个 Bifröst 对象参与模拟:
  • “bifrost”对象包含“bifrostShape”节点,该节点表示 Bifröst 生成的数据。您可以通过在视口中单击该对象的边界框来选择该对象。您可以控制其在视口中的外观,此外,可以直接对其进行渲染。移动此对象对模拟没有任何影响,因为所有计算都在世界空间中执行。
  • “bifrostLiquid”对象将保持“bifrostLiquidContainer”节点,其中包含模拟的全局控件,如体素分辨率和重力向量。它以小图标显示在视口中。与“bifrost”对象类似,移动“bifrostLiquid”对象不会有任何效果。
  • “bifrostMesh”对象为多边形网格,可以保持液体曲面的多边形化版本,用于导出或其他用途。默认情况下,只有在您激活网格之后,它才会有多边形。可以像其他 Maya 网格一样将其移动。

除了 Bifröst 对象,通常有多个 Maya 网格参与模拟。这些是添加到模拟中的网格,例如,作为发射器、碰撞对象等。当您将网格添加到模拟时,“Bifrost”部分将添加到其形状节点。您可以修改这些属性以控制模拟中特定网格的效果。

两种类型的缓存

Bifröst 使用两种不同类型的缓存:
  • 临时缓存是暂时的,用于加快播放速度和允许来回拖动,同时以低等到中等分辨率(高“主体素大小”(Master Voxel Size))预览和调整模拟。临时缓存会实时生成,并在更改模拟和返回到第一帧时重新生成。模拟帧存储在临时文件中(默认情况下在本地磁盘上),并且会将尽可能多的帧保留在内存中。关闭场景时,临时文件将被删除。有关使用临时缓存的详细信息,请参见预览 Bifröst 模拟
  • 用户缓存用于在调整设置完成后存储已完成的模拟。这意味着该模拟可以从磁盘中读取,不需要重新计算。通常,在您对低分辨率模拟的总体流感到满意并且增加了分辨率(低“主体素大小”(Master Voxel Size))后,会生成用户缓存。用户缓存存储在文件中,默认情况下位于项目文件夹 cache/bifrost/ 目录下的子文件夹中。有关用户缓存的详细信息,请参见处理 Bifröst 用户缓存

Bifröst 计算服务器

尽管您直接在 Maya 中创建 Bifröst 效果,但是模拟计算是由 Maya 之外的 Bifröst 计算服务器执行的。这允许 Maya 保持交互的同时在后台计算帧,以便等待剩余部分完成时您可以播放并拖动已处理的帧。

真实世界单位和比例

Bifröst 基于实际可测量数量(如速度和密度)的真实世界单位。这样可以在不同场景比例和时间步中获得真实的、可预测的结果。

默认的 Bifröst 属性值采用 1 个栅格单位等于 1 米的场景比例,该单位为长度的基本 SI 单位(SI 指的是国际单位制,或 Système international)。将忽略“设置”(Settings)首选项中“工作单位”(Working Units)部分的“线性”(Linear)设置。例如,重力产生的默认加速是 9.8,以 SI 单位表示的真实世界值为 m/s2。如果使用其他比例,则应调整此值和其他值。

例如,如果使用 1 个单位等于 1 厘米的比例建模场景,则应将“bifrostLiquidContainer”节点上的“重力幅值”(Gravity Magnitude)更改为 980 (9.8m/s2 = 980cm/s2)。这可能会导致与高速度值(相对于体素大小)相关的问题,在这种情况下,您可能需要调整传输步值(请参见控制 Bifröst 模拟的分辨率和精确度)。

同样,您应更改发射器的“密度”(Density)。默认值为 1000,对应于水的密度(以 SI 单位 kg/m3 表示)。对于 1cm 的比例,您应将此值更改为 0.001(1000kg/m3 = 0.001kg/cm3 或者 1g/cm3)。