How are rotations applied?

I’ve been trying to fly a 3D camera (two views) in a 3D space, and having a heck of a time because the transforms are not working like I expected.

As an example, when I use a “Rotate” node to transform an “Axis” node (example attached), the Z rotation works as I expect, and is always “local” to the object being transformed; in other words, no matter how the X and Y axes are rotated, the Z rotation moves around the local Z axis (blue).

But changing the X and Y inputs always results in the Axis object rotating in world space, regardless of how the other axes are rotated.

This seems inconsistent to me, as I am used to working in robotics where coordinate frames are hierarchical, and rotating an object in its local frame always rotates around the local axes no matter their world orientation.

Am I missing something? Sorry if this is explained somewhere, but the documentation page for transformations is blank, and my searches didn’t pull up any explanatory material as to how transforms are applied in vvvv.


Rotations.v4p (7.5 kB)

the rotaion order is YawPitchRoll, means YXZ. so first you have the Y roation, then the X rotaion is applied to that and finally the Z. thats why Z seems to be the object axis. you always transform the object coordinate system.

if the Z and Y rotation is 0 for example, the X also seems to be the object axis…

Thanks tonfilm! My head is exploding trying to figure out my problem, but that’s another post…