我有一个体素对象的3D矩阵,我想用它来存储一些基本物理原理的状态。这里的目的是在视频游戏中实时(~30FPS)表示体积。我想试着有以下的体积: 1.储存各种重量的流体和气体类型,并遵循基本的相互作用原则。例如,氧气比水轻。2.能够确定压力。3.能够与“实心”对象交互。因此,一个中空的3D盒子可以存储一些不会“泄漏”出来的东西。
所有这些都可以是非常基础的,可以放弃任何“准确性”测试。
乐于接受想法,以及任何好的资源,以供进一步阅读。然而,我会假设,我不相信我有能力拿一篇论文或高级方程式来滚动我自己的库。
发布于 2012-03-02 16:53:28
嗯,多流体模拟并不是很容易。您可以使用SPH (平滑粒子流体动力学),因为此方法允许对复杂界面进行相对简单的模拟。如果我没记错的话,它也被广泛应用于游戏/动画行业,例如Blender将其用于流体模拟。我建议你在研究更复杂的东西之前,先尝试做一个单一的流体模拟。做好准备,这将需要相当多的努力,并根据您正在寻找的精度/分辨率的类型,将需要并行化。如果你有更多关于SPH的问题,我会尝试回答他们。
发布于 2012-03-02 18:01:41
我所见过的3D图形中通常的方法是基于体素的Navier-Stokes方程的实现。对此进行搜索应该会给出许多关于在代码甚至现成的库中实现该方法的方法的论文,但正如Azrael3000所说的那样,计算流体学像听起来一样困难-而且非常繁重的数学。谢天谢地,它也可以很容易地被分成多个线程,所以达到30FPS的最好方法是将计算推到GPU上。
另一件要记住的事情是“体素”和“帧”是图形术语。这种求解方程(记住是连续函数)的方法被称为时域有限差分法( FDTD )。这在英语中的意思是将场作为时间和空间上的离散点进行采样。
https://stackoverflow.com/questions/9529009
复制相似问题