gpt4 book ai didi

c++ - Tilemap 2D 逼真的流体物理

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:48:58 26 4
gpt4 key购买 nike

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

Terraria 使用基于瓷砖的水,我不喜欢它……我想要更高级的东西。

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

我正在考虑的问题是,每个 block 都是 16x16,因此在 1600x900 的场景中,大约有 5000 个图 block 。

所以我需要告诉物理引擎这些瓦片是可碰撞的。当然,还有被认为是不可碰撞的空瓦片。

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

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

最佳答案

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

如果是这种情况,您正在寻找的是“平滑粒子流体动力学”或 SPH,这是一种非常流行的实时 2D 和 3D 流体模拟技术。

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

您可以将粒子渲染为点,如果您有足够的粒子,或者您可以将它们用作派生表面的来源(例如使用行进立方体,但在 2D 中我不会担心)。

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

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

事实上,我认为它们可能是比尝试某种基于图 block 的方法更好的方法,而且您会得到一些更有趣的结果,例如喷射浪花、波浪踢到物体边缘等。很难找到令人愉快的工作,我会试一试。

关于c++ - Tilemap 2D 逼真的流体物理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13791782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com