6DOF Constraint: Constrained Rigid Body velocity always zero

Post Reply
info128
Posts: 7
Joined: Thu Mar 03, 2011 2:30 am

6DOF Constraint: Constrained Rigid Body velocity always zero

Post by info128 » Fri Jun 01, 2012 9:02 pm

I've run into a problem using the linear limit functionality of the 6DOF constraint. In testing, set up a 6DOF constraint between one dynamic rigid body and the world (no second rigid body). Each frame, I call setLinearLowerLimit and setLinearUpperLimit with the same vector, which is an animated point in space. This works as you would expect; the rigid body is constrained to the animated point.

The problem occurs when I either disable the constraint, or "unlimit" the constraint by setting the lower/upper limits to the extents of the world scene. Up to this point, the rigid body was moving quite fast, matching the velocity of the animated point. After the constraint is disabled, the rigid body just stops, instantly, with no further motion. I finally output the rigid body's velocity using getInterpolationLinearVelocity(), and it is almost zero for every frame.

I imagine I am missing something here; is the velocity zero due to multiple constraint solver iterations per frame? The desired behavior is for the rigid body to continue its trajectory (due to inertia/velocity) after the constraint is disabled. Any ideas on how to accomplish this? I've considered making the rigid body kinematic, then copying its inertia frame, removing the body, and replacing it with a dynamic rigid body, with velocity/position copied from the previous kinematic rigid body. Any help is appreciated.

Post Reply