模拟流体流动的算法

时间:2009-01-09 05:20:12

标签: algorithm simulation cellular-automata

我有一个游戏理念,需要对流体在各种物体周围流动的半真实模拟。想想在不规则表面上的汞池,它会向各个方向倾斜。

这适用于游戏,因此不需要100%的物理真实感。最重要的是,计算可以在具有iPhone功能的设备上实时完成。

我认为某种细胞自动机或粒子系统是可行的方法,但我不知道从哪里开始。

有什么建议吗?

10 个答案:

答案 0 :(得分:10)

Lattice-Boltzmann methods是以离散的细胞自动机方式模拟流体的常用方法。

然而,为了iPhone上的实时性能,将流体模拟为粒子系统然后找出将粒子渲染为体积质量的方法可能更有效。我怀疑这是像Aqua Forest这样的游戏采用的方法。

答案 1 :(得分:8)

这不是我的研究领域,但我相信这被认为是规范的工作:

计算机图形的流体模拟

http://www.akpeters.com/product.asp?ProdCode=3260

另外,看看伯克利动画和模型组

http://www.cs.berkeley.edu/b-cam/

我还推荐像Google Scholar或Citeseer这样的工具,并推销学术文献。

答案 2 :(得分:4)

可能粒子系统是一个很好的起点。沿着这些方向,您可以将SPH(平滑粒子流体动力学)视为一种更加物理的流体模拟方法,仍然依赖于粒子。

答案 3 :(得分:3)

Ron Fedkiw's work is quite stunning in this area.

还有一点评论:流体模拟是数值并行编程和超级计算机,或者至少是高功率,多核桌面的东西。 iPhone可能不会削减它。

答案 4 :(得分:3)

This也可能有用(demo videodemo binarysource code)。

答案 5 :(得分:3)

带有颗粒的SPH可能是起步和运行最快的,可扩展到粘弹性和其他东西。明天我将在我的博客上发布一个指南,这篇关于这个话题的最近几天我一直在写。 (http://blog.brandonpelfrey.com

答案 6 :(得分:1)

我想知道您是否正在为PSP考虑类似Archer Maclean's MercuryMercury Meltdown的内容。

答案 7 :(得分:1)

据我所知,在游戏De Blob中,一个有色的“斑点”在白色环境中移动,着色它撞到的物体。当我读到你对你想要做的事情的描述时,这在某种程度上引发了我的想法。 (实际上没有玩过这个游戏,所以我不知道这个游戏有多好。)

话虽如此,我似乎记得,在这场比赛中,斑点的流动性主要是人造的:基本上是一个球体,它的一些轻微的大小/形状变换,一些运动线索和添加的“fuidy声音”给出了玩家的印象是,不太稳定的东西是游戏的主角。没有涉及实际的物理或模拟类型编程。

听起来非常适合iphone可运行的软件。这或许对你来说足够了吗?

答案 8 :(得分:1)

你需要对粒子进行建模吗?

如果是这样,我建议您查看Lattice-Gas Cellular Automata(LGCA,请参见示例视频here)。

简而言之,LGCA是细胞自动机的子类,其中细胞状态是二进制值的元组,每个元素代表一个细胞与其邻居之间的通道,粒子可以通过该通道传播(通道为1它包含一个粒子,否则为0

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

答案 9 :(得分:0)

基于网格的Navier-Stokes解决方案总是更快,计算速度也是恒定的。