Page 1 of 1

Joint Stretch

Posted: Mon Aug 06, 2012 11:22 am
by JacKAsterisK
Hi, I'm trying to just have an arm be physics controlled except for rotation while the rest of a ragdoll is following an animation. The problem I'm having is the joint between the physics run entity and the entity whose WorldTransform is being overwritten is being stretched when under force. I tried tweaking the SpringSettings, but alas, no luck thus far. If it changes anything, I'm using a BallSocketJoint, EllipseSwingLimit, TwistLimit, and an AngularMotor. What could be the cause of this?

Here's a video of the problem if it helps: http://www.youtube.com/watch?v=l7B2fPGnPIE

Also, this is my first time posting and I just wanted to say that Bepu is some amazing software, thanks for everything!

Re: Joint Stretch

Posted: Mon Aug 06, 2012 4:42 pm
by Norbo
The problem I'm having is the joint between the physics run entity and the entity whose WorldTransform is being overwritten is being stretched when under force.
Is the velocity of the transformed entity being controlled somehow? Is it kinematic, does it have a motor, or is its velocity being set to something appropriate every frame?

If it's just a regular dynamic entity and its world transform is getting overwritten every frame, large velocities will accumulate. Constraints operate on velocities. If the relative velocity between the objects does not accurately reflect their relative motion, then the constraints will fail.

The best form of velocity control would be either a constraint or making the entity kinematic. Kinematic entities do not respond to impulses; they effectively have infinite mass. So, setting their velocity to something appropriate will be 'seen' by the constraint. Using a constraint will make the velocity control visible within the solver as well. Setting the velocity between frames will work a little, but it won't be as robust as the kinematic or constraint approaches since momentary impulses don't fight against constraints in the solver.
I tried tweaking the SpringSettings, but alas, no luck thus far.
Another possibility is that the grab constraint is very strong, but the ball socket constraint is somewhat weak and has a very high damping to stiffness ratio.

If this still happens in the same way using the default settings, this probably isn't a significant contributor to the problem.

(Once whatever is causing this problem is addressed, it might still be helpful to weaken the grabber to prevent it from overwhelming the ragdoll joints under certain circumstances (like pinning it between rocks and yanking the arm off).)

Also, this is my first time posting and I just wanted to say that Bepu is some amazing software, thanks for everything!
Thanks and you're welcome :)

Re: Joint Stretch

Posted: Tue Aug 07, 2012 1:44 am
by JacKAsterisK
You're right! It was the velocity accumulating in the entity I was overriding the WorldTransform for, I can't believe you diagnosed that by such a short explanation. Thanks, you saved me a lot of time!