【问题标题】:How to simulate a strong joint between two rigid bodies?如何模拟两个刚体之间的强连接?
【发布时间】:2014-08-14 22:14:32
【问题描述】:

我必须编写自己的物理代码(如果您想知道原因,请参阅here)。模拟单个刚体非常简单。但是我们有由多个刚体组成的组件(模拟空间殖民地),通过旋转轴承连接起来。

旋转轴承应使两个部件牢固地保持在恒定的相对位置和旋转轴上,并允许它们仅通过围绕该轴旋转而变化。

每个部分的主要机制是角动量守恒。这有时会导致轴发生相当大的变化(例如,请参阅here again)。但是,如果一端或另一端连接到另一个对象,则该对象将被拖拽或抵消轴的变化(或两者的某种组合 - 取决于它们的相对质量)。另一个物体也可能有角动量守恒,这让事情变得更加复杂。

我有面向游戏开发者的物理,但它不包括关节。我搜索了互联网,但我能找到的只是关于在各种现成的物理引擎中使用关节的文章。任何人都可以就如何自己模拟这种轴承/关节提供建议吗?

【问题讨论】:

  • 我突然想到,由于这个游戏的特殊限制,我可能可以用一个简单的方法来逃脱:对每个部分应用动量守恒,然后找到加权平均旋转轴所有部分。然后只需将所有零件的轴设置为该轴,重新连接所有已分离的零件,并将整个系统的质心重置为原始位置。 ...但其他建议仍然非常感谢!

标签: simulation physics bearing momentum


【解决方案1】:

简化计算的一个标准技巧是将关节模拟为相当硬的弹簧,其静止长度 = 关节长度。这允许瞬间的异步传播,同时保持场景的构造和物理引擎分开。

标准参考:http://www.gamedev.net/page/resources/_/technical/math-and-physics/a-verlet-based-approach-for-2d-game-physics-r2714

尤其是后半部分,讨论了扩展对象的碰撞。这个想法也适用于与碰撞不同的力和与 Verlet 不同的积分方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    相关资源
    最近更新 更多