【问题标题】:Algorithms for Simulating Fluid Flow模拟流体流动的算法
【发布时间】:2010-09-30 10:34:38
【问题描述】:

我有一个游戏创意,需要对围绕各种物体流动的流体进行一些半真实的模拟。想象一个不规则表面上的水银池,向各个方向倾斜。

这是针对游戏的,因此不需要 100% 的物理真实感。最重要的是,计算可以在具有 iPhone 马力的设备上实时完成。

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

有什么建议吗?

【问题讨论】:

    标签: algorithm simulation cellular-automata


    【解决方案1】:

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

    但是,为了在 iPhone 上实现实时性能,将流体模拟为粒子系统然后想办法将粒子渲染为体积质量可能会更有效。我怀疑这是Aqua Forest之类的游戏所采用的方法。

    【讨论】:

    • 我知道我迟到了十多年,但是……第二个链接失效了。
    【解决方案2】:

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

    计算机图形学的流体模拟

    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 之类的工具来研究学术文献。

    【讨论】:

    • 我知道我迟到了将近十年,但是.. 第一个链接已失效。
    • 我比上一个人晚了两年,两个链接都死了
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

        • 有很多具有流畅模拟的游戏。我不认为让这样的游戏在 iPhone 上运行特别牵强。
        • 其实已经有好几款iPhone游戏有流畅的模拟了。
        • 这可能是真的,但是 Julien 和 BobbyShaftoe 指出的那种全 3D 高分辨率模拟(Ron Fedkiw、James O'Brien、Robert Bridson 等)对于在 iPhone 上运行来说成本太高了以互动价格。桌面上的每帧通常是几分钟或几小时。
        【解决方案6】:

        带有颗粒的 SPH 可能是最快启动和运行的方法,在可扩展到粘弹性材料和其他材料方面处于领先地位。明天我将在我的博客上发布我过去几天一直在写的关于这个主题的指南。 (http://blog.brandonpelfrey.com)

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            据我所知,在游戏De Blob 中,一个有色“斑点”在白色环境中移动,并为它撞到的物体着色。当我阅读您对您似乎想做的事情的描述时,不知何故在我脑海中触发了这一点。 (实际上没有玩过游戏,所以我不知道它有多适合。)

            话虽如此,我似乎记得在那个游戏中,blob 的流动性主要是人造的:基本上是一个球体,它的一些轻微的大小/形状变换,一些运动提示和添加的“fuidy sound”,给玩家的印象是一些不太稳固的东西是游戏的主角。不涉及实际的物理或模拟类型编程。

            听起来很适合 iphone 可运行的软件。这对你来说可能够了吗?

            【讨论】:

              【解决方案9】:

              这么少,你必须对粒子建模?

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

              简而言之,LGCA 是元胞自动机的一个子类,其中元胞状态是二进制值的元组,每个元组代表一个元胞与其相邻元胞之间的通道,并且粒子可以通过该通道(通道为1如果它包含一个粒子,0otherwise)。

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

              【讨论】:

                【解决方案10】:

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

                【讨论】:

                  猜你喜欢
                  • 2014-05-24
                  • 2011-10-21
                  • 2010-12-19
                  • 2016-04-02
                  • 2016-03-01
                  • 1970-01-01
                  • 2011-12-24
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多