[ODE] Pushing through collisions
Jon Watte
hplus-ode at mindcontrol.org
Wed Apr 28 16:05:38 MST 2004
How strong are the collision impulses in ODE supposed to be?
And has anyone had experience with applying actual position
corrections instead of just impulses? (more on this at the
bottom)
Long explanation of the problem I'm seeing:
I have the case where my actor, if I walk it up to a box and
push against the side, will slowly slide into the box. This
started to happen when I gave the actor a force multiplier
while walking slowly, to make it drag its feet less when you
first start walking.
Thus, what happens is that a force of about magnitude 15 is
applied in the center of an upright C-cylinder that's about
1.6 meters tall (plus caps), 0.3 meters radius, and unit mass.
It's pressed against a box that's two meters width and depth
and about half a meter tall, floating in air in front of the
ccylinder. This is enough to slowly push the cylinder into
the box. The box is attached to NULL, and I use a fixed time
step of 0.016667. I allow up to 16 contacts per collision,
although I filter them (however, in this case, only one
contact is generated).
I know that the contacts are detected and generated just fine,
both because I stepped through the code, and because I draw
the contacts as lines on the screen, and they are there just
like you'd expect them to be. Once into the box, I get sucked
in and spit out a side.
I could mail a binary if anyone wanted to look at it, but you
gotta run the DX9.0c beta for it to actually start up :-(
Regarding moving the thing, rather than applying an impulse,
you'll easily get into trouble by tunneling through corners
and stuff if you move the object and it's colliding with a
large number of actors. What I was considering was only
applying a movement if there is a movement direction that's
"out" from all the contacts found, and probably only between
moving objects and the static environment. Has anyone tried
this with ODE, and how did it work?
Cheers,
/ h+
More information about the ODE
mailing list