[ODE] Location of contact points
Charles James Leonardo Quarra Cappiello
charsquarra at hotmail.com
Tue May 6 05:57:02 2003
>My questions are:
>
>* Is it more correct to have the contact point always on the surface of
>at least one of the volumes ? or is it better to have it kind of "in the
>middle" if the volumes overlap" ? (how does this decision affect the
>physics simulation? )
>
>* If two boxes overlap with one corner each, what is the correct contact
>normal ? should i try to find some kind of "secant plane" or just use
>any normal ?
>
AFAIK the current paradigm of collision detection in ODE tri-collider with
the hash map stuff and OPCODE can be minimalistically expressed as:
for each object, move from frame A to frame B, CD module reports overlaps of
the objects in frame B. Note that in this case interpenetration always
occur, but (at this point is where i dont fully follow u) you DONT WANT IT
TO HAPPEN. ODE assumes the CD module puts contact points on the _surface_,
and any contact geometry belongs to the colliding geometry. There are ways
and ways to do it, at least to my minimalistical knowledge, {.. maybe others
around the list can (or even want?) to enlighten us a bit more)
GJK- and other convex hull based algorithms use the concept of
closest-features distance tracking (where features are points, edges and
triangles), but these algorithms requires objects to be split into a convex
hull, and its horribly inefficient for deformable geometry.
Note that with a GJK-like algorithm, even when a interpenetration occurs,
you can enforce the non-interpenetration constraints with phisically correct
forces at the contact and grinding them into the LCP solver (this is handled
different in the David's iterative approach, isnt it?). But without the
penetration depth, you dont have a trustworthy measure of how much force i
need to push in order to remove the overlap condition or at least keep the
resting contact at the boundary.
Ok, now that i've talked all this jiggerish, now i wave my own way of
dealing with this problem, so knowledable ppl can give me a hint :)
im also trying to do with own collision stuff (im doing it since i need to
include deformable stuff in the picture). The concept here is that
since i cant rely on a GJK-like algo to get penetration depth, i _suspect_
that i can get a good deal getting instead, the exact _time-of-contact_(tm),
that is, the exact time between frame A and B, in which features first
overlapped.
At first sight, this approach looks really nice since then i can do a
iterative-like loop inside each timestep and apply impulses at the contacts
(which would depend only on the velocities,coordinates of the
objects and their contact point) at the correct time. This is, a nice O(n)
algo with exact response. However, im afraid that good' ol' box stacking can
be really hard on the performance.
Note that i expect that this system be usable just as a realtime framework,
also as a physically-correct MD-simulation-quality collision module, but i
have my doubts about the performance on the compact aggregation regime, ....
any thoughts? pros or cons? jokes?
Greetings,
-CharlLls
_________________________________________________________________
Protect your PC - get McAfee.com VirusScan Online
http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963