From: <vo...@us...> - 2008-02-07 11:21:52
|
Revision: 619 http://opde.svn.sourceforge.net/opde/?rev=619&view=rev Author: volca Date: 2008-02-07 03:21:56 -0800 (Thu, 07 Feb 2008) Log Message: ----------- This seems to do the correct rotation conversion Modified Paths: -------------- trunk/src/base/dyntype/DTypeDef.cpp Modified: trunk/src/base/dyntype/DTypeDef.cpp =================================================================== --- trunk/src/base/dyntype/DTypeDef.cpp 2008-02-07 11:19:33 UTC (rev 618) +++ trunk/src/base/dyntype/DTypeDef.cpp 2008-02-07 11:21:56 UTC (rev 619) @@ -651,6 +651,11 @@ // Maybe we should support some kind of additional storage Ogre::Real x,y,z; + /* Order of HPB application is cruical. It was detected that Dark orders HPB in this order: + 1. Bank is applied + 2. Pitch is applied + 3. Heading is applied + */ int16_t* rot = reinterpret_cast<int16_t*>(ptr); x = ((float)(rot[0]) / 32768) * Math::PI; // heading - y @@ -660,7 +665,7 @@ Matrix3 m; // Still not there, but close - m.FromEulerAnglesYXZ(Radian(y), Radian(x), Radian(z)); + m.FromEulerAnglesZYX(Radian(z), Radian(y), Radian(x)); Quaternion q; q.FromRotationMatrix(m); @@ -803,7 +808,7 @@ Radian x,y,z; // Still not there, but close - m.ToEulerAnglesYXZ(x, y, z); + m.ToEulerAnglesZYX(z, y, x); int16_t rot = *reinterpret_cast<int16_t*>(ptr); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |