Fluids —— FLIP DOP

目录

FLIP Object —— FLIP流体对象

 FLIP Solver —— FLIP流体解算器

Particle Motion

Behavior

Reseeding

Separation

Droplets

Vorticity

Rest

Volume Motion

Volume Limits

Collision

Viscosity

Density

Air

Divergence

Surface Tension

Solver 

Narrow Band

TIPS


FLIP Object —— FLIP流体对象

        创建粒子流体对象,包含必要的粒子属性;        

粒子particles属性

  • pscale, 等于particle separation * particle radius scale;
  • v,可继承或初始化设置;
  • viscosity,默认不创建需勾选(默认值为1);
  • temperature,默认不创建需勾选(默认值为0,可在Physical参数面板内设置);
  • 用于不同一的外部自定义属性,然后在传递给场:
    • density、viscosity、divergence

体积场

  • surfacevel(faces),pressure(解释器生成的),source;
  • massdensity,默认值为1000,可在Physical参数面板内设置;
  • viscosity,默认值为0,可在Physical参数面板内设置;
  • divergence,默认不创建需勾选,默认值为0;
  • collision,collisionvel,collisionweights

物理特性

  • Bounce、Bounce Forward
  • Friction、Dynamic Friction 
  • Temperature
  • massdensity、viscosity

 FLIP Solver —— FLIP流体解算器

        FLIP Solver是典型的一个基于粒子和基于体积混合的流体模拟,所有的流体数据存储在粒子,只有粒子需逐帧保存,确保不会发生不必要的流体混合或损失;但pressure projection是在体积(被实时创建)上完成的;流体是被具有pscale属性的粒子表示的,可被POP/DOP力移动;

        当FLIP流体解算时,临时的速度场会被创建;粒子速度会被传递到该场,该场被用于执行流体projection;避免粒子相互叠加及相似方向运动;

        FLIP Solver的优点是每帧只需运行几个子步,然而SPH则需要5-10个子步或更多才能稳定;FLIP利用一些体积场来帮助,约束可能出现的瞬间impulse;可在任何时候引入新粒子,可使用许多POP工作流;

        FLIP Solver内嵌POP Solver,可在Particle Velocity端口使用POP Force或volume source;任何能更新v、targetv、force属性的节点都可使用,及cd、age等;也支持aging、reaping粒子;

Fluids —— FLIP DOP_第1张图片

Particle Motion

Fluids —— FLIP DOP_第2张图片

Under-Resolved Particles,如何处理未解析粒子(属性underresolved(0-1));

  • No Detection,不检测未解析粒子,无属性underresolved
  • Detection Only,仅检测不影响v,生成属性underresolved
    • 沿surface场外推__valid,Max Cells to Extrapolate参数控制外推大小;
  • Treat as Ballistic,脱离surface场视为Ballistic,生成属性underresolved
    • 依据surface转化为fog类型,来判断underresolved属性值(确定受流体力影响大小);
  • Use Extrapolated Velocity,外推__valid,生成属性underresolved
    • 沿surface场外推__valid,Max Cells to Extrapolate参数控制外推大小(确定受流体力影响大小);
  • Kill,删除未解析粒子;
    • 沿surface场外推__valid,Max Cells to Extrapolate参数控制外推大小;

注,ballistic、underresolved、droplet均可控制是否受体积力影响(即粒子v与解算后的vel场);

Behavior

Fluids —— FLIP DOP_第3张图片

Reseeding

Fluids —— FLIP DOP_第4张图片

Single Pass Reseeding,在单个pass内即执行volume density reseeding也执行guide-reseeding,以提高效率;注意输入场的设置;

  • Only Source Seeding,仅Source Surface内seeding粒子,不断补种的粒子会引起noise表面,对缓慢移动尤为明显,此选项会减少此种noise;

注,当设置reseeding值太高,会引起流体体积增大,可降低Particle Radius ScaleDeath Threshold,或降低Surface Oversampling

Separation

Fluids —— FLIP DOP_第5张图片

        由于粒子最终可能会比pscale更靠近,内力是无法分离粒子(velocity project会移除此力),会使;流体随时间压缩;

        通过直接调整粒子位置,使其分离,也确保没有能量被添加到系统;

Droplets

