I have tried several different strategies, and while my rotation function works at first, after I’ve done a handful of turns on more than one axis, something like this happens:

**This is my function:**

function rotate(row, axis) {

const pivotAt = new BABYLON.Vector3(1.5, 1.5, 1.5);

boxes.forEach(function(box, x) {

if (box.absolutePosition[ axis]== row) {

let relativePosition = pivotAt.subtract(box.position);

box.setPivotPoint(relativePosition);

box.rotation[axis] += Math.PI / 2;

}

});

}

Welcome aboard!

I think we will need a simple repro in the Playground to be able to help.

Thank you! Here you go: https://playground.babylonjs.com/#QQYHSY#4

Put the following in console to see the problem:

rotate(2, ‘y’);

rotate(1, ‘x’);

The order of the rotations matter, rotating around y then x is not the same than rotating around x then y.

Maybe you should try to save all the x/y/z transformations that have been requested and always apply them in the same order. I’m still unsure if this will work in all cases…