模拟流体流动的算法

15

我有一个游戏想法,需要对流体围绕各种物体进行半逼真的模拟。可以想象一下在不规则表面上倾斜的汞池。

由于这是用于游戏开发,因此并不需要100%的物理真实感。最重要的是这些计算可以在类似 iPhone 这样的设备上实时完成。

我认为某种形式的元胞自动机或粒子系统可能是可行方案,但我不知道从何处入手。

您有什么建议吗?

10个回答

11

Lattice-Boltzmann方法是一种常见的以离散化、元胞自动机方式模拟流体的方法。

然而,为了在iPhone上实现实时性能,将流体作为粒子系统进行模拟并找出一种以体积质量渲染粒子的方法可能更加有效。我猜想这是像Aqua Forest等游戏所采取的方法。


我知道我迟了十多年,但是...第二个链接已经失效了。 - Dinei

8

4
我知道我晚了将近十年,但是第一个链接已经失效了。 - adrian
1
我比上一个人晚了两年,两个链接都已失效。 - ICanKindOfCode

5

4

也许粒子系统是一个好的起点。沿着这条线路,你可以研究SPH(平滑粒子流体力学),这是一种更加物理的方法来模拟流体,但仍然依赖于粒子。


3

1
有很多带有流体模拟的游戏。我认为在iPhone上制作这样的游戏并不是特别遥远的事情。 - Breton
1
事实上,已经有几款iPhone游戏具备了流体模拟功能。 - Kristopher Johnson
可能是真的,但是Julien和BobbyShaftoe所指的完整3D高分辨率模拟(Ron Fedkiw、James O'Brien、Robert Bridson等)在iPhone上以交互速率运行成本太高了。通常需要在桌面上每帧几分钟或几小时。 - batty

3

使用粒子的SPH可能是最快速度上手并具有延展性进入粘弹性和其他领域。我将在明天发布我在这个非常主题上撰写了几天的博客指南。(http://blog.brandonpelfrey.com


2

1
据我所知,在游戏De Blob中,一个有颜色的“blob”在白色环境中移动,碰到的物体会被染色。当我读到你似乎想要做的事情的描述时,这在我的脑海中引发了一些联想。(实际上我没有玩过这个游戏,所以我不知道这是否适合。)
话虽如此,我记得那个游戏中blob的流动性大多是人为的:基本上是一个球体,稍微改变一下大小/形状,加上一些运动提示和添加的“流体声音”,给玩家留下印象,让他们觉得游戏的主角不是完全固体的。没有涉及任何实际的物理或模拟类型的编程。
听起来这很适合作为一款可在iPhone上运行的软件。这对你来说可能已经足够了吗?

1

这么稀疏,你必须对粒子进行建模吗?

如果是这样,我建议您看一下晶格气元胞自动机(LGCA),请参见示例视频此处

简而言之,LGCA是元胞自动机的一个子类,其中单元格状态是二进制值的元组,每个值表示单元格与其邻居之间的通道,并通过这些通道传输粒子(如果通道包含粒子,则通道为1,否则为0)。

然后,更新方案是同步并行的两步函数,它在每个单元格内重新组织通道中的粒子(碰撞),然后将这些粒子传播到目标邻居的相应通道中(传播)。


0

基于网格的 Navier-Stokes 解法始终更快,计算速度恒定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接