[ODE] Collision detection

Paul Dennison pcdennison at optusnet.com.au
Wed Feb 19 19:43:02 2003


Hi all,

This is my first post to the list, and have been searching the archives for
answers, but to no avail. So I'm posting my questions now in hope of
receiving enlightenment.

I am developing a simple game (yes, it's another vehicle based sim) as a
demo, with a small team. I understand the ODE (0.035) system and have
integrated the required physics code with my engine of choice, but am
starting to need more features, the most important of which is terrain. My
general approach is to provide a simple convex collision mesh (or several
meshes) which loosely define the bounds of each object, collide these
objects with other objects and the terrain, and generate the contact points.
I noticed on my search for other collision detection engines that none seem
to compute the penetration depth of a collision, short of SOLID 3.0, which
seems to be unavailable (well, at least from the site www.libsolid.com), and
DEEP, which I have tried to get a hold of (still waiting on a reply).

I have tried the Tri-collider: it compiles & links ok, but things just don't
collide. I've tried as many of the suggested options as I could find
(tri-mesh geom matrix is identity, not moved; gravity is sufficiently small,
objects are big enough) but it doesn't seem to work, and besides, it only
works for boxes and spheres, and I really need cylinders as well (although
there was talk of a cylinder <-> tri mesh collision sometime, is that
available in CVS?!?!)

It seems to me that everyone on the mailing list agrees (as do I) that
collision detection between two non-convex polytopes is impractical and
difficult in a simluation, but the only non-convex mesh I want to collide
with is the terrain. The rest of the objects I want to supply a simple
mesh(s) for collision detection. My questions, I suppose, are:

What do other people do for computing the penetration depth of a collision
such as this?
Does everyone just use the Tri collider?
Has anyone successfully used any other collision system?

I have reseached and tried other systems, namely RAPID (with VCollide),
SOLID (freeSOLID), and a little of vclip (which seemed overkill for my
purposes) and would be comfortable using any of these if I could only
establish the information needed for ODE from the collision systems.

Sorry if these questions are stupid, I just feel like the solution is there
and I just can't see it.

Thanks in advance,

Paul