我如何在Box 2D中建模一个膨胀的流体袋,即什么物理方程在建模时会有用?触摸时水袋会移动,但这是唯一的互动。任何地方的方程式或模型都会非常感激!
答案 0 :(得分:1)
您可以使用库来实现此目的。谷歌的LiquidFun非常好http://google.github.io/liquidfun/
答案 1 :(得分:0)
User99345的答案就是我为一袋液体建模的方式,但如果您想使用未经修改的Box2D库,您可以使用b2EdgeShape
,b2RevoluteJoint
的实例对其进行建模,和b2CircleShape
。无论这种模型是否足够好,你都必须做出决定。
此基础/洞察力......
在看到你的问题之后,我在my dev branch of my fork of Box2D中将一个液体袋的模型放在一起作为Testbed演示。该演示被称为“Bag of Disks”,因为它基本上就是演示模型,它位于文件BagOfDisks.hpp
中。该代码使用一系列由旋转关节连接的边缘形状来对可变形容器进行建模,并用圆形(在我的叉中称为DiskShape
)填充它以模拟液体。如果您构建库和我的fork的Testbed,您可以自己查看模型的外观。
作为一袋液体的模型,我认为我鞭打的代码有以下缺点:
我认为事情可以从用户级别完成以改善模型的行为,但我怀疑可以从用户级别完成更少的工作以提高模型的速度。按用户级别,我的意思是作为Box2D库的用户。
虽然我的fork已经对Box2D库进行了很多更改(特别是在命名中),但我不相信我在演示中所做的事情不能使用原始的Box2D库和语法非常接近地再现。我在第一段中使用b2EdgeShape
,b2RevoluteJoint
和b2CircleShape
的实例说。
至于在Box2D已经使用的方程式之外建模这些物理方程有用,我很遗憾地说我目前不知道。我对此很感兴趣并且正在研究它。当然可以使用物理方程式,但我从Box2D用户级别了解到的最接近的相关工作是将iforce2d放在他的Buoyancy网页中。
希望这个答案对已经说过的内容有所帮助。