模拟在高度图上的流体流动

7
我正在寻找一种方法来近似移动在高度图上的流体容积。 我能想到的最简单的解决方案是将其近似为大量的非绘制小直径球(<0.1m)。 然后,我会在球停留的位置上放置一个表示水面的可见平面。 就我所知,没有托管物理引擎包含内置的流体模拟器,因此提出了这个问题。
实现将使用诸如JigLibX之类的物理引擎,该引擎能够模拟球的运动。 要确定平面的高度,我考虑对处于分组顶层的每个球的最大高度进行平均。
我不指望性能会很好,但它是否适用于实时? 如果不是,我可以使用此模拟来预烘制流线吗?
希望我的表述有意义, 我真的想要得到关于是否可行或是否有更好的方法来处理这个问题的意见/建议。
谢谢任何帮助, Venatu
(如果相关的话,我的目标平台是使用C#的XNA 4.0。目前仅限Windows,因此PhysX / Havok是模拟的可能性,但我更喜欢托管解决方案)

你可能想要查看vterrain.org上列出的研究。特别是有关河流模拟的作品。 - Bart
2个回答

2
我目前还没有看到在实时情况下使用类似PhysX之类的东西来展现逼真的流体动态 - 可能是因为所需计算太过复杂!我认为您这种方法的问题在于所有那些球体的静止接触,因为它们平稳下降需要很多处理能力。许多静置接触点以快速消耗性能而著称,即使在最强大的桌面上也是如此。
如果您采用这种方法,那么我建议将流体建模为一个基于弹簧物理的弹性固体,其中应用于水的力将使用弹簧传播到其余部分。这为您提供了设置弹簧断裂点并在发生时将身体分成两个或更多身体(反之亦然)的选项。这可以为您提供喷雾等内容的基础。从性能的角度来看,这也是一种更加灵活的方法,因为您可以选择使用的粒子和弹簧数量来近似您的模型。
这是一个庞大而复杂的话题,但我希望至少提供一些见解!

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接