【问题标题】:Impulse based physics - Stacking heavy object on light object基于脉冲的物理 - 在轻物体上堆叠重物体
【发布时间】:2010-11-27 14:08:17
【问题描述】:

我正在开发一个基于脉冲的物理引擎,但我遇到了质量差异较大的物体的问题。

在每一帧,引擎都会应用脉冲来处理碰撞。脉冲在每对碰撞对象之间进行多次迭代。如果物体的质量大致相同,这将很有效。

但问题是,当将重物放在轻物上时,重物会先将轻物压入地面。

问题的原因是,施加在两个物体之间的脉冲太小,所以即使经过多次迭代,也不足以抵消重物体上的重力。

我相信有一些方法可以准确计算所需的冲动,但我担心它太复杂了?所以我主要是在寻找一些技巧来解决这个问题,而不是改变引擎的工作方式。

感谢您的任何想法!

【问题讨论】:

  • 你需要支持(至少)身体和地面的弹性变形。
  • 你如何计算冲动?
  • 我计算每次碰撞时的冲量,就好像它不受任何其他碰撞的影响一样。但是通过迭代它通常会找到正确的“总冲动”。

标签: physics game-physics


【解决方案1】:

Google 的“冲击传播”,基本思想是您按重力方向(通常沿“y”轴)对接触进行排序,并在接触解析期间冻结下半身(分配给它们无限质量,即也就是说,invMass = 0.0f 和 invInertiaTensor 应该是一个零矩阵),这样它们就不会“下沉”。我还没有实现,我正在为自己的糟糕物理引擎而苦苦挣扎。

【讨论】:

  • 感谢您的建议,我会调查的。我认为这可能有助于解决这种与重力有关的特定情况。但是,我真的很想找到一个更通用的案例解决方案。例如,如果向心力会迫使物体相交,我不知道如何通过冲击传播来解决这个问题。
  • 我正试图弄清楚如何实际排序...我真的应该按 y 轴位置将其分块还是进行实际的路径成本分析?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多