Bifröst“自适应性”(Adaptivity)属性

在 bifrostAeroProperties 和 bifrostLiquidProperties 属性中都可以找到“自适应性”(Adaptivity)属性。它们可用于自动调整分辨率,以便在所需的时间和位置提供最多的细节,而不会浪费内存和计算时间(如果不需要)。

空间(Spatial)

启用
对于液体模拟,此选项允许较低分辨率的体素位于通常不需要细节的液体中心。在沿与碰撞对象的边界和沿自由曲面(即与空气的边界)快速移动的区域中,仍保持由“主体素大小”(Master Voxel Size)设置的最大分辨率。请参见控制空间自适应性
对于 aero 模拟,此选项需要一个或多个自适应网格才能具有效果(请参见使用自适应网格)。在自适应网格内使用最大体素分辨率,而在其他位置使用较低的分辨率。
通常,除非遇到问题,否则应该使此选项保持启用状态以减少内存和计算时间。
“删除超限粒子”(Delete Exceeding Particles)(仅限液体)
低分辨率区域中的每体素粒子数超过阈值时,移除一些粒子。如果在空间自适应模拟和非自适应模拟之间遇到体积丢失或其他大的差异,则禁用此选项。

“传输”(Transport)“时间步”(Time Stepping)

“传输”(Transport)“时间步”(Time Stepping)设置控制为每个帧执行计算的次数。较多的迭代可能导致较高的精确度,代价是计算时间较长。如果遇到问题(如体积丢失、自发爆炸、粒子聚束和碰撞对象泄漏),则可以尝试调整这些设置。

  • “传输”(Transport)设置控制在执行压力计算后用于沿体素速度场平流传递粒子的迭代次数。如果遇到问题(如粒子穿过静态碰撞对象),则良好的选择通常是首先调整这些设置,因为它们可能会解决问题,无需很多的附加计算时间。但是,在每次迭代中,不重新计算压力,且不重新体素化碰撞对象和其他实体 - 这意味着“传输”(Transport)设置可能对快速移动的碰撞对象和其他更复杂的情况没有帮助。
  • “时间步”(Time Stepping)设置控制每帧的整个模拟(其中包括体素化、压力和传输相位)的迭代次数。这些设置可大大提高精确度(尤其是对于高速度),但是也可能导致计算时间长得多。

两组控制协同工作,以便“传输”(Transport)设置控制每个时间步内传输相位的迭代次数。换句话说,每个帧都可能包含多个时间步,具体取决于“时间步”(Time Stepping)设置,并且每个时间步都可能包含多个传输步,具体取决于“传输”(Transport)设置。

这两组控制以类似的方式工作:
  • 始终为每个帧至少执行“最小步数”(Min Steps)次迭代。这意味着可以强制某些数目的子步,即使粒子不是在非常快速地移动。但是,改为调整“自适应性”(Adaptivity)通常更好,这样就不会导致不必要的计算。
    注: 仅在模拟的第一帧上执行一次迭代。
  • “自适应性”(Adaptivity)值控制是否触发其他子步。可能为每个帧执行不同次数的迭代,具体取决于粒子在该帧中移动多远和多快。值处于非线性比例上。
    • 在值 0.0 上,粒子可以移动实际上无限的距离,而不触发进一步的子步。
    • 在 0.1 上,在触发进一步的子步之前,粒子最多可移动 10 体素长度。
    • 在 0.32 上,在触发进一步的子步之前,粒子可移动大约 5 体素长度。
    • 在 0.5 上,在触发进一步的子步之前,粒子最多可移动 1.0 体素长度。
    • 在 0.75 上,在触发进一步的子步之前,粒子可移动大约 0.5 体素长度。
    • 在 1.0 上,在触发进一步的子步之前,粒子最多可移动 0.001 体素长度。

    调整设置时,要谨慎操作以免一次增加“自适应性”(Adaptivity)太多,特别是值接近 1.0 时。这样做可能会导致不必要的长时间计算。

    另请注意,距离是以体素长度度量的。这意味着较低的“主体素大小”(Master Voxel Size)可能对给定速度的粒子触发附加的迭代。

  • 之前,为每个帧执行过的迭代次数不超过“最大步数”(Max Steps)。这提供了对执行的总计算量的限制。
  • 但是,粒子将始终按其速度和帧长度所需的整个距离移动。这意味着,粒子可能不会始终遵循“自适应性”(Adaptivity)所设置的限制。例如,如果“自适应性”(Adaptivity)设置为 0.5,但是“最大步数”(Max Steps)非常低,则快速粒子可能无法在 1 体素长度的步数内经过整个距离 - 在这种情况下,每步的长度大于 1 体素长度才能移动整个距离。
“传输时间比例”(Transport Time Scale)(仅限“传输”(Transport)
更改粒子流的速度。大于 1.0 的值会加快流动,而不引入任何新的速度或加速;而介于 0.0 和 1.0 之间的值会减慢速度。

结果实际上可能不正确,但如果您只想快速重定时模拟,这种方法对您比较有效。由于这可能会导致不必要的负面影响,尤其是在极端设置时,因此请务必注意。