Fluids —— FLIP DOP_第6张图片

        通过droplet属性(0~1),来表示与主体分离的粒子;完全droplet的粒子将不受体积力影响,也不会对vel场产生影响;可缓解分离粒子对光滑表面产生不切实际的大扰乱;

Vorticity

Fluids —— FLIP DOP_第7张图片

        计算速度场vel的旋度curl,然后与粒子现有的vorticity属性融合;

Rest

Fluids —— FLIP DOP_第8张图片

        创建restrest2属性,用于追踪流体位置;可在材质时添加noise;

Volume Motion

Fluids —— FLIP DOP_第9张图片

Velocity Transfer,指定速度的传递模式(从粒子到网格(解析前),然后再传回粒子)

  • FLIP(Splashy),此模式用于飞溅、高能解算,会在表面引入noise,如河流、海洋;
    • v = mix(v, mix(vel-oldvel+v, vel, smoothing), forcescale)
    • vel是体积解算后(如viscosity、pressure等解算),oldvel体积解算前;
  • APIC (Swirly),此模式用于保留涡流并减少表面noise,及较少飞溅的漩涡解算,小规模、高粘性,如岩浆;
    • 直接传递速度场给粒子,并保持流体角动能(Gas Field to Particle);
    • 传递半径基于体素尺寸,使用较小的体素(如Grid scale=1.5)将保留更多流体细节;由于更大的半径和额外的属性,此模式会稍微慢些且使用更多内存;会禁用Under-Resolved Particles选项,因为所有粒子均会完全解析;

Smooth Surface使用更精确的算法追踪surface,对缓慢的流体会更平滑,对河流、瀑布改善不明显,可关闭以提升性能;

Update Surface,控制每子步结束时,如何更新surface以匹配粒子位置;

  • None,补更新,由于粒子位置最后才更新,则surface会稍微滞后与粒子位置
  • Advect(Gas Advect Field),vel驱动surface,比Rebuild快,但如其精确;
  • Rebuild(Gas Particle to SDF),从粒子构建整个surface,最精确的方式但最慢;Narrow Band时禁用;

Update Velocity,控制每子步结束时,如何更新vel以匹配粒子位置;

  • None,补更新,由于粒子位置最后才更新,则vel会稍微滞后与粒子位置
  • Advect(Gas Advect Field),oldvel确定vel,比Rebuild快,但如其精确;
  • Rebuild(Gas Particle to SDF),从粒子构建整个vel,最精确的方式但最慢;Narrow Band时禁用;
Volume Limits

Fluids —— FLIP DOP_第10张图片

Fill New Volume,Volume Limits帧之间改变时,在新的空区域生成粒子;

  • Use Waterline、Use Boundary控制新粒子如何被创建;

Use Boundary Layer,在流体周围维持较薄的区域,以模拟无限tank;

  • 根据提供的surface volume、velocity volume,删除和重新生成粒子,边界处的反应能降低;
  • 进入间隙的粒子,且在指定surface(waterline或surface volume)的上方,则删除;在下方,则赋予新的速度(如velocity volume有指定);

Apply Boundary Velocities,开启时使用velocity volume覆盖边界速度场,禁用时使用附近粒子速度;

  • 如开启waterline,则使用零速度;
Collision

Fluids —— FLIP DOP_第11张图片

Velocity Type,计算碰撞速度的方法,不影响Volume Source引入的碰撞速度场;

  • rigid,不考虑变形,仅角速度或线性速度被使用;
  • point,拓扑不变,考虑变形;
  • volume,以SDF计算变形,不要拓扑不变;

Surface Extrapolation,当流体表面surface位于碰撞体素距离内,会被认为是碰撞对象的一部分;

  • 外推surface有助于流体沿曲面平滑流动,但会产生轻微的粘性;
  • 降低该值,会产生更多飞溅,特别是进入流体;

Volume Fraction Method,计算collisionweights(矢量)采样模式,提高弯曲或倾斜表面压力解算的准确度;

  • Collision Supersampling,通过对于每个体素多次采样碰撞体积的方式;处理方形碰撞对象更好,但会在倾斜表面引入类似摩擦的力;
  • Voxel Face Area,通过每个体素的面被碰撞体积涵盖数量的方式;可最平滑的处理倾斜面,但对方形过于光滑;
  • Tetrahedral,将构成体素的四面体进行计算,以获得平滑准确的结果;
  • None,不计算collisionweights;可使用Gas SDF to Fog自己设置;

