我有一个体素对象的3D矩阵,我想用它来存储一些基本物理原理的状态。这里的意图是在视频游戏中实时表示音量(~30FPS) 。 我想尝试使该卷具有以下功能: 1.存储各种重量的流体和气体类型,并遵循基本的交互原则。例如,氧气比水轻。 2.能够确定压力。 3.能够与'实体'对象进行交互。所以一个空心的3D盒子可以存储一些不会泄漏的东西。
所有这些都非常基础,可以放弃任何“准确性”测试。
乐于接受想法以及任何体面的资源以供进一步阅读。然而,我会认为我不相信我有能力拿纸或高级方程并滚动我自己的库。
答案 0 :(得分:4)
嗯,多流体模拟并不容易。你可以做的是使用SPH(平滑粒子流体动力学),因为这种方法允许相对简单的复杂界面模拟。如果我是正确的,它也广泛用于游戏/动画行业,例如Blender将其用于流体模拟。我建议您在研究更复杂的事情之前先尝试进行单一流体模拟。做好准备,这需要付出相当大的努力,并且取决于您要求并行化的准确度/分辨率类型。如果您对SPH的主题有更多疑问,我会尝试回答它们。
答案 1 :(得分:2)
我所看到的3D图形的常用方法是基于Navier-Stokes方程的基于体素的实现建模。搜索这个应该提供很多关于在代码或甚至现成的库中实现这种方法的方法的论文,但是正如Azrael3000所说的那样,计算流程就像听起来一样困难 - 并且非常数学很重。值得庆幸的是,它也可以很容易地分成许多线程,因此获得30FPS的最佳方法是将计算推送到GPU上。
要记住的另一件事是'体素'和'框架'是图形术语。方程式(连续函数记忆)的方法称为 FDTD - 有限差分时域。用英语表示将该字段作为时间和空间中的离散点进行采样。