THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 25/04/2007 at 06:00, xxxxxxxx wrote:
Cinema 4D Version: 9.603
Platform: Windows ;
Language(s) : C++ ;
There seems to be a problem with the Quaternion::SetMatrix() function.
I'm writing a directX exporter and until now I used matrices to animate a model. Due to the limitations (gimbal lock) I switched to Quaternions.
Now here's the problem:
a cube with a rotation of 360° along the Y axis.
Exporting the animation with a 4x4 Matrix -> everything is fine
Exporting the animation with Quaternions -> everything is fine until the rotation is > 180° (pi).
HPB Values higher than pi get a wrong sign in the quaternion which causes rotation to spin back very fast
Has anyone experienced something similar?
And are there solutions?
Any help is greatly appreciated
On 27/04/2007 at 04:12, xxxxxxxx wrote:
After 2 days of comparing values and try and error I found the problem.
To build my quaternion I used
But (of course) this doesnt work, because the "regular" Matrix brings the gimbal problem back.
The correct way to do this is like this:
Quaternion rotquat, rotquatX, rotquatY, rotquatZ;
rotquatX.SetAxis(LVector(1, 0, 0), dtRot.y);
rotquatY.SetAxis(LVector(0, 1, 0), dtRot.x);
rotquatZ.SetAxis(LVector(0, 0, 1), dtRot.z);
rotquat = QMul(rotquatZ, QMul(rotquatX, rotquatY));