oimo.io 的模拟作品用了哪些技术?

更新时间

oimo.io 是开发者 shr 的个人作品站,站内作品几乎都是浏览器端实时物理/流体模拟。从页面列出的作品说明看,核心技术路线可以归为四类:WebAssembly + SIMD 用于加速水滴模拟,GPGPU 用于毛球、烟雾、流体、纸片群等并行计算,MLS-MPM 用于 3D 流体、水、果冻,PBD 用于弹性体,另有 Marching Cubes 相关的体素工具。如果你关心的是“这些效果在浏览器里怎么跑起来”,下面按技术逐项拆开。

WebAssembly + SIMD:Drops

页面中 Drops 的说明是:

リアルなしずくのシミュレーション。WebAssembly を使って SIMD で高速化。 Realistic droplet simulation. Accelerated with SIMD using WebAssembly.

这条信息量不大但很关键:它明确把“WebAssembly”和“SIMD”作为加速手段写进了作品描述。可以理解为,水滴这类需要大量数值迭代的模拟,用 WebAssembly 承载计算内核,再借助 SIMD 做数据级并行,从而在浏览器里维持实时性。作品日期为 2025/01/04,是站内较新的一件。

GPGPU:并行模拟的通用底座

站内多件作品标注了 GPGPU(通用 GPU 计算),用途是把模拟计算放到 GPU 上并行执行:

作品 说明中的技术点 日期
Interactive Marimo GPGPU による毛玉のシミュレーション 2023/11/19
Water3D MLS-MPM による 3D の流体シミュレーション。GPGPU で高速化 2022/05/19
Jelly MLS-MPM によるゼリーのシミュレーション。GPGPU で高速化 2022/05/06
Chill GPGPU で煙シミュレーション 2021/08/16
Sea of Papers GPGPU による並列シミュレーション 2021/06/22

可以看出 GPGPU 不是某一类模拟的专属,而是站内并行计算的通用底座:粒子、烟雾、流体、纸片群都能挂上去。Marimo 的“毛球”模拟和 Sea of Papers 的“纸片大群”都属于个体数量多、彼此交互的计算,正好适合 GPU 并行。

MLS-MPM:3D 流体、水与果冻

MLS-MPM(Material Point Method 的一个变体)在站内出现三次,都是物质模拟:

  • Water3D(2022/05/19):3D 流体模拟,GPGPU 加速。
  • Jelly(2022/05/06):果冻模拟,GPGPU 加速。
  • Water(2022/01/29):流体计算,支持加速度传感器。

同一套方法能覆盖流体和弹性软体,说明它适合处理连续介质的形变与流动。Water 还额外支持加速度传感器,意味着移动端倾斜设备可能影响模拟表现。

PBD 与 Marching Cubes:弹性体与体素工具

  • The Blob Toy(2023/07/13):用 PBD(Position Based Dynamics)模拟弹性体,说明是“よく弾む物体で遊ぶ”(玩弹跳物体)。
  • MC Table Generator(2022/06/10):为 Marching Cubes 方法生成查找表的工具。Marching Cubes 常用于从体素或标量场提取等值面,这个工具本身偏开发辅助,不是可玩的模拟。
  • SandVox Simulator(2022/01/23):体素 + 箱庭游戏,可撒布各种元素并分享作品。

其他值得注意的作品

  • Interactive Wet Cloth Simulation(2023/11/06):湿布与流体的真实耦合模拟。
  • Interactive Pudding(2024/07/13):猫形布丁模拟器,可摇晃拍打。
  • Interactive Life Universe(2022/12/14):无限递归的康威生命游戏宇宙。
  • Just a Pool(2022/11/11):VRChat 世界,可与真实 3D 流体互动。
  • Bubbles(2022/11/08):肥皂泡模拟,泡泡可以粘在一起。
  • HGSL(2022/04/10):可编译输出 GLSL 的自制着色语言。
  • Clock(2022/02/10):由特殊物理引擎驱动的数字时钟。
  • Udon(2021/02/2x):乌冬面模拟器,鼠标拖拽互动。

想深入研究,从哪里入手

如果你的目的是参考实现而非单纯游玩,可以按技术分层看:

  1. 先看 GPGPU 类作品(Marimo、Chill、Sea of Papers),它们把并行计算框架暴露得最直接,适合理解站内通用的 GPU 计算模式。
  2. 再看 MLS-MPM 三件套(Water3D、Jelly、Water),对比同一方法在流体与软体上的表现差异。
  3. 最后看 Drops,它是唯一明确标注 WebAssembly + SIMD 的作品,适合研究浏览器端非 GPU 路线的加速方案。
  4. HGSL 和 MC Table Generator 属于工具型产出,前者涉及着色语言编译,后者涉及等值面查表,适合有对应需求的开发者。

需要注意,页面只给出了作品名、简介和日期,没有公开源码或实现细节。要深入只能从作品行为反推,或看作者是否在别处有技术分享。