2010-11-27 4 views
3

임펄스 기반의 물리 엔진을 개발하고 있지만 질량 차이가 큰 물체에 문제가 있습니다.임펄스 기반 물리학 - 라이트 오브젝트에 무거운 물체 쌓기

각 프레임에서 엔진은 충돌을 처리하기 위해 충동을 적용합니다. 임펄스는 충돌하는 각 객체 쌍 사이에서 여러 반복을 통해 적용됩니다. 물체가 거의 같은 질량 인 경우 잘 작동합니다.

하지만 무거운 물체를 가벼운 물체 위에 올려 놓으면 무거운 물체가 가볍게 땅에 떨어지게됩니다.

문제의 원인은 두 개체간에 적용된 충격이 너무 작기 때문에 여러 번의 반복에도 불구하고 무거운 물체에 중력을 반격하기에 충분하지 않다는 것입니다.

필자는 필요한 충동을 정확하게 계산할 수있는 방법이 있다고 생각하지만, 너무 복잡하다고 두려워합니까? 그래서 대부분이 문제를 해결하기위한 몇 가지 트릭을 찾고 있지만 엔진 작동 방식을 변경하지는 않습니다.

아이디어를 제공해 주셔서 감사합니다.

+0

몸체와지면의 탄성 변형 (최소한)을지지해야합니다. – dmckee

+0

어떻게 충격을 계산합니까? – Beta

+0

나는 다른 충돌에서 영향을받지 않은 것처럼 각 충돌에서 충격을 계산합니다. 그러나 iterating을 통해 일반적으로 올바른 "총 충동"을 찾습니다. – LaZe

답변

2

Google의 '충격 전파'에 대한 기본 아이디어는 연락처를 중력 방향 (일반적으로 'y'축을 따라)으로 정렬하고 접촉 해상도 중에 하위 바디를 고정 (무한한 질량, 즉, invMass = 0.0f이고 invInertiaTensor는 0 행렬이어야 함). 따라서 '싱크'하지 않습니다. 나는 그것을 구현하지 않았다, 나는 내 자신의 허접한 물리 엔진으로 고투하고있다.

+0

제안을 주셔서 감사합니다. 나는 이것이 중력에 대한이 특별한 경우에 도움이 될 것이라고 생각한다. 그러나 나는 좀 더 일반적인 경우의 해결책을 찾고 싶다. 예를 들어 구심력이 물체를 교차 시키면 충격 전파로이를 해결하는 방법을 알지 못합니다. – LaZe

+0

실제로 정렬하는 방법을 알아 내려고 노력 중입니다 ... 실제로 y 축 위치로 분할하거나 실제 경로 비용 분석을 수행해야합니까? – FlavorScape