设置¶
参考
- 面板:
- 类型:
域
域对象包含整个模拟。流体模拟不能离开域,它要么与边缘碰撞,要么消失,取决于域的设置。
请记住,大域需要更高的分辨率和更长的烘焙时间。你要把它做得足够大,使模拟能在里面进行,但又不能太大,以免计算模拟的时间太长。
要创建一个域,需要添加一个立方体,并对其进行变换,直到它包围住你想要进行模拟的区域。翻译、旋转和缩放都是允许的。要把它变成一个流体域,在
标签中点击 流体,然后选择 域 作为流体的 类型。Note
你 可以 使用其他形状的网格对象作为域对象,但流体模拟器将使用该形状的 边界框 作为域边界。换句话说,域的实际形状仍将是矩形的。
- 域类型
一个流体域可以控制液体或气体流动。液体域将所有与该域相交的液体流动对象都考虑在内。气体域考虑所有与之相交的 烟、火 以及 烟和火 流动对象。不可能动态地改变域的类型。
- 分辨率分区
流体域被细分为许多 "单元",称为 Voxels,构成了流体的 "像素"。这个设置控制了域中的细分数量。更多的细分数量是创建更高分辨率的流体的一种方法。
由于分辨率是以 "分区" 来定义的,较大的域将需要更多的分区来获得与小域相当的分辨率。例如,一个有64个 分辨率分区 的一米立方体将需要128个分区来匹配一个2米立方体。用作基础划分的尺寸是物体边界盒的最长尺寸。为了帮助可视化体素的大小,分辨率分区 可以在三维视口中显示一个小立方体来预览,以显示这些划分的大小。
- 时间比例
控制模拟的速度。低值会导致 "慢动作 "的模拟,而高值可以用来更快地推进模拟(有利于生成用于静态渲染的流体)。
- 使用自适应时间步数
让求解器自动决定何时执行每帧多个仿真步骤。它考虑到最大和最小的时间步数、当前的 帧速率 和 时间尺度 。
- CFL 编号
确定每个网格单元的最大速度,以每个时间步长的网格单元为单位。流体在一个时间步长中只允许移动到这个速度。如果超过这个阈值,求解器将对模拟步骤进行细分。
In general, greater CFL (Courant–Friedrichs–Lewy) numbers will minimize the number of simulation steps and the computation time. Yet it will yield less physically accurate behavior for fast fluid flows. Smaller CFL numbers result in more simulation steps per frame, longer simulation times but more accurate behavior at high velocities (e.g. fast fluid flow colliding with obstacle).
Note
当降低 CFL 数时,建议增加最大时间步数。同样地,当增加 CFL 数时,应调整最小的时间步数。
- 时间步长最大值
每帧允许的最大时间步数。如果需要,求解器将把一个模拟步骤划分为这个数量的子步骤。
- 最小时间步长
每帧允许的最小时间步数。解算器将始终执行每帧至少这个数量的模拟步骤。
- 重力
默认情况下,流体求解器将使用全局场景的重力。这种行为可以在场景设置中禁用。禁用全局重力将启用流体重力选项。
- 空白空间 仅限气体
值低于这个值的体素被认为是空的空间。更多的空白空间可以优化渲染。通过OpenVDB缓存,它还可以减少缓存的大小。
- 在障碍中删除
移除任何与域内障碍物相交的流体体积。
边界碰撞¶
参考
- 面板:
- 类型:
域(气体)
控制域的哪一面将允许流体 "通过 "域,使其消失而不影响模拟的其他部分,哪一面将偏转流体。
气体¶
参考
- 面板:
- 类型:
域(气体)
- 密度浮力
基于气体密度的浮力。
高于0的值将导致气体上升(模拟比环境空气轻的气体)。
低于0的值会导致气体下沉(模拟比环境空气重的气体)。
- 热度浮力
控制气体受温度影响的程度。这个设置对气体的影响取决于每个流量对象的 初始温度:
当流量对象 初始温度 被设置为正值时,高于0的值将导致气体上升,而当流量对象 初始温度 被设置为负值时,气体下沉。
低于0的值将导致与正值相反的结果,即 初始温度 为正值的流动物体发出的气体将下沉,初始温度 为负值的流动物体发出的气体将上升。
请注意,来自不同温度的多个流动物体的气体会混合,升温或降温,直到达到平衡。
- 涡量
控制气体中的湍流量。较高的数值会产生大量的小漩涡,而较低的数值会产生较平滑的形状。
消融¶
让气体随着时间的推移而消散。
- 时间
气体在帧中的消散速度。
- 减慢
Dissolve gas in a logarithmic fashion. Dissolves quickly at first, but lingers longer.
火焰¶
参考
- 类型:
域
- 面板:
- 反应速度
燃料燃烧的速度。数值越大,火焰越小(燃料在走得很远之前就燃烧了),数值越小,火焰越大(燃料在被完全消耗之前有时间流得更远)。
- 火焰烟雾
自动创建的额外烟雾量,以模拟燃烧的燃料。这种烟雾在使用 "火 + 烟" 时最明显:参考:流体对象。
- 涡量
除了全局流体之外,火焰的涡度:涡度。
- 最高温度
火焰的最高温度。较大的数值会使火焰上升得更快。
- 最小值
火焰的最低温度。较大的数值会使火焰上升得更快。
- 烟雾颜色
从燃料中发射的烟雾的颜色。
液体¶
参考
- 类型:
域
- 面板:
液体设置控制模拟所包含的粒子的行为。启用液体复选框将自动为模拟创建一个粒子系统。这个粒子系统可以使模拟的流动可视化。液体粒子的可视化是可选的。流体模拟将利用所有没有附加粒子系统的领域。
Note
禁用液体复选框将删除附加的粒子系统及其设置。
- 模拟方法
确定液体颗粒的模拟方法。
- FLIP
产生一个非常飞溅的模拟,有很多颗粒散布在空气中。
- APIC
产生一个非常有活力但也更稳定的模拟。与 FLIP 相比,液体中的涡流将被更好地保留下来。
- FLIP比率 仅限模拟FLIP:
在更新液体粒子速度时要使用多少FLIP速度。1.0的值将导致一个完全基于FLIP的模拟。完全基于FLIP的模拟会产生更加混乱的飞溅,在模拟更多的液体时,这种模拟是比较好的。当使用较小的数值时,其行为将不那么紊乱,飞溅也更微妙。当模拟液体应该在小范围内的场景时,这是最佳选择。
- 系统最大值
仿真中允许的最大流体粒子数。如果这个字段被设置为非零值,那么模拟将永远不会包含超过这个数量的流体粒子。否则,如果数值为零,求解器将在需要时一直对新粒子进行采样。
- 粒子半径
以网格单元为单位的一个液体粒子的半径。这个值描述了一个粒子所覆盖的面积,从而决定了它周围有多少区域可以被认为是液体。更大的半径会让粒子覆盖更多的区域。这将导致更多的网格单元被标记为液体,而不仅仅是空的。
每当模拟出现泄漏或以不希望的、非物理精确的方式增加体积时,调整这个值是个好主意。也就是说,当液体似乎消失时,这个值需要增加。反之亦然,当产生了太多的液体时,就需要调整。
- 采样
采样颗粒时使用的系数。更高的值会对更多的粒子进行采样。请注意,粒子重新采样发生在每一个模拟步骤。
- 随机性
新的粒子被采样时,其位置有一定的随机性,可以通过这个字段来控制。更高的值将对流入区域的液体粒子进行更随机的采样。如果数值为0.0,所有的新粒子将在其相应的网格单元内被均匀地采样。
当试图创建一个层流(随机性小)或更多的湍流(随机性大)时,这个值可能是有用的。
- 粒子最大值
每个网格单元的最大液体颗粒数。在模拟过程中,一个单元中的液体粒子的数量可以波动。颗粒可以流入其他单元,或者如果它们移动到窄带之外就会被删除。重新取样会考虑到这个最大值而增加新的粒子。
这个值设定了每个单元的颗粒的上限。这也是一个很好的方法来估计你的模拟中可以有多少粒子(也需要考虑网格分辨率)。这在烘焙前和计划模拟时是很有用的。
- 最小值
每个网格单元的最小液体颗粒数。与最大颗粒阈值类似,该值确保每个单元至少有一定数量的颗粒。
- 窄带宽度
控制允许液体颗粒流动的窄带的网格单元的宽度。一个高的值会导致一个较厚的带子,并可能导致流入区域完全被颗粒填满。除非模拟的目的是为了观察液体颗粒,否则建议不要大幅增加带子的宽度,因为更多的颗粒会降低模拟的速度。
在某些情况下,当模拟出现泄漏时,增加这个值可以帮助创造体积。在所有其他情况下,最好保持窄带尽可能薄,因为液体表面包含大多数细节,在液体内部模拟粒子不是对计算资源的最佳利用。
See also
The narrow band is an implementation of Narrow Band FLIP for Liquid Simulations.
- 分数障碍
在流体/障碍物区域(二阶障碍物)启用更精细的分辨率。这个选项可以减少障碍物在域内倾斜时产生的 "阶梯效应"。它还可以使液体在障碍物上的流动更加平稳。
- 障碍距离
决定了流体和障碍物之间的距离。这个值可以用来在倾斜的障碍物上实现更流畅的运动。根据障碍物的坡度,增加这个值可以帮助液体颗粒更好地流过障碍物。将这个字段设置为负值会让液体向障碍物的内部移动。
- 障碍阈值
用于控制小数点障碍物选项的平滑度的值。较小的值可以减少 "阶梯效应",但可能导致粒子粘在障碍物上。
- 烘焙数据,免费数据
这个选项只有在使用 模块化 缓存类型时才可用。烘焙 模拟并存储在驱动器上的流体模拟的基础。气体和液体模拟都可以在此基础上添加细化内容(例如,气体模拟可以添加噪波,液体模拟可以添加网格或二次粒子或两者)。
进展将显示在状态栏中。按 Esc 将暂停模拟。
一旦模拟完成,可以通过按*Free Data*删除缓存。可以暂停或恢复*Bake All*进程。