Coordinate Systems of 3D Applications Guide

Ahmet Burul
4 min readFeb 14, 2022

Hello there, in this article I am going to be telling you about the differences between World Coordinate Systems of disparate programs and their working principle.

Basically the most important issues for game engines and 3D software packages are creating the assets according to the programs axis system, scale them correctly and setting pivot system in accordance with the work to be done.

Definition for correctness of axis system may change according to the game engine or 3D software that model will be imported. Every program have different axis system and it is critical to export models compatible with the game engine or other 3D software packages. Exports that will done without understanding the coordinate system of software can lead to strange results.

Especially if you are working as a team while developing a game, you should pay more attention to this issue and get the export correctly. A game developer who receives a 3D model from you which has different axis system from the current program might lose time on understanting the issue. This is a situation you have to be aware of.

Since we have discussed enough about the importance of the topic, let’s start the article by getting to know the coordinate system.

What is Coordinate System?

We can define coordinate system as a system which uses one or more numbers, or coordinates, to determine the position of the points or other geometric elements. It’s the coordinate system’s mission in a game engine to define the location of each object and which direction it is facing. This data helps you to calculate distance between objects, rotation, speed and all sorts of other useful information.

In this article, we will be based on the Cartesian coordinate system. Unity uses cartesian coordinate system by default. However it is possible to change the system using a script.

As you all know, space inside your Unity scene is determined by X, Y, and Z axes. Those represent the left/right, up/down, and forward/back directions. Basically, by changing the axis values ​​in Unity, we specify where the object should place in the coordinate system.

Unity Axis System

As coordinate systems may be right-handed or left-handed,they may also be different according to the axis which represents the depth varies. First lets understand the difference between right handed and left handed coordinate systems.

Difference of Right Handed and Left Handed Coordinate Systems

Typically, 3D graphics softwares use two types of Cartesian Coordinate Systems: right-handed and left-handed. This may change up the to preference of application,while 3ds Max uses right handed,Unreal Engine uses left handed coordinate system. However we can say that most 3D modeling applications use right-hand coordinates.

Simply right handed coordinate systems are using right hand rule to determine directions of different axes while left handed systems are using left hand rule. Different axes may represent “Up” direction but we are going to mention about it later. The basic idea here is about the direction of rotation and directions of floor axes (what I mean here is x and z,those may change in different situations). Direction of rotation is positive in right handed systems. In a right handed system which uses Y axis for Up/Down direction,+ direction of Z axis towards outside of the screen while it is vice versa in left-handed.

Difference of Right-handed and Left-handed coordinate systems in Y-Up approach.

Difference of Y-Up/Down and Z-Up/Down systems in 3D Softwares

Both Blender and 3ds Max use coordinate system which were common in early 90’s. This convention is typical in architecture. You start modelling from the floor plan which uses X/Y coordinates and then extrude upwards (or downwards,may change if the system is right handed or left handed). This is called as Z-Up(or -Z-Up) coordinate systems.

If you view scene in top orthographic view in Blender,you can see that x and y axises are at the floor (Representative)

3D applications like Cinema 4D,Maya,Houdini,graphics APIs and the most game engines use different kind of approach. The screen becomes a 2D plane which uses X/Y coordinates to position flat images, while Z coordinate represents depth in the scene.

If you view scene in top orthographic view in Cinema 4D,you can see that z axis shows up direction which means it represents depth of page from Front View

Finally,you can find some of 3D Applications using different systems below. Understanding the logic of different axis systems matters even if you are a 3D Artist,Game Developer or Game Designer.

If you like the article please support me by clapping the article and following me:) Thanks for reading. See you in a different article.

--

--

Ahmet Burul

Software Engineer — 3D Artist — Game Developer — Team Worker