Non-convex / non-convex collision: any hints?
Posted: Fri Sep 16, 2005 10:02 am
Hallo!
I am new to this list, and I really like the
idea of a forum about collision detection.
I've been developing my multibody simulation
software (CHRONO) for years, but only recently I added
some reliable collision-detection.
Following links are some DivX animations of my first
experiments dealing with contacts & collisions
(each web page has the link to the AVI and a short
description - feel free to add comments)
http://www.deltaknowledge.com/gallery/d ... hp?pid=136
http://www.deltaknowledge.com/gallery/d ... hp?pid=137
http://www.deltaknowledge.com/gallery/d ... hp?pid=139
http://www.deltaknowledge.com/gallery/d ... hp?pid=140
http://www.deltaknowledge.com/gallery/d ... hp?pid=141
http://www.deltaknowledge.com/gallery/d ... hp?pid=142
http://www.deltaknowledge.com/gallery/d ... hp?pid=143
Note that all the simulations have been performed
using a custom simplex solver for the LCP problem.
About my simplex method: I developed some optimizations based
on the Dantzig scheme, and I were able to cut
computation times of the simplex solver by exploiting
the sparsity of system's matrices (however now I am
convinced that it isn't worth while optimizing the
simplex method any more, since for systems with
1000+ bodies the only practical way to go is a
fixed-point method like the projective-Gauss-Seidel,
thought approximations must be accepted..).
My collision detection engine uses either OBB and
AABB BVh, and custom methods for primitive pairs
(I am using a box-box algo based on the nice
theory of Kenny E., but there is also box-sphere,
sphere-sphere, etc.)
I am planning to implement the GJK algorithm of the
Bullet libray, in order to have a more general and
versatile handling of all convex shapes. However, given
that GJK returns a single point of contact, I
see that your examples handle cases with _multiple_contacts_
(box-box, for example) by updating a persistent contact
manifold.. I already did this in the past, but I felt
that this was a source of troubles with complex shapes
(instability, jumps, etc.) May be Kenny already
pointed out this fact?
QUESTION...
Now, coming to my question: does someone know a practical,
fast method for computing contacts between generic
dynamic non-convex shapes?
I mean, say you have moving objects made of triangle soups: it
is possible to compute a good set of penetration points
& directions?
Ok, I know: I may use signed distance maps! HOWEVER, they
cannot represent very detailed objects (I use simulations
for engineering, so my multibody sw must simulate also
gears, geneva wheels, and such 'detailed' shapes..)
I bet that there could be something as robust as signed
distance maps, but more precise.. look at the Novodex demos:
the non-convex shape collision demos look very precise even
without the precomputation of maps.. which trick do they use??
regards,
/\\ Alessandro Tasora
/__\\
tasora@mech.polimi.it
http://www.deltaknowledge.com
http://www.deltaknowledge.com/tasora
I am new to this list, and I really like the
idea of a forum about collision detection.
I've been developing my multibody simulation
software (CHRONO) for years, but only recently I added
some reliable collision-detection.
Following links are some DivX animations of my first
experiments dealing with contacts & collisions
(each web page has the link to the AVI and a short
description - feel free to add comments)
http://www.deltaknowledge.com/gallery/d ... hp?pid=136
http://www.deltaknowledge.com/gallery/d ... hp?pid=137
http://www.deltaknowledge.com/gallery/d ... hp?pid=139
http://www.deltaknowledge.com/gallery/d ... hp?pid=140
http://www.deltaknowledge.com/gallery/d ... hp?pid=141
http://www.deltaknowledge.com/gallery/d ... hp?pid=142
http://www.deltaknowledge.com/gallery/d ... hp?pid=143
Note that all the simulations have been performed
using a custom simplex solver for the LCP problem.
About my simplex method: I developed some optimizations based
on the Dantzig scheme, and I were able to cut
computation times of the simplex solver by exploiting
the sparsity of system's matrices (however now I am
convinced that it isn't worth while optimizing the
simplex method any more, since for systems with
1000+ bodies the only practical way to go is a
fixed-point method like the projective-Gauss-Seidel,
thought approximations must be accepted..).
My collision detection engine uses either OBB and
AABB BVh, and custom methods for primitive pairs
(I am using a box-box algo based on the nice
theory of Kenny E., but there is also box-sphere,
sphere-sphere, etc.)
I am planning to implement the GJK algorithm of the
Bullet libray, in order to have a more general and
versatile handling of all convex shapes. However, given
that GJK returns a single point of contact, I
see that your examples handle cases with _multiple_contacts_
(box-box, for example) by updating a persistent contact
manifold.. I already did this in the past, but I felt
that this was a source of troubles with complex shapes
(instability, jumps, etc.) May be Kenny already
pointed out this fact?
QUESTION...
Now, coming to my question: does someone know a practical,
fast method for computing contacts between generic
dynamic non-convex shapes?
I mean, say you have moving objects made of triangle soups: it
is possible to compute a good set of penetration points
& directions?
Ok, I know: I may use signed distance maps! HOWEVER, they
cannot represent very detailed objects (I use simulations
for engineering, so my multibody sw must simulate also
gears, geneva wheels, and such 'detailed' shapes..)
I bet that there could be something as robust as signed
distance maps, but more precise.. look at the Novodex demos:
the non-convex shape collision demos look very precise even
without the precomputation of maps.. which trick do they use??
regards,
/\\ Alessandro Tasora
/__\\
tasora@mech.polimi.it
http://www.deltaknowledge.com
http://www.deltaknowledge.com/tasora
