Physics 如何制作二维软体物理引擎?
Box2d中刚体的定义为 一块非常坚硬的物质 任意两位之间的距离 块上的物质是完全不可分割的 不变的 这正是我不想要的,因为我想制作2D(最终可能是3D),有弹性、可变形、易碎甚至粘性的物体 我希望从这个社区得到的是一些资源,这些资源教会我物体弯曲、断裂和相互作用背后的数学知识。我不关心这些物体的分子或化学性质,当我试图搜索如何计算一块木头、金属、橡胶、黏液、液体、有机材料等在受到力后的样子时,通常我只找到了这些。 另外,我是一个非常直观的人,所以图表等对我非常有帮助 ================================================================================================================================= 忽略这些问题,它们都很老了,我把它们放在这里只是为了上下文的目的 1.有没有像这样简单的2D软体物理引擎?Physics 如何制作二维软体物理引擎?,physics,game-physics,rigid-bodies,Physics,Game Physics,Rigid Bodies,Box2d中刚体的定义为 一块非常坚硬的物质 任意两位之间的距离 块上的物质是完全不可分割的 不变的 这正是我不想要的,因为我想制作2D(最终可能是3D),有弹性、可变形、易碎甚至粘性的物体 我希望从这个社区得到的是一些资源,这些资源教会我物体弯曲、断裂和相互作用背后的数学知识。我不关心这些物体的分子或化学性质,当我试图搜索如何计算一块木头、金属、橡胶、黏液、液体、有机材料等在受到力后的样子时,通常我只找到了这些。 另外,我是一个非常直观的人,所以图表等对我非常有帮助 =============
最好是免费的还是开源的 2.如果不是的话,我是否有可能不用花上几年的时间就自己做一个呢 3.考虑到我1年的编程经验和bullet是3D的,我可以从bullet和box2d这样的现有引擎开始,简单地转换它们的代码,还是这会导致以后出现更多问题 4.最后,如果我要转换另一个库,它是对box2D已经是2d代码、Bullet已经是软代码的最好更改,还是将两者的源代码混合使用
谢谢 快速和部分的回答:
- 刚体由于其特性而易于建模(您可以使用物理工具,如建模在图元中任意点应用的力)
- 相比之下,非固体元素从几乎固体(想想非常硬的橡胶:它可以移动,但几乎是固体)移动到几乎液体(想想非常软的橡胶,乳胶)。这意味着应用于对象knd的动力学特性非常复杂,并且取决于对象的性质
- 以弹簧为例:独立建模很容易(f=k.x),但创建一个能够对特定情况建模的通用工具是一场噩梦(特别是如果您想到拐角情况:扩展不是无限的,压缩达到较低的点,材质是非线性的……)
- 据我所知,在处理“弹性”材料时,人们出于自己的目的进行自己的建模(不存在通用模型)
另一方面,如果你现在只想要结果,那就不要这样做。这需要很多时间,你可能会失败(很多)。如果您只是想制作游戏,那么请坚持使用现有的库,并在它提供的任何抽象基础上进行构建。根据您需要的可变形对象的复杂性,您可能能够使用box2d模拟它们,用关节或弹簧约束刚体。我过去使用的是xna的box2d克隆(farseer)而且效果很好。希望这能有所帮助。你的问题的物理学分为两个不同的主题: