【发布时间】:2010-09-30 10:34:38
【问题描述】:
我有一个游戏创意,需要对围绕各种物体流动的流体进行一些半真实的模拟。想象一个不规则表面上的水银池,向各个方向倾斜。
这是针对游戏的,因此不需要 100% 的物理真实感。最重要的是,计算可以在具有 iPhone 马力的设备上实时完成。
我认为某种元胞自动机或粒子系统是可行的方法,但我不知道从哪里开始。
有什么建议吗?
【问题讨论】:
标签: algorithm simulation cellular-automata
我有一个游戏创意,需要对围绕各种物体流动的流体进行一些半真实的模拟。想象一个不规则表面上的水银池,向各个方向倾斜。
这是针对游戏的,因此不需要 100% 的物理真实感。最重要的是,计算可以在具有 iPhone 马力的设备上实时完成。
我认为某种元胞自动机或粒子系统是可行的方法,但我不知道从哪里开始。
有什么建议吗?
【问题讨论】:
标签: algorithm simulation cellular-automata
Lattice-Boltzmann methods 是一种以类似元胞自动机的离散方式模拟流体的非常常见的方法。
但是,为了在 iPhone 上实现实时性能,将流体模拟为粒子系统然后想办法将粒子渲染为体积质量可能会更有效。我怀疑这是Aqua Forest之类的游戏所采用的方法。
【讨论】:
这不是我的研究领域,但我相信这被认为是典型的工作:
计算机图形学的流体模拟
https://www.routledge.com/Fluid-Simulation-for-Computer-Graphics/Bridson/p/book/9781482232837
另外,看看伯克利动画和建模小组
https://web.archive.org/web/20090116020253/http://www.cs.berkeley.edu/b-cam/
我还推荐使用 Google Scholar 或 Citeseer 之类的工具来研究学术文献。
【讨论】:
This 可能也很有趣(demo video、demo binary、source code)。
【讨论】:
也许粒子系统是一个很好的起点。沿着这些思路,您可以将 SPH(平滑粒子流体动力学)视为一种更加物理的流体模拟方法,它仍然依赖于粒子。
【讨论】:
Ron Fedkiw's work is quite stunning in this area.
还有一条评论:流体模拟是数值并行编程和超级计算机的东西,或者至少是高功率、多核台式机。 iPhone 可能不会削减它。
【讨论】:
带有颗粒的 SPH 可能是最快启动和运行的方法,在可扩展到粘弹性材料和其他材料方面处于领先地位。明天我将在我的博客上发布我过去几天一直在写的关于这个主题的指南。 (http://blog.brandonpelfrey.com)
【讨论】:
我想知道您是否正在为 PSP 考虑类似 Archer Maclean's Mercury 或 Mercury Meltdown 的东西。
【讨论】:
据我所知,在游戏De Blob 中,一个有色“斑点”在白色环境中移动,并为它撞到的物体着色。当我阅读您对您似乎想做的事情的描述时,不知何故在我脑海中触发了这一点。 (实际上没有玩过游戏,所以我不知道它有多适合。)
话虽如此,我似乎记得在那个游戏中,blob 的流动性主要是人造的:基本上是一个球体,它的一些轻微的大小/形状变换,一些运动提示和添加的“fuidy sound”,给玩家的印象是一些不太稳固的东西是游戏的主角。不涉及实际的物理或模拟类型编程。
听起来很适合 iphone 可运行的软件。这对你来说可能够了吗?
【讨论】:
这么少,你必须对粒子建模?
如果是这样,我建议您查看Lattice-Gas Cellular Automata(LGCA,参见示例视频here)。
简而言之,LGCA 是元胞自动机的一个子类,其中元胞状态是二进制值的元组,每个元组代表一个元胞与其相邻元胞之间的通道,并且粒子可以通过该通道(通道为1如果它包含一个粒子,0otherwise)。
然后更新方案是一个同步并行两步函数,它在每个单元内的通道之间重组粒子(碰撞),然后将这些粒子传播到目标邻居的相应通道(传播)。
【讨论】:
基于网格的 Navier-Stokes 解决方案总是更快且计算速度恒定。
【讨论】: