我正在开发一个基于脉冲的物理引擎,但我对质量差异很大的物体有问题。

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

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

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

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

感谢您的任何想法!

最佳答案

谷歌的“冲击传播”,基本思想是你在重力方向(通常沿着“y”轴)对你的接触进行排序,并在接触解析期间你卡住下半身(分配给它们无限质量,即 invMass = 0.0f 并且 invInertiaTensor 应该是一个零矩阵),这样它们就不会“下沉”。我还没有实现,我正在努力使用我自己糟糕的物理引擎。

关于physics - 基于脉冲的物理 - 在轻物体上堆叠重物,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4292018/

10-14 08:44