How Matrix3 works


13-09-2013 10:59:49

Hi everyone,
I have big problems to understand how Ogre/Mogre manages Matrix3 objects.
I try to explain: with Maya 2011 I've created a simple object, you can see it here:

As you can see the coordinate system of Maya is the same as Ogre (
I tried to export this file in .X, and I've written a software in VB.NET that by DirectX allows to change the rotation matrix of the object and to view it.
Remember that DirectX has a different coordinate system (
With my software I made some tests, in order to understand matrix behavior, and I think I undestood how they work.
For example, if I want to make the object "look at right", I know that its X local axis has to look at -Z global axis (so the first row of my matrix is 0 0 -1), Y axis rimains the same (so the second row of my matrix is 0 1 0) and its Z local axis has to look at X global axis (so the third row of my matrix is 1 0 0).
I've tried it with my software, and everything works.

If I try other tests everything always work, so I think that my reasoning is correct.
I've written another software to simulate the same thing with VB.NET and Mogre.
Considering that Ogre Z axis is opposite respect to DX Z axis, the matrix should became (0 0 1, 0 1 0, -1 0 0), right?
In this video you can see it better:
On the contrary on my software I see the object rotated to another direction.

Can anybody explain me why does my reasoning work only with DirectX and not Ogre? I can't understand..
Thanks for your help.


26-10-2013 13:04:50


I'm very sorry that I'm here only seldom, because I have much to do on my working place and very less free time.

Related to Matrix3. For this class Mogre has no wrapper. Instead the code was ported to C#, because it's faster.
So you can have a look to the code to see how it's implemented.

See it online here: ... atrix3.cpp

If you want to look to it in an editor, just run the MogreBuilder (wiki page, BitBucket repository).
It downloads all sources and builds Ogre+Mogre automatically.
Then all code is on your hard disk.
You also have the possibility to modify or extend the Matrix3 class. Just edit the file and run MogreBuilder again.
If you download the source by MogreBuilder you find the file here:
<MogreBuilderTargetDirectory> / Main / src / Custom / MogreMatrix3.cpp

If you have problems with rotations - yes this it a little bit tricky.
Ogre and Mogre use quaternions. When you use euler angles for rotation, sometimes you get strange results.
To make it more easy to work with euler angles, user Kojak and me created the Euler Angle Class.
(The most work was done by him. I just motivated him, added ideas and ported the code to C#.)
More information and the code you find in the wiki: ... lass+Mogre

I hope I could help.