【问题标题】:Simulating fluid flow over a heightmap模拟高度图上的流体流动
【发布时间】:2011-10-21 06:07:03
【问题描述】:

我正在寻找一种方法来估计在高度图上移动的流体体积。我能想到的最简单的解决方案是将其近似为大量未绘制的小直径(

实施将包括使用能够模拟球体运动的物理引擎,例如 JigLibX。为了确定平面的高度,我正在考虑对位于分组顶层的每个球体的最大高度进行平均。

我不希望性能很好,但它可以实时处理吗?如果没有,我可以使用这个模拟来预烘焙流线吗?

我希望这是有道理的,我真的想要关于这是否可行,或者是否有更好的方法来解决这个问题的意见/建议。

感谢您的帮助,Venatu

(如果相关,我的目标平台是 XNA 4.0,使用 C#。此时仅 Windows,因此 PhysX/Havok 是模拟的可能性,但我更喜欢托管解决方案)

【问题讨论】:

标签: c# physics fluid heightmap


【解决方案1】:

到目前为止,我还没有使用诸如 PhysX 之类的东西来实时看到逼真的流体动力学 - 可能是因为所需的计算太复杂了!在我看来,您的方法的问题在于所有这些球体安定下来时的静止接触,这会占用大量的处理能力。许多静止的接触点以很快消耗性能而臭名昭著,即使在最强大的台式机上也是如此。

如果您要沿着这条路线走,那么我建议您使用基于弹簧的物理学将流体建模为弹性但实体,其中施加到水的一部分的力将使用弹簧传播到其余部分。这使您可以选择为弹簧设置一个断裂点,并在发生这种情况时将主体分成两个或多个主体(反之亦然)。这可以为您提供喷雾之类的基础。在性能方面,它也是一种更通用的方法,因为您可以选择用于近似模型的粒子和弹簧的数量。

这是一个大而复杂的话题,但我希望至少能提供一些见解!

【讨论】:

    【解决方案2】:

    最流行的实时模拟流体方法是平滑粒子流体动力学

    几个有用的链接:

    http://en.wikipedia.org/wiki/Smoothed-particle_hydrodynamics

    http://http.developer.nvidia.com/GPUGems/gpugems_ch38.html

    http://www.plunk.org/~trina/thesis/html/thesis_toc.html

    除了模拟本身之外,您还需要一些专门的宽相位碰撞检测算法,例如扫描和修剪或散列单元。

    您是对的,没有完整的流体动力学二维解决方案。

    【讨论】:

      猜你喜欢
      • 2010-09-30
      • 2014-05-24
      • 2013-06-17
      • 2019-10-18
      • 1970-01-01
      • 2010-12-19
      • 2013-03-25
      • 2016-04-02
      • 1970-01-01
      相关资源
      最近更新 更多