[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