在高度图上模拟流体流动

我正在寻找一种方法来逼近在高度图上移动的流体体积。 我能想到的最简单的解决方案是将其近似为大量直径较小(<0.1m)的非绘制球体。 然后,我会在球体的“顶部”放置一个代表水面的可见平面,在他们停下来的位置。 据我所知,没有托管的物理引擎包含一个内置的流体模拟器,因此是一个问题。

实现将包括使用诸如JigLibX之类的物理引擎,它能够模拟球体的运动。 为了确定飞机的高度,我考虑平均分组顶层上每个球体的最大高度。

我不期望表现会很棒,但是它是否能够实时平易近人? 如果不是,我可以使用这个模拟来预烘烤流水线吗?

我希望这是有道理的,我真的希望就这样做是否可行提出意见/建议,或者有更好的方法来解决这个问题。

感谢您的帮助,Venatu

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


我还没有实时看到实际的流体动力学,而没有使用像PhysX这样的东西 - 可能是因为需要的计算太复杂了! 当我看到它的时候,你的方法存在的问题将伴随着所有这些领域的稳定接触,因为它们定居下来,这需要很大的处理能力。 许多静止的接触点对于快速进入性能而言是臭名昭着的,即使在最强大的台式机上也是如此。

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

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


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

几个有用的链接:

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

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

你说得对,没有完整的2D流体动力学解决方案。


看看这里:http://varunpant.com/demo/Silverlight/water.html和http://www.varunpant.com/posts/water-simulation,也许http://www.dhteumeuleu.com/multi-流体/

链接地址: http://www.djcxy.com/p/8811.html

上一篇: Simulating fluid flow over a heightmap

下一篇: Using CDN hosted JS libraries for production in Rails 3.1