4. FLIP流体模拟入门:创建第一个FLIP模拟

好,咱们正式开始玩FLIP流体了。

说实话,我第一次接触FLIP的时候,心里还挺没底的。那时候刚入行,看着Houdini里密密麻麻的参数面板,完全不知道从哪下手。后来做多了才发现——FLIP其实没那么玄乎,核心就那几件事:发射、解算、缓存。

这一章,我带你把整个流程跑一遍。你跟着做,半小时内就能跑通第一个FLIP模拟。

4.1 创建第一个FLIP模拟

打开Houdini,新建一个场景。在tab菜单里搜“FLIP”,你会看到几个选项:

  • FLIP Fluid from Object — 从一个物体发射流体
  • FLIP Tank — 带容器的流体模拟
  • FLIP Source — 单独的发射源

我个人习惯用FLIP Fluid from Object起步。它帮你把发射源、容器、解算器都串好了,省事。

小提示: 第一次跑模拟,别贪大。把容器尺寸控制在2x2x2以内,粒子数控制在10万以下。我见过太多人一上来就搞大场景,结果电脑卡死,心态崩了。

创建步骤:

  1. 先创建一个Sphere,半径0.3左右,放在原点上方
  2. 选中Sphere,按Tab输入“FLIP Fluid from Object”
  3. Houdini会自动生成一个网络:sphere → FLIP_Object → FLIP_Solver → FLIP_Output
  4. 点击播放按钮,你就能看到流体往下掉了

嗯,就这么简单。第一个FLIP模拟,跑起来了。

4.2 发射源设置

刚才那个例子,发射源就是那个球体。但实际项目中,发射源往往更复杂——可能是水龙头、瀑布、或者一个角色身上的水花。

发射源的核心参数在FLIP Source节点里。双击进去,你会看到:

参数 作用 我常用的值
Source Type 发射方式:Volume(体积)或Points(点) Volume
Density 粒子密度,越大粒子越密 1000(水)
Velocity 初始速度,控制流体喷出的方向 0, -5, 0(向下)
Emission Type 一次性发射还是持续发射 Continuous

我曾经在做一个水龙头项目时,死活调不出水流效果。后来发现是Emission Type设成了Single Frame,只发射了一帧。你想想看,水龙头只喷一帧,那能叫水龙头吗?

注意: 持续发射时,记得把Impulse Activation设成类似$F >= 1的表达式,否则粒子只会在第一帧发射。

4.3 粒子参数调整

粒子参数,说白了就是控制流体“看起来像什么”。

FLIP Solver节点里,有几个关键参数:

  • Particle Separation — 粒子间距。越小越精细,但计算量翻倍。我一般用0.02到0.05之间。
  • Collision Separation — 碰撞检测的精度。设得太小,粒子会穿透物体。
  • Viscosity — 粘度。水是0,蜂蜜可以设到10以上。
  • Surface Tension — 表面张力。让流体表面更“紧”,适合做水滴效果。

举个例子:你想做一杯水倒出来的效果。

  • Particle Separation = 0.03
  • Viscosity = 0
  • Surface Tension = 0.01

想做岩浆?

  • Particle Separation = 0.05(不用太细)
  • Viscosity = 50
  • Surface Tension = 0.5

为什么会这样?因为岩浆粘稠,表面张力大,粒子间距可以大一点,省计算资源。

核心原则: 先粗后细。先用大粒子间距跑通效果,再调小做最终输出。别一上来就0.01,你的电脑会哭的。

4.4 缓存与回放

模拟跑完了,怎么保存?

Houdini里,缓存就是把你算好的粒子数据存到硬盘上。下次打开不用重新算。

缓存步骤:

  1. FLIP Output节点上,点右键 → Cache → Cache to Disk
  2. 选择保存路径,建议用$HIP/geo/flip_cache这种变量路径
  3. 设置帧范围,比如1-100
  4. Start Cache

缓存完成后,你会看到节点上多了一个绿色的小点。这时候把FLIP Solver的Display Flag关掉,只显示FLIP Output,就能流畅回放了。

我的习惯: 缓存时用Bgeo格式,它比Bgeo.gz快很多。虽然文件大一点,但回放流畅度完全不一样。

回放时如果卡顿,可以试试:

  • 降低显示粒子数(Display Options里调)
  • Geometry Spreadsheet查看粒子属性,而不是直接看视口
  • 把视口显示模式改成WireframePoints

我曾经在做一个商业项目时,缓存了整整一晚上,结果第二天发现路径写错了,缓存文件全白存了。嗯,从那以后我每次缓存前都会检查一遍路径和帧范围。

4.5 本章知识体系

下面这张图,帮你理清FLIP流体模拟的整个流程:

FLIP流体模拟核心流程 发射源设置 粒子参数调整 FLIP解算 缓存回放 Source Type Density / Velocity Emission Type Particle Separation Viscosity Surface Tension 碰撞检测 力场控制 自适应步长 Bgeo格式 帧范围设置 回放优化 核心原则 先粗后细 · 先跑通再优化 · 缓存前检查路径

这张图把FLIP模拟拆成了四个环节。你每次做流体项目,都可以按这个流程走一遍。熟练之后,你会发现大部分时间都花在粒子参数调整上——因为那才是决定流体“像不像”的关键。


好了,第一个FLIP模拟你已经跑通了。下一章我们会深入粒子参数,看看怎么调出真实的水、油、岩浆效果。