Импульсная физика - укладка тяжелого объекта на легкий объект - PullRequest
3 голосов
/ 27 ноября 2010

Я занимаюсь разработкой импульсного физического движка, но у меня проблема с объектами с большой разницей в массах.

На каждом кадре двигатель прикладывает импульсы для обработки столкновений. Импульсы применяются в течение ряда итераций между каждой парой сталкивающихся объектов. Это хорошо работает, если объекты имеют примерно одинаковую массу.

Но проблема в том, что, помещая тяжелый объект поверх легкого объекта, тяжелый объект затем заставляет легкий объект упасть в землю.

Причина проблемы заключается в том, что импульсы, приложенные между двумя объектами, слишком малы, поэтому даже в течение ряда итераций этого будет недостаточно для противодействия гравитации на тяжелом объекте.

Я считаю, что есть способы точно рассчитать необходимые импульсы, но я боюсь, что это слишком сложно? Поэтому в основном я ищу некоторые хитрости, чтобы противостоять этой проблеме, но не меняю способ работы двигателя.

Спасибо за любые идеи!

1 Ответ

2 голосов
/ 28 ноября 2010

Google для «Шокового распространения», основная идея состоит в том, что вы сортируете свои контакты в направлении силы тяжести (обычно вдоль оси «y»), и во время разрешения контакта вы замораживаете нижние тела (присваивайте им бесконечную массу, чтоis, invMass = 0.0f и invInertiaTensor должны быть нулевой матрицей), чтобы они не «тонули».Я не реализовал это, я борюсь со своим собственным паршивым физическим движком.

...