流体模拟网站
打开浏览器,流体输入一个网址,模拟屏幕上立刻出现一池晃动的网站液体。鼠标拖拽,流体液体跟着流动,模拟撞到边界还会反弹。网站这不是流体动画,是模拟实时的物理计算——每一帧都在解纳维-斯托克斯方程。流体模拟网站把原本跑在超算上的网站东西,塞进了你的流体浏览器标签页。
我第一次接触这类网站是模拟三年前。当时想验证一个烟雾扩散的网站算法,本地跑OpenFOAM太慢,流体编译一次等十分钟。模拟有人推荐了WebGL Fluid Simulation,网站打开就能用。那个页面很简单,黑底,中间一团彩色烟雾。你点一下,烟雾从鼠标位置喷出来,带着涡旋和湍流。说实话,效果比我在实验室用专业软件跑出来的还顺眼。
背后的原理不复杂。GPU并行计算能力上来了,WebGL和WebGPU让浏览器直接调用显卡。流体模拟的核心是网格划分和压力求解。传统做法用CPU逐格迭代,慢。搬到GPU上,几千个网格同时算,帧率轻松跑到60。有个叫Pavel Dobryakov的开发者写过一个经典版本,代码开源,现在很多网站都是基于他的实现改的。
但流体模拟网站不只是好看。我见过一个用于教学的版本,左侧是参数面板,右侧是模拟区域。你可以调粘度、密度、重力方向。把粘度调到接近零,液体变成超流态,像液氦一样爬壁。调高表面张力,水滴在接触面收缩成完美球体。学生能直观看到每个参数对流动的影响,比看课本上的偏微分方程强十倍。
另一个有意思的应用是交互艺术。有个网站叫Fluid Paint,你画一笔,颜料在画布上流淌、混合、干涸。它模拟了颜料颗粒的沉积和溶剂蒸发。画完等几秒,颜色会变暗,边缘出现水渍。这种细节靠贴图做不出来,必须真算。创作者说,他花了三个月调参数,就为了让颜料干掉的过程看起来“对”。
性能是个坎。浏览器里跑流体,精度和速度要折中。多数网站用二维模拟,三维的少。三维计算量指数级上升,普通显卡扛不住。我试过一个三维版本,调低分辨率后能跑,但液体表面像马赛克。开发者用自适应网格,在流动剧烈的地方加密,平缓区域稀疏。这招管用,但实现复杂,开源项目里不多见。
移动端更麻烦。手机GPU性能有限,发热降频快。我拿iPhone跑一个二维模拟,五分钟后背板烫手,帧率从60掉到20。网页没崩,但体验打折。有些网站做了降级方案:检测到移动设备,自动降低网格分辨率,关掉反射和折射。画面糙了,但至少能动。
未来会怎样?WebGPU正在铺开,计算着色器让通用计算更高效。我猜明年会有更多三维流体模拟网站出现,精度逼近桌面软件。还有AI加速的尝试,用神经网络预测流场,跳过部分迭代。效果还不稳定,但方向有意思。
如果你没玩过,搜“WebGL fluid simulation”,挑一个打开。拖拽鼠标,看液体跟着你跑。别想太多,就玩五分钟。你会理解为什么有人愿意花几个月调那些参数——流动本身就有一种让人盯着看很久的魔力。