GJK and collision response
Posted: Tue Aug 15, 2006 5:41 am
I'm researching GJK and I was wondering how to deal with a specific problem that can easily be dealt with using SAT.
Basically, say you have a static plane that is tessellated into triangles and you want to collide a convex polygon primitive with that plane (eg. a box), but you don't want collision response with the internal triangle edges.
Now for SAT, it's very easy to just modify the algorithm so that when searching for the minimum translation distance over the overlapping axis' of the triangle v box, you can easily flag which triangle edges (pre-processed) to include for collision response (normal + penetration depth) results.
Can the same thing be achieved with GJK?
eg. In this dodgey ascii art below, only the * edges and internal plane should be collided with. If each triangle is fed into GJK with a cube, how would collision penetration response exclude internal edges?
********
*\ |\ |\ |\ *
* \| \| \| \*
*----------*
*\ |\ |\ |\ *
* \| \| \| \*
********
I hope my question makes sense. It's related to a game programming gems article where the static world mesh is pre-processed so that only collidable edges are flagged to be included in collision response.
thanks
Steve.
Basically, say you have a static plane that is tessellated into triangles and you want to collide a convex polygon primitive with that plane (eg. a box), but you don't want collision response with the internal triangle edges.
Now for SAT, it's very easy to just modify the algorithm so that when searching for the minimum translation distance over the overlapping axis' of the triangle v box, you can easily flag which triangle edges (pre-processed) to include for collision response (normal + penetration depth) results.
Can the same thing be achieved with GJK?
eg. In this dodgey ascii art below, only the * edges and internal plane should be collided with. If each triangle is fed into GJK with a cube, how would collision penetration response exclude internal edges?
********
*\ |\ |\ |\ *
* \| \| \| \*
*----------*
*\ |\ |\ |\ *
* \| \| \| \*
********
I hope my question makes sense. It's related to a game programming gems article where the static world mesh is pre-processed so that only collidable edges are flagged to be included in collision response.
thanks
Steve.