[ODE] Trimesh collision problem

Richard Watton nomad at nantinet.co.uk
Mon Jun 12 08:40:30 MST 2006


I have a problem with sphere-trimesh collisions. If the sphere has a fairly
high velocity, it will pass straight through a trimesh with no collision at
all (dCollide returns 0). However, it will collide with a plane.
I've set dTRIMESH_ENABLED=1 and using single or double precision makes no
difference.

The best way to demonstrate this is to use the test_trimesh sample with a
plane below the mesh. Drop a sphere (diameter 0.1) from 100m, timestep 0.05.
The sphere will go through the mesh, bounce off the plane and back up
through the mesh, and probably land on the mesh the second time.

The failure to collide with a trimesh is dependant on sphere size, velocity
and timestep. If I increase the sphere size, decrease timestep or decrease
velocity, I get sphere-trimesh collisions.

My question is this: does ODE just use bounding box intersections to check
for collisions? If so this would explain the plane-sphere collision (i.e.
planes have 'infinite' bounding boxes). Or can the collision system test the
path travelled by a geom (between timesteps) against other static geoms to
determine collision points? If so, how do I enable this behaviour?
Any help appreciated here!



More information about the ODE mailing list