Tilemap 2D逼真流体物理

Tilemap 2D realistic fluid physics

本文关键字:2D Tilemap      更新时间:2023-10-16

我有兴趣尝试为2D游戏创建逼真的流体(水)。这个游戏类似于Terraria。我听说过如何在场景中拍打一堆碰撞的粒子并在其上渲染,瞧,逼真的水。

Terraria使用瓷砖水,我不喜欢。。我想要更高级的。

我曾考虑过使用子弹3D物理(box2d有我能达到的极限)。对于非碰撞粒子效果,我正在考虑使用类似SPARK的东西,因为我认为这会让我两全其美。

我想的问题是,每个块都是16x16,所以在1600x900的场景中,大约有5000个瓷砖。

所以我需要告诉物理引擎这些瓦片是可冷却的。当然,也有一些空心砖被认为是不可冷却的。

有人对此有想法吗?语言是C++,但我怀疑这是否相关。

编辑:我想我将不得不屈服,使用基于网格的水。我想,回想起来,基于粒子的方法只会让一切变得更加困难,但有什么好处呢?

您的问题是关于平铺流体的,但实际上您似乎在问基于粒子的方法。

如果是这样的话,你要找的是"平滑粒子流体动力学",或SPH,这是一种非常流行的实时二维和三维流体模拟技术。

是的,它基本上只是一个粒子系统,每个粒子都以合理(数学上稳定)的方式对环境中的力(重力、碰撞等)做出反应,并结合一个约束,即它们必须保持一定的距离,才能使流体不可压缩。

如果有足够的粒子,可以将粒子渲染为点,也可以将它们用作导出曲面的源(例如,使用行进立方体,尽管在2D中我不会担心这一点)。

http://en.wikipedia.org/wiki/Smoothed-particle_hydrodynamics

它的优点是相对容易编码,而且确实可以在GPU上加速。

事实上,我认为它们可能是一种比尝试某种基于瓷砖的方法更好的方法,而且你会得到一些更有趣的结果,比如浪花飞溅、波浪拍打物体边缘等。想要让一些令人愉快的东西发挥作用并不难,我会试一试。