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.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: