控制 Bifröst 模拟的分辨率和精确度

有多个属性可以控制 Bifröst 模拟的分辨率和精确度。最重要的一项是“主体素大小”(Master Voxel Size),但您也可以调整控制对象的体素化以及传输步数和粒子分布。

主体素大小(Master Voxel Size)

bifrostLiquidContainer 节点上的“主体素大小”(Master Voxel Size)属性可控制液体和发射器的总体分辨率。该值以世界空间单位表示,因此适当的值取决于场景的比例。值越低,提供的细节越多,但需要的内存和计算时间也越多。

通常,在您调整各种设置时使用较高值以获得快速预览。但对于精确预览,该值应该小于模拟的最小特征。例如,如果希望液体通过碰撞对象中 0.2 单位的孔排放,则“主体素大小”(Master Voxel Size)应为 0.1 或更小值。

对模拟的总体流感到满意后,可以减少“主体素大小”(Master Voxel Size),以便使用更高的分辨率来渲染液体或生成网格。

体素化

每个发射器、碰撞对象和加速器都有一个“转化”(Conversion)属性部分,控制如何体素化网格。
  • 对于平面和其他薄对象,“模式”(Mode)应设置为“壳”(Shell)并且“厚度”(Thickness)(在使用加速器情况下为“衰减带宽”(Falloff Bandwidth))应设置为 1.0 或更大值以获得最佳效果。
  • 对于其厚度足以包含多个体素的实体对象,“模式”(Mode)应设置为“实体”(Solid)“厚度”(Thickness)(或“衰减带宽”(Falloff Bandwidth))可以设置为 0.0,以更接近网格曲面,甚至设置为负值,以根据其法线收缩体积。但是,如果碰撞对象或其他对象中出现“洞”这样的问题,请尝试增加此值。

“碰撞”(Collision)“加速”(Acceleration) “体素比例”(Voxel Scale)

“bifrostLiquidContainer”节点的“碰撞”(Collision)“加速”(Acceleration)属性部分中的“体素比例”(Voxel Scale)属性可分别为所有碰撞对象和所有加速器的体素化提供附加控制。它们用作“主体素大小”(Master Voxel Size)的倍增。
  • 大于 1.0 的值会产生更粗糙的体素。当您不需要精确的碰撞或加速时,可使用该设置在某种程度上降低内存需求并加快计算,同时保持液体本身的分辨率不变。
  • 介于 0.0 和 1.0 之间的值会产生更精细的体素。如果您需要为碰撞或加速使用更高的精确度,但不希望提高整体的分辨率(例如,如果您有一个窄通道或精细喷嘴),则该设置非常有用。

传输步数

如果遇到问题(例如体积丢失、粒子聚束、自发爆炸或通过碰撞对象泄漏),则应尝试调整“bifrostLiquidContainer”节点的“发射”(Emission)组中的传输步数属性。处理快速移动的模拟时,此方法尤为有效。

增大“传输步长自适应性”(Transport Step Adaptivity),以强制性地将粒子移动分为更多个时间子步长,从而产生计算速度更慢但更精确的模拟。对于移动非常快速的模拟,还需要增大“最大传输步数”(Max Transport Steps)

粒子分布(Particle Distribution)

“bifrostLiquidContainer”节点的“粒子分布”(Particle Distribution)组中的属性可控制曲面处和液体内部每个体素的粒子数,以及曲面层的深度。通常,粒子数越多,细节就越多,内存需求也就越高且计算越慢。通常,内部体素需要的粒子数比表面处少,因为要对表面进行渲染或网格划分。

时间步数

如果仍然遇到问题,例如,使用快速移动的碰撞对象时体积丢失,则可以通过 BIFROST_GRAPH_STEP_ADAPTIVITY、BIFROST_GRAPH_STEP_MAX 和 BIFROST_GRAPH_STEP_MIN 环境变量启用时间步。请参见Bifröst 环境变量

注: 之前,仅在模拟的第一帧上执行过一次迭代。