Transparency,流体对碰撞体的透明量,以降低碰撞影响且允许流体穿过;

  • Collison Detection因设置为None;
  • collisionweights = collisionweights*(1-transparency) + transparency
Viscosity

Fluids —— FLIP DOP_第12张图片

Density

Fluids —— FLIP DOP_第13张图片

        默认流体有统一的密度(FLIP Object/Physice参数设置),Gas Project Non Divergent Variational 或 Gas Project Non Divergent Adaptive 会使用此场,在粘性及压力解算时以影响速度场;在volume velocity端口输入massdensity场,可任意编辑;

注,设置为multily模式时,可使用相对密度值来缩放默认流体密度;由于不会明确追踪不同密度流体之间的边界,可能需要夸大密度比,以避免过渡混合;

Air

 Fluids —— FLIP DOP_第14张图片

        默认气体不被模拟,会完全视为空隙;会导致气体区域基于流体运动而塌陷或膨胀;强制空气不可压缩会限制液体运动,以将空气区域视为不可压缩;

Tips,当在碰撞容器内,执行空气不可压缩时,应禁用Dynamically Resize Fields,否则可能检测不到空气区域;

  • 在空气区域内不解算速度,只是限制流体的速度以压缩或膨胀空气体积;
  • 在Paticle Fluid Surface内使用Preserve Bubbles以保留流体内的气泡;
  • 禁用Solver Pressure with Adaptivity参数;
Divergence

Fluids —— FLIP DOP_第15张图片

        默认解算会移除速度场的散度,这使粒子既不分离也不收敛;但如想调整粒子间距,使用力是困难的,因为projecttion会消除力;

        可添加每粒子属性,以存储粒子散度的多少,正值扩散负值收缩;在volume velocity端口输入divergence场,可任意编辑;

注,必须开启FLIP Object的Add Divergence Field参数;

Surface Tension

Fluids —— FLIP DOP_第16张图片

        表面张力会使用不规则的变平,并将水拉成droplet;对小规模水非常有用,此时表面张力的影响比重力更重要;对于较大的值,通常需要额外的子步来确保稳定;

        会创建surfacepressure场(surface场的曲率curvature),该场除了用于表面张力,还可用于suction或avoidance等;

        Gas Project Non Divergent Variational 或 Gas Project Non Divergent Adaptive 会使用此场,以影响速度场;

Solver 

Fluids —— FLIP DOP_第17张图片

Narrow Band

Fluids —— FLIP DOP_第18张图片

        当启用时,仅保留流体表面附近的粒子,其余部分由volume表示(如surface或velocity);移除流体深处的粒子可节省内存,并提高解算性能;

注,由于流体大部分是volume表示,Density by AttributeViscosity by Attribute不被支持,需使用Attribute/Field Pair参数;

注,不会创建对应场,需由用户初始化;

TIPS
  • 缓存大量粒子时,勾选Save In Background,以便在写入磁盘时继续解算;删除任何不需要的属性;
  • 激活Reseeding以保持表面细节,将Surface Oversampling值增加到2或以上;
  • 通常不需增加substeps,快速碰撞、改善缓慢移动的粘性流体外观、surface tension,可能需增加;
  • 计算精确的碰撞速度,勾选Cache Simulation,对于大量粒子解算,关闭Allow Caching;
  • Pop Source,非Flip Source;
  • Pop节点均可用,如pop force/pop speed limit/pop drag;
  • 最好添加属性,id、age、vorticity;可通过id属性删除有问题的粒子;
  • xyzdist(primuv)处理高精度碰撞表面;
  • 根据粒子数密度,缩放pscale
    //根据粒子数密度,缩放pscale
    int pc[]=pcfind(0,P,@P,chf("max_dist"),chi("max_pts"))
    @pscale*=float(len(pc))/chi("max_pts");
  • 优化解算和缓存;
    • 缓存前删除不需要的属性、删除相机外的粒子;
    • Delay and Geometry(渲染时);

你可能感兴趣的:(Houdini,#,Fluids,Houdini)