Box2d中刚体的定义是
一大堆如此强大的物质 任意两位之间的距离 块上的物质完全是 不变。
这正是我不想要的,因为我想制作 2D (最终可能是3D),弹性,可变形,易碎,甚至是粘稠的物体。
我希望离开这个社区的是资源,它教会我如何弯曲,破坏和互动对象。我不关心这些物体的分子或化学性质,当我试图寻找如何计算一块木头,金属,橡胶,粘性物质,液体,有机物质时,我常常发现这一切。在施加力之后,等等可能看起来像。
另外,我是一个非常直观的人,因此图表等对我来说非常有帮助。
=============================================== =================================
忽略这些问题,它们已经过时了,我只是为了上下文目的而将它们保留在这里
1.这里有没有简单的2D软体物理引擎吗? 最好是免费还是开源?
2.如果不花费数年时间就可以自己创作吗?
3.我可以使用像bullet和box2d这样的现有引擎作为开始并简单地转换他们的代码,或者考虑到我1年的编程经验和子弹是3D,这会导致更多问题吗?
4.最后,如果我要转换另一个库,那么它是最好的改变box2D已经是2d代码,Bullet已经是软代码,还是混合了两个源代码?
谢谢!
答案 0 :(得分:17)
(1)Bullet和PhysX都支持某些容量的可变形对象。 Bullet是开源的,PhysX可以免费使用。它们都有windows,mac,linux和所有主要控制台的端口。
(2)如果你真的知道自己在做什么,你可以一起破解,甚至可能有效。但是,除非你对Box2D的顺序脉冲约束求解器如何工作以及为保持系统稳定所需的措施类型有一定的了解,否则可能会有错误。也就是说,在类似游戏的环境中,有很多方法可以让可变形对象在最小的情况下工作。第一种选择是采用变形的第二(或更高)阶近似。这可以让你以与处理刚性运动相同的方式处理变形,只是现在你有一些额外的自由度。例如,参见以下文件:
http://www.matthiasmueller.info/publications/MeshlessDeformations_SIG05.pdf
第二种方法是压力软体,它基本上将物体建模为一组具有一定距离约束和压力的粒子。这就是PhysX和Bullet所做的,现在它是一种非常标准的技术(例如,Gish使用它):
http://citeseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.4.2828%26rep%3Drep1%26type%3Dpdf
如果你在谷歌周围,你可以找到很多关于实现它的教程,但我不能保证它们的质量。最后,最近有一种尝试使用逼真的弹性模型和有限元类型方法以“正确”的方式尝试变形对象。这仍然是一个积极研究的领域,所以它不适合胆小的人。例如,您可以查看今年SIGGRAPH会议记录中的任意数量的论文:
http://kesen.realtimerendering.com/sig2011.html
(3)可能不是。虽然某些2D风格的游戏可以使用3D物理引擎(例如自上而下类型的游戏)来实现特效。
(4)根据我刚才的说法,你现在应该知道答案。如果你是冒险的,有时间去杀人和学习的意愿,那么我说去吧!当然,一开始会很难,但随着时间的推移,它变得越来越容易。另外,学习新东西很有趣!
另一方面,如果你现在只想要结果,那么就不要这样做。这将花费很多时间,你可能会失败(很多)。如果您只是想制作游戏,那么请坚持使用现有的库并构建它为您提供的任何抽象。
答案 1 :(得分:5)
快速和部分答案:
现在回答:
希望这有帮助
答案 2 :(得分:3)
答案 3 :(得分:2)
根据您需要的可变形对象的复杂程度,您可以使用box2d模拟它们,用关节或弹簧约束刚体。我过去使用box2d克隆为xna(farseer)做了它并且它工作得很好。希望这会有所帮助。
答案 4 :(得分:1)
您的问题的物理分为两个不同的主题:
我不是一丝不苟。通常,模拟材料的弯曲和断裂是非常详细和变化的主题。这需要很长时间。成功的唯一方法就是充分了解科学,以便在限制游戏模型所需的科学范围方面做出明智的捷径。
然而,问题的另一半(建模Inelastic Collisions)是一个更容易实现的目标。
祝你好运!