問題描述
基於脈衝的物理 ‑ 在輕物體上堆疊重物體 (Impulse based physics ‑ Stacking heavy object on light object)
我正在開發一個基於脈衝的物理引擎,但我遇到了質量差異較大的物體的問題。
引擎在每一幀都應用脈衝來處理碰撞。脈沖在每對碰撞對象之間進行多次迭代。如果物體的質量大致相同,這很有效。
但問題是,當將重物體放在輕物體上時,重物體會迫使輕物體進入地面。
問題的原因是,施加在兩個物體之間的衝力太小,所以即使經過多次迭代,也不足以抵消重物上的重力。
p>我相信有辦法準確計算所需的衝動,但我擔心它' 太複雜了?所以我主要是在尋找一些技巧來解決這個問題,但不會改變引擎的工作方式。
感謝您的任何想法!
參考解法
方法 1:
Google for 'Shock propagation', the basic idea is that you sort your contacts in the direction of gravity (usually along the 'y' axis) and during contact resolution you freeze the lower bodies (assign to them infinite mass, that is, invMass = 0.0f and invInertiaTensor should be a zero matrix) so that they don't 'sink'. I haven't implemented that, i'm struggling with my own crappy physics engine.
(by LaZe、user521328)