Correct Contact Manifold

Please don't post Bullet support questions here, use the above forums instead.
Post Reply
Korybut
Posts: 1
Joined: Sat Sep 16, 2017 9:57 pm

Correct Contact Manifold

Post by Korybut »

Hello everyone!

Trying to understand all the pipeline behind the physics simulation before implementing it myself

Suppose I have two colliding objects A and B and then I operate with Minkowsli difference

1) Find out if A-B contains origin (algorithm is not an issue here)
2) If yes find the smallest distance from origin to the boundary of A-B. And during this procedure I also find a "normal", where distance and normal are realted by the simple formula

Smallest Distance = Support(A-B,normal)

Then (according to several sources) one says that objects A and B were hitted in points Support(A,normal) and Support(B,-normal) respectively. And here happens something weird

Suppose I collide two boxes A and B in face vs. vertex (A-- face, B--vertex). After drawing some pictures of Minkowsli difference it is easy to see that the normal to the collision is the normal to the face under consideration. But once I calculate Support(A,normal) I get the vertex but not a point on the face. As a result all the actual physics calculation based on this contact information worth nothing. I can take super long box A and hit it with the box B directly into the center of the face

How do people finde correct hit points based on analysis of Minkowski difference?
Dirk Gregorius
Posts: 861
Joined: Sun Jul 03, 2005 4:06 pm
Location: Kirkland, WA

Re: Correct Contact Manifold

Post by Dirk Gregorius »

Then (according to several sources) one says that objects A and B were hitted in points Support(A,normal) and Support(B,-normal) respectively. And here happens something weird.
I don't know where this is from, but I can think of many examples where this wrong. Obviously you are proving this is not correct as well.
RandyGaul
Posts: 43
Joined: Mon May 20, 2013 8:01 am
Location: Redmond, WA

Re: Correct Contact Manifold

Post by RandyGaul »

Korybut wrote:Hello everyone!
How do people finde correct hit points based on analysis of Minkowski difference?
2 algorithms I know of: expanding polytope algorithm (basically quick hull), or minkowski portal refinement. Both algorithms have unattractive qualities. I prefer getting contact points like Dirk presented in his 2013 and 2015 GDC lectures:

http://media.steampowered.com/apps/valv ... ntacts.pdf
https://archive.org/details/GDC2013Gregorius
mpm
Posts: 9
Joined: Mon Apr 17, 2017 12:11 pm

Re: Correct Contact Manifold

Post by mpm »

The final simplex that GJK/EPA terminates with has a point, an edge or a triangle that faces the origin. If it's a point, then the witness points on the involved shapes maps directly onto each of their individual support points.
Contrary, if it is an edge or a face, then you will first have to calculate the closest point on the edge or face that is closest to the origin (point of minimum norm). Then you must work out the Barycentric coordinates that calculate that point from the vertices of the edge or face in question. These Barycentric coordinates can then be used on the shapes' individual corresponding support points to calculate their actual witness points.
Post Reply