Page 1 of 1

Correct Contact Manifold

Posted: Sat Sep 16, 2017 10:27 pm
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?

Re: Correct Contact Manifold

Posted: Sun Sep 17, 2017 7:19 pm
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.

Re: Correct Contact Manifold

Posted: Mon Sep 18, 2017 8:50 pm
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

Re: Correct Contact Manifold

Posted: Sat Dec 29, 2018 4:30 pm
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.