Hi,

I’m trying to understand the behavior of using different forms of geometric transformations and I got an unexpected behavior when scaling objects.

When I perform the following operations I get the expected behavior (object getting far from the translated position):

var mat4 = new THREE.Matrix4();

cube.matrixAutoUpdate = false;

cube.matrix.identity();

cube.matrix.multiply(mat4.makeScale(2, 1, 2));

cube.matrix.multiply(mat4.makeTranslation(2, 0, 2));

But when I do the following, I expected the same behavior but it seems the scale is executed in object’s local space.

cube.scale.set(2, 1, 2);

cube.translateX( 2 );

cube.translateZ( 2 );

In this case, if a put the scale command after the translations, I got the same output.

Am I missing something?

The fiddle is here: