[ODE] Re: trilist strategy
nlin@nlin.net
nlin at nlin.net
Thu Dec 12 04:31:02 2002
On Wed Dec 11 22:40:02 2002, Gary R. Van Sickle wrote:
>This was what I was getting at a while back. What happens if the floor is not a
>trilist, but a geom, say a very thin box. It seems you're implying here that
>you *wouldn't* fall through. If that's what you're saying, could you explain
>how that works?
There are two separate issues here. One is "falling through". The other is
the notion of "inside".
All ODE geoms have a well-defined notion of inside and outside. They define
volumes in space. For instance, a plane has an "inside side" and an "outside
side". If a point is on the outside side of a plane, it is geometrically
detected as being an error.
The same is with boxes. A point is either outside the box, or inside the box.
This is different with triangle meshes. A point is neither inside nor outside
of a triangle mesh (as currently implemented in the triangle collider); the mesh
merely represents the _surface_.
Here's an example of the difference. Imagine a huge box with a sphere completely
embedded inside of it. If the box is modeled as an ODE box geom, a collision is
detected and corrected; the penetration vector will push the sphere out of the
box. If the box is modeled as a triangle mesh, no collision is detected. Collisions
are only detected with the _surface_ of triangle meshes, not the "interior" (because
currently no "interior" is defined, and this is probably geometrically/topologically
a difficult thing to do in the general case).
All of the above is a description of the notion of "inside". The other issue
is "falling through", more commonly known as "tunneling". If your objects are
moving too fast for your simulation frequency, such that an object moves completely
past another object in one timestep, then a discrete collision detection system
cannot detect this. In other words, neither an ODE box geom nor a triangle mesh
geom would work well if you have objects falling at immense speeds towards the
ground. With boxes, you can make them thicker to help prevent this, or you can
use a plane (which is infinitely "thick").
-Norman