Coordinate systems and handedness
Which axis points up and whether the axes are left- or right-handed in each 3D tool and engine (Blender, Maya, 3ds Max, Houdini, Unreal, Unity, Godot, glTF, USD), and how exporters convert between them.
A coordinate system defines which direction each axis points. Two things vary between programs: which axis is up (Y or Z), and whether the axes are right-handed or left-handed. Units are the third variable; see units, scale and axes.
Handedness is easiest to check with your hands. Point your thumb along +X and your index finger along +Y; your middle finger, bent towards you, points along +Z. Whichever hand makes the picture match the program is its handedness.
#Conventions by tool
| Tool or format | Up axis | Handedness | One unit | Sources |
|---|---|---|---|---|
| Blender | Z | Right | 1 m (internal unit) | (Verge3D Wiki; Cinevva) |
| 3ds Max | Z | Right | Inches by default (system unit) | (Verge3D Wiki; 3ds Max 2016 Help) |
| Maya | Y by default, can be set to Z | Right | Centimetres by default | (Verge3D Wiki; Maya 2024 Help) |
| Houdini | Y | Right | Not stated in the source used | (Houdini Engine for Unreal documentation) |
| Unreal Engine | Z, with X forward | Left | 1 cm | (Unreal Engine 5.8 Documentation; Unreal Engine 5.8 Documentation) |
| Unity | Y | Left | 1 m | (Unity 2022.3 Manual; Unity 6.6 Manual) |
| Godot | Y | Right | 1 m | (Godot Engine 4.5 Documentation) |
| glTF 2.0 | +Y; the front of an asset faces +Z | Right | Metres | (Khronos Group) |
| USD | Y or Z, stored per stage as upAxis; fallback Y |
— | — | (OpenUSD API documentation) |
#Axis conversion between tools
An exporter or importer has to swap axes, and sometimes flip one, to keep the asset looking the same. SideFX's Houdini Engine documentation gives a worked example: Houdini is "a Y-up right handed coordinate system, while Unreal uses a Z-up left handed coordinate system", so "an asset located at (0, 10, 5) in Houdini will be located at (0, 5, 10) in Unreal" (Houdini Engine for Unreal documentation: Coordinate System). Y and Z swap; the object stays in the same visual place.
The same documentation notes a limitation: only recognised vectors are converted, so "a single "Y Position" parameter exposed in Houdini will actually control the Z position in Unreal's coordinate system" (Houdini Engine for Unreal documentation: Coordinate System). Conversion applies to geometry, but not necessarily to every number attached to it.
#Other effects of handedness
- Normal maps have their own handedness: the OpenGL (Y+) and DirectX (Y−) green-channel conventions. See tangent space and MikkTSpace and normal map.
- Mirroring with negative scale flips winding order, which glTF accounts for explicitly (Khronos Group: glTF 2.0 Specification).
- USD assets may disagree with each other. OpenUSD stores the up axis per stage, with legal values "Y" and "Z", and suggests that a "conscientious set/environment-construction tool could examine the up axis of referenced assets" (OpenUSD API documentation: Encoding Stage UpAxis). See USD for environment artists.
#Common mistakes
- Rotating in the engine to hide an export problem. The next re-import brings the problem back.
- Testing only a single cube. Axis bugs often appear only with children or animation (Unity Discussions: "Bake Axis Conversion" import setting).
- Assuming "Y-up" means the same thing everywhere. Unity and Godot are both Y-up and metric, but differ in handedness (Unity 2022.3 Manual: Rotation and orientation in Unity; Godot Engine 4.5 Documentation: Introduction to 3D).
Related: units, scale and axes, pivot point, 3D file formats, export checklist.
#Further reading and watching
References
- · Coordinate Systems · Verge3D Wiki, 2026 · docs · accessed 2026-10-21
- · Blender to Unreal Engine Export Checklist: FBX Settings, Bone Axes, and Scale (2026) · Cinevva, 2026 · article · accessed 2026-10-20
- · Units Setup Dialog · 3ds Max 2016 Help, 2016 · docs · accessed 2026-10-20
- · Settings preferences · Maya 2024 Help, 2024 · docs · accessed 2026-10-20
- · Coordinate System (Houdini Engine for Unreal) · Houdini Engine for Unreal documentation · docs · accessed 2026-10-21
- · Coordinate System and Spaces in Unreal Engine · Unreal Engine 5.8 Documentation, 2026 · docs · accessed 2026-10-20
- · Units of Measurement in Unreal Engine · Unreal Engine 5.8 Documentation, 2026 · docs · accessed 2026-10-20
- · Rotation and orientation in Unity · Unity 2022.3 Manual, 2022 · docs · accessed 2026-10-20
- · Preparing your model files for export · Unity 6.6 Manual, 2026 · docs · accessed 2026-10-20
- · Introduction to 3D · Godot Engine 4.5 Documentation, 2025 · docs · accessed 2026-10-20
- · glTF 2.0 Specification · Khronos Group (GitHub) · docs · accessed 2026-10-21
- · Encoding Stage UpAxis · OpenUSD API documentation, 2026 · docs · accessed 2026-10-21
- · FBX rotation fix for Unity · KatsBits Blender Knowledgebase, 2023 · article · accessed 2026-10-20
- · Model tab (FBX Importer) · Unity 2022.3 Manual, 2022 · docs · accessed 2026-10-20
- · "Bake Axis Conversion" import setting · Unity Discussions, 2020 · forum · accessed 2026-10-20
Pages that link here
- Units, scale and axes Topic
- USD for environment artists Topic
- Export checklist Guide
- Tangent space and MikkTSpace Key term
Last updated 2026-10-22