Opengl 如何将多个对象渲染为流体模拟的单个对象?

Opengl 如何将多个对象渲染为流体模拟的单个对象?,opengl,fluid,particle-system,Opengl,Fluid,Particle System,我正在尝试在2d游戏中使用粒子进行流体模拟,但有些东西我做不到。在这种情况下,我有更大的粒子,它们在物理上相互作用,并对粒子施加约束,因为它更像水,然后使用它们 粒子与环境碰撞,如墙壁、障碍物 但是画图效果并不好,因为通过使用基于粒子的流体模拟,它在圆粒子之间存在间隙或孔洞,无论如何,我更愿意使用一些图形技巧来消除它。正如你所知,可能使用模糊着色器或其他方法来平滑粒子,但它绝对不可行,它会造成粒子大小,半径可视化是这样一种变化的、不确定的,不能再利用粒子的原始信息与环境碰撞。 请给出一些关于2d

我正在尝试在2d游戏中使用粒子进行流体模拟,但有些东西我做不到。在这种情况下,我有更大的粒子,它们在物理上相互作用,并对粒子施加约束,因为它更像水,然后使用它们 粒子与环境碰撞,如墙壁、障碍物 但是画图效果并不好,因为通过使用基于粒子的流体模拟,它在圆粒子之间存在间隙或孔洞,无论如何,我更愿意使用一些图形技巧来消除它。正如你所知,可能使用模糊着色器或其他方法来平滑粒子,但它绝对不可行,它会造成粒子大小,半径可视化是这样一种变化的、不确定的,不能再利用粒子的原始信息与环境碰撞。 请给出一些关于2d游戏中流体模拟的提示,谢谢

编辑:

太糟糕了,很明显,水的液体是由几个小精灵组成的

更好,但仍然有缺口和漏洞

我上传了这张图片来直观地说明这一点。
如上图所示,绿色圆圈颗粒被分开放置。它看起来不像水流体。模糊粒子这不是我的选择。我怎样才能解决这个问题。

你可以通过求解Navier-Stokes方程来解决


谷歌稍微深入一点,然后你可以找到一些例子和实现。这相当于Netwon的F=M x A,但适用于流体动力学。

在以前的项目中,我发现将每个粒子建模为一个圆,然后将其绘制为粒子实际体大小的两倍,可以获得相当好的效果,但这可能不是您想要的。这对于stackoverflow来说有点广泛。可能更适合gamedev?使用更长范围的衰减函数可以创建更平滑的曲面。图像空间也可以很容易地在2D中绘制。做得很好。我不久前也做了类似的事情。@jozxyqk:谢谢你,metaball?在手机上编程可行吗?它对碰撞和交互友好吗?在2D中更像是元圆:P。是的,在图像空间中它们很便宜。这是一种绘图方法,与碰撞或相互作用无关,但它是一种非常常用的绘制流体的方法,将紧密的粒子聚集在一起,有望形成一个光滑的表面/周长。谢谢你的重播,是的,我使用的是基于粒子的方法,而不是流体动力学。嗯,对不起。。。我只知道Navier Stokes。。。用我从未用过的粒子。。。你试过在Cocos2D中检查样品吗?他们可能会有一个基于流体粒子的样本。为什么在这里投票?Navier–Stokes方程一直用于游戏中。。。他要求提供流体模拟方面的提示,我过去也曾在游戏中使用流体模拟。我一直用Navier Stokes来做这个。。。