GJK Convex Hull Collision Detection

Started by
0 comments, last by robert_s 20 years ago
Hi All. After experimenting with two different methods of detecting collision detection I realised that it is still not what I want. The first method I implemented for static 3D convex2convex hull collision algo was searching for a plane P, (first in convex hull A) that has all of the vertices of convex B on positive side of the plane P. If all of the vertices from B where found on the positive side of the selected plane (poly) extracted from convex A then no collision was found. It was pretty easy to implement. Its very fast too. However this doesn’t work for some shapes like for pyramids (4 planes each). BTW: What is the proper name of the above method??? The second method I implemeted is using separating plane again but slightly in a different way than the above one. It creates a dynamic plane from a selected edge from convex A (2 points) and a single point from B (together it forms a triangle ie. plane). Once I have this plane created, next I test if the convex hull A is on one side of the plane (triangle) and if B is on the other side of the plane. So if the two A & B are on opposite sides of the plane then this means they are not colliding. It works ok for any shape but it is very very slow. Both these methods are described on gamasutras site here : gamasutra site I still dont know from that article whether I should combine these 2 methods for optimal results or they should be used as separate 2 methods. Anyway. I got lots of help from Olii (Thanks again Olii) and was introduced by Olii to GJK (Gilbert-Johnson-Keerthi) algorithm. I searched and found few articles on this stuff however I am not sure if I understand everything looking at the mathematical expressions. Is there anybody kind enough to explain to me step-by-step what I have to do in order to implement it in a simple language. Like,... write function to calculate this and then come back I'll tell you the rest. You know I want to understand every bit I am doing just as I have done the above algos. I cant believe the above methods were so simple to implement but people make this stuff so complex to understand in their articles. You can describe it using few words rather than using long mathematical equations etc.. but Anyway is there anybody who could help me to understand the GJK algo step-by-step how to implement it? Thanks so much in advance!! [edited by - robert_s on April 16, 2004 4:01:35 PM]
Advertisement
You should also check out V-clip. From what I''ve read it seems a little easier then gjk and it may also be a bit more robust.
There is a paper at http://www.merl.com/reports/docs/TR97-05.pdf that explains it.

This topic is closed to new replies.

Advertisement