目录
FLIP Container —— 创建容器域及相关场和属性
FLIP Boundary —— 为生成或删除粒子而创建的surface或density VDB
FLIP Volume Combine —— 合并不同精度的FLIP场
FLIP Container —— 创建容器域及相关场和属性
此节点创建并初始化粒子流体的域;连入闭合对象或体积(不必是矩形,也可移动或变形),以自定义形状;无输入,则通过节点参数控制域的尺寸和位置;
- Particle Separation,不仅控制域的精度,还控制粒子和体素的数量,及碰撞对象的精度;
- 该节点还提供流体的物理属性,如density、viscosity;
- 当开启FLIP Solver SOP/Waterline选项,可观察到域边界外也会创建粒子,这是由于受环境影响并向域内流体注入velocity和pressure;在域的边界粒子持续的发射和删除,以维持水线和粒子数量;
- 边界框总是存在的,即使没有waterline;可通过FLIP Boundary SOP测试;
注,当surface粒子时边界粒子也会被考虑,生成的mesh会变大,通过Bounding Box参数剪切;
流体框的大小 = 输入模型边界框 + 间隙
Sources
- source,流体总是在此SDF内创建;
- source -> sourcesurface,补种seed生成粒子(Gas Seed Fluid Particles);
- flipsolver(DOP)/Volume Motion/Solver/Guiding Fields/Source Surface
注,souce、collision、sink激活区域其值,当带宽超过其激活区域会全部填满;
- sink,流体总是在此SDF内移除;
- sink -> sinksurface,删除补种的粒子(Gas Seed Fluid Particles);
- flipsolver(DOP)/Volume Motion/Solver/Guiding Fields/Sink Surface
- velsurface,在此SDF边界使用速度边界条件,以使流体速度不会突然跨过velsurface边界;
- 会先和collision SDF合并,以作为projection_collision(Project Non-Divergent);
- flipsolver(DOP)/Volume Motion/Solver/Collision Fields For Solver/Collision Surface
- vel,通过“velsurface”或“guidingsurface”设置速度时,使用的速度值;
- vel -> guidingvel,复制引导速度到vel(Gas Calculate)及粒子v;
- flipsolver(DOP)/Volume Motion/Solver/Guiding Fields/Guiding Velocity
- vel -> vel,初始化vel场;
- guidingsurface,在pressure projection后,在此SDF内设置速度vel;
- guidingsurface -> guidingsurface,用于计算vel(复制guidingvel);
- flipsolver(DOP)/Volume Motion/Solver/Guiding Fields/Guiding Surface
- pressuresurface,在此SDF的边界应用pressure边界条件;会产生气泡;
- 从surface场移除此SDF,以作为projection_surface;
- flipsolver(DOP)/Volume Motion/Solver/Surface Fields For Solver/Surface
- pressure,在free surface或pressuresurface边界应用;
- 此场被添加到surfacepressure;
- massdensity、viscosity、age,及自定义场;
Collision
- surface
- vel
FLIP Boundary —— 为生成或删除粒子而创建的surface或density VDB
此节点将输入的几何体转化为volume,以控制解算,也可直接连入volume;可Merge多个对象以获得更加复杂的外形;
- source,作为发射源创建粒子,可添加额外的速度;
- Pressure-based sourcing,通过定义Hydrostatic Pressure,填充杯子或水池;达到水位,即停止;
- velocity-based sourcing,会溢出,在整个模拟过程中创建粒子;
- sink,会删除粒子;有负速度或压力,产生吸力效果;
注,仅当想添加或移除粒子(从source或sink)使用;
Pressure-based sourcing
- Uniform Pressure,粒子会沿源对象法线方向发射(在给定的压力下),如给定的压力被达到,则源停止;动画此参数,以约束粒子;在sink模式下,设置为-1可创建吸力效果,正值则会排斥;
- Hydrostatic Pressure,粒子会沿源对象法线方向发射(在给定的压力下),如Water Level被达到,则源停止;动画此参数,以约束粒子;建议值在0~1;在sink模式下,与Uniform Pressure,区别不大;
- Water Level,仅与Hydrostatic Pressure一起才有效,以定义阈值;一旦水平面被达到,则源停止;如填充杯子或水池;
FLIP Collide —— 添加碰撞体
此节点接收2D/3D几何体和volume,作为碰撞体;将对象连入到第四个端口,以将对象转为碰撞体;唯一调整碰撞体精度的方法是FLIP Container SOP/Particle Separation参数,Grid Scale参数谨慎调节;
精确的碰撞体速度对流体解算非常重要,不正确的碰撞速度可能会导致缺少动态飞溅或流体泄漏;
可使用merge连入多个对象,或使用多个FLIP Collide节点;可处理开放或封闭的3D对象,及2D几何体(如grids、planes);碰撞体可移动或变形,默认会计算速度(Point Velocity SOP);
VDB Convex Clip SDF SOP,使用Convex hull裁切SDF;
- 相对于Shrink Wrap/VDB from Polygons/VDB Combine;
FLIP Modify Volume,更新碰撞速度;
FLIP Solver —— 解算器
该解算器是基于粒子和基于体积解算的混合;所有流体数据均存于粒子,只有粒子需逐帧保存,确保不会发生不必要的流体混合或损失;但pressure projection是在体积(被实时创建)上完成的;流体是被具有pscale属性的粒子表示的,可被POP/DOP力移动;
当FLIP流体解算时,临时的速度场会被创建;粒子速度会被传递到该场,该场被用于执行流体projection;避免粒子相互叠加及相似方向运动;
FLIP Solver的优点是每帧只需运行几个子步,然而SPH则需要5-10个子步或更多才能稳定;FLIP利用一些体积场,来帮助约束可能出现的瞬间impulse;可在任何时候引入新粒子,可使用许多POP工作流;
Waterline
会创建初始的水体,如部分填充容器或创建水面(用于交互);默认是特定厚度的水层,是因为narrow band(可加速模拟并降低内存,水面以下的流体由体积或场表示);
第四端口的边界传递,则必须禁用waterline;
Boundary Condition
水一旦到达域的边界就会消亡,且新粒子会被创建以保持平衡;粒子在source band内生成和删除(在域外部周围);该参数也与边界传递相关,如产生翻滚的海浪;对于不接触边界的模拟不必考虑“类型”,如填充杯子;
- Pressure Driven,流体会更飞溅和扰乱,也缺乏稳定;
- Velocity Driven,缺乏扰乱,但更稳定;
Initial Surface
如何填充域的方式,依据 Initial Surface、Waterline、Enable Particle Narrow Band的组合;
Collision
Particle Collisions,依赖FLIP Collide SOP节点的Volume Collide、Surface Collide设置;
- None,禁用碰撞粒子与对象碰撞;
- Particle,如是2D或开放的3D几何体使用此模式;
- Move Outside Collision,如是封闭的3D对象和体积使用此模型;
Fluid Behavior
- 在空气区域内不解算速度,只是限制流体的速度以压缩或膨胀空气体积;
- 在Paticle Fluid Surface内使用Preserve Bubbles以保留流体内的气泡;
- 禁用Solver Pressure with Adaptivity参数;
Visualization
Advanced
FLIP Volume Combine —— 合并不同精度的FLIP场
可将两个不同精度的FLIP场(surface、vel、pressure),融合到一组场中;在FLIP up-res工作流中非常有用,其使用低精度驱动高精度;需使用mask平滑过渡;可仅融合surface场;