Bamboozled about Godot rotations
Oct 2, 2024
I've been messing around with Godot lately and one of the first things I learned is that, in 3D, Y is up. This conflicts with my experience in Blender and also with the convention I'm used to in mathematics; both have Z pointing up. Initially that seemed to be just a matter of getting used to mentally translate Y to Z and vice versa when handling with both systems, but once I started playing with rotations that turned out not to be enough. For reference here's how they look in Godot and Blender, respectively:


The thing is, doing Y<->Z led me to believe that they adopt different conventions for rotation, when they're in fact exactly the same. The easiest way to see that is by looking at the axes at the top right corner. Under this translation, to get from positive X to "Y" (actually Z) you'd rotate clockwise around "Z" (actually Y), whereas in Blender you go counter-clockwise. My confusion essentially turned Godot's system into a left-hand coordinate system, but in fact it's a right-hand system like Blender's: If you start from Blender's and rotate Z counter-clockwise around X by 90 degrees, you end up in Godot's sytem. (When I say counter-clockwise, I mean from the perspective of someone standing on positive X and looking from above. If they're looking from below, it'd look clockwise.)
It just looks misleading because Y is up in Godot. The poorly made video below shows the same rotation in both applications, from the same perspective, just taking the axes into account and ignoring the fact that the meaning of "up" is different. Note that both Blender and Godot treat the rotation as positive. This means that counter-clockwise rotations are positive in both.