[ODE] Animation-driven rotations

Mark Williams mark at image-engine.com
Thu Oct 25 18:35:03 MST 2007


Hi all, I know the topic of 'animation import' has come up a number of 
times, but I've been through the mailing list history and as far as I 
can tell the subject of how to get external animated rotation data onto 
rigid bodies hasn't been discussed.

What I'm trying to do should be quite straight forward. I have the 
rotation of the rigid body, bodyQuaternion, at the current time. I have 
a target rotation, targetQuaternion, which I'd like to rotate the body 
to within a single time step. So what I have so far is:

rotationErrorQuaternion = bodyQuaternion.inverse() * targetQuaternion
rotationError = rotationErrorQuaternion.asEuler()
angularVelocity = rotationError / timeStep
body.setAngularVel ( angularVelocity )

Which seems to work fine in a number of cases, but on occassion it can 
lead to what I can only describe as 'chaotic' behavior, with the body 
spinning out of control rapidly. Can anybody see anything wrong with 
what I'm doing? Should I be using an AMotor instead, with an infinite 
FMax? If so, briefly how should I go about setting up the angles on the 
motor?

I had the exact same problems with applying torques rather than setting 
angular velocities directly so I think I'm neglecting something quite 
fundamental here.

Could anybody offer any advice, please?

Thanks in advance,

Mark


More information about the ODE mailing list