1

我有一个体素对象的 3D 矩阵,我想用它来存储一些基本物理原理的状态。这里的目的是在视频游戏中实时表示体积(~30FPS)。我想尝试拥有以下容量: 1. 存储各种重量的流体和气体类型,并遵循基本的相互作用原则。例如,氧气比水轻。2.能够判断压力。3. 能够与“实体”对象进行交互。所以一个空心的 3D 盒子可以存储不会“泄漏”出来的东西。

所有这些都是非常基本的,可以放弃任何“准确性”测试。

乐于接受想法以及任何体面的资源以供进一步阅读。然而,我会假设我不相信我有能力拿论文或高级方程式来滚动我自己的图书馆。

4

2 回答 2

4

好吧,多流体模拟并不容易。您可以做的是使用 SPH(平滑粒子流体动力学),因为这种方法允许对复杂界面进行相对简单的模拟。如果我是正确的,它也广泛用于游戏/动画行业,例如 Blender 将其用于流体模拟。我建议您在研究更复杂的事物之前先尝试进行单一流体模拟。请做好准备,这将需要相当多的努力,并且取决于您正在寻找并行化的精度/分辨率类型。如果您对 SPH 主题有更多问题,我会尝试回答。

于 2012-03-02T08:53:28.057 回答
2

我见过的 3D 图形中的常用方法是基于Navier-Stokes方程的基于体素的实现建模的。搜索这个应该会提供许多关于在代码甚至现成库中实现此方法的方法的论文,但正如 Azrael3000 所说,计算流体学与听起来一样困难 - 并且数学非常繁重。值得庆幸的是,它也可以很容易地拆分为多个线程,因此达到 30FPS 的最佳方法是将计算推送到 GPU 上。

要记住的另一件事是“体素”和“帧”是图形术语。方程的方法(记住它们是连续函数)称为FDTD -有限差分时域。在英语中,这意味着将字段采样为时间和空间上的离散点。

于 2012-03-02T10:01:41.290 回答