3dsMax Matrix3 transforms

It may appear the 3dsMax Matrix3 uses some sort of mathematical voodoo (like quaternions).

But if you know what a vector is it’s actually very simple.

So in brief the matrix3 as a 4 x 3 matrix where the first 3 columns represent the X Y Z axis. and the last column represents the objects world position. ….

Lets look at this in Max.

First start a new scene in max. Then create a teapot somewhere in the viewport window
Next open up the MAXScript Listener and type this


The Max listener then returns a value something like this

(matrix3 [1,0,0] [0,1,0] [0,0,1] [0,12,57.6])

Max is telling us that the transform of the teapot is a maxtrix3 value four vectors
Each vector consists of a little array of three numbers [x y z]. Three numbers in an array like this called a ‘point3 value’ in 3dsMax.

Now type this into the MAXScript listener

$teapot001.transform = (matrix3 [0,-1,0] [0,0,1] [-1,0,0] [0,9,9])

The first column represents the objects x-axis. We can see that at the x-Axis has the vector [0,-1,0]. So here x-axis of the object points backwards along the World y-axis.

Now click on the object to select it. Then go up to the main toolbar. Chose the coordinate system drop down list and pick local

Note the direction the objects X-axis points and compare it with the little icon in the bottom left of the viewport. This icon represents the world axis. You should see the objects x-axis points backwards along the Worlds y-axis.

Now type this into the listener window

$teapot001.transform = (matrix3 [1,0,0] [0,1,0] [0,0,1] [0,0,0])

The box now moves to the center of the world (because the last column is now [0,0,0] ) and its local axis are aligned with the world axis.

Tweeking the values of the first 3 row you can also control the objects scale.

E.g Typing this will squash the box flat. Because the length of the z axis (the 3rd column) is now zero

$teapot001.transform = (matrix3 [1,0,0] [0,1,0] [0,0,0] [0,0,0])

Typing this will stretch the box. Because the length of the z axis (the 3rd column) is now 10

$teapot001.transform = (matrix3 [1,0,0] [0,1,0] [0,0,10] [0,0,0])

Even more strangely you can shear the box by typing this…

$teapot001.transform = (matrix3 [1,1,0] [0,1,0] [0,0,1] [0,0,0])

Because the angle of the x-axis has changed whilst the y and z remain aligned to the world.