To my surprise, the labeling systems of 3D spaces across software aren’t uniform. For some reason, I assumed that the orientation and labeling of all 3D spaces would be the same. Instead, there are multiple different systems that a 3D space could follow, and they are oriented on which hand is used and its orientation.

A wizard holds out his hand in a gesture conjuring magic.

Remember to orient your hand to remember the axis labels

There are right-handed and left-handed coordinate systems. The hands are used mnemonically to help remember the labeling system and vector. For example, the thumb represents X+, the index finger represents Y+, and the middle finger represents Z+. The finger positions are all perpendicular to each other. In essence, hold the thumb out, point the index finger out, and point your middle finger halfway out.

Here’s a simple example I found to illustrate what this looks like. This picture shows a left-handed Y+ upright orientation.

Right-handed vs Left-handed 3D Coordinate Systems

Going into 3D worlds, my context was just 2D space, so my mind was oriented to a Cartesian graph, where Y+ goes up and X+ goes right. While learning Three.js, I started to pick up what was called a “Right-handed, Cartesian coordinate system”; Y+ goes up, X+ goes right, and Z+ comes closer to the screen. However, I didn’t really know the name. I just assumed all software used this system.

While working on a freelance project, there was miscommunication with the client because, in a 3D printing world, the Z+ vector points up instead of Y+. This was when I learned the differences in orientation systems in a 3D space. Since the expected output was going to be a 3D print, I then had to convert any coordinates I had in Three.js to a different coordinate system compatible with 3D printing and GCode.