67
\$\begingroup\$

Assume DirectX as the platform, if that is important. (Pretty sure it isn't)

Assuming I have a proper scale, rotation and translation matrix, in what order do I multiply them to result in a proper world matrix and why?

By "proper", I mean "I could throw them straight into DirectX and get the most commonly-used 3D frame."

\$\endgroup\$
3
  • 6
    \$\begingroup\$ Here is an explanation of "rotate then translate" (spinning) vs "translate then rotate" (orbiting) \$\endgroup\$
    – bobobobo
    May 13, 2013 at 15:14
  • \$\begingroup\$ the link is good, but with a small error. its should be rolling effect and not spinning, becaiuse the sphere tends to move away from its position ( remaining on the axis ) by translating . \$\endgroup\$ Apr 16, 2018 at 19:49
  • \$\begingroup\$ This also has some explanation: Why Transformation Order Is Significant \$\endgroup\$ Feb 23, 2021 at 17:01

3 Answers 3

86
\$\begingroup\$

Usually it is scale, then rotation and lastly translation. With matrix denotation (i.e. \$T\$ for translation matrix, \$R\$ for the rotation matrix and \$S\$ for the scaling matrix) that would be:

$$ T * R * S $$

However, if you want to rotate an object around a certain point, then it is scale, point translation, rotation and lastly object translation.

Why: First you want to scale the object so that the translations work properly. Then you rotate the axes so the translation takes place on the adjusted axes. Finally, you translate the object to its position.

In OpenGL, you can use gluLookAt to get a full camera transformation in one call. There is likely a similar call for DirectX.

\$\endgroup\$
3
  • 13
    \$\begingroup\$ And remember, if you want to transform around the centre, then you first have to translate to offset the centre to be on the origin, then do as user392858 has stated, then translate it back again away from the origin by the same amount. Generally though, this is only necessary in 2D, where you have some sprite that has it's top left at the origin. \$\endgroup\$
    – Engineer
    Sep 1, 2011 at 17:26
  • \$\begingroup\$ Found the notation confusing. Since all these elemental transforms are matrix operations, they have to be applied in right to left order: T * R * S \$\endgroup\$
    – Matthias
    Jan 11, 2016 at 9:07
  • 2
    \$\begingroup\$ @Matthias As far as I know, that depends how you then multiply by the vector that you want to transform. If you multiply M*v then yes, answer has reversed order. \$\endgroup\$
    – bialpio
    May 16, 2016 at 3:41
-4
\$\begingroup\$

translation rotation and scaling is the sequence to perform operation

\$\endgroup\$
-6
\$\begingroup\$

I do believe it is Translation Rotation and Dialation

\$\endgroup\$
1
  • 3
    \$\begingroup\$ This doesn't provide any more explanation than the existing answers. \$\endgroup\$
    – DMGregory
    Jan 24, 2018 at 6:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .