TA logoThe Technical Artist
Home/Engines/Units & Axes
engines - reference
the matrix
bookmark this one

Units & Axes

reference~4 min readreviewed 2026-07-05

The tiny disagreements that cause giant props: every app's units, up-axis, forward convention, and handedness in one table - plus the fix for each common pairing. This page exists to be linked in Slack the next time something imports sideways.

The Matrix

ApplicationNative unitUpForward (convention)Handedness
BlendermetersZ+-Y (front faces -Y)Right
MayacentimetersY+Z+Right
HoudinimetersY+Z-Right
3ds Maxinches (configurable)Z+Y-Right
Unreal EnginecentimetersZ+X+Left
UnitymetersY+Z+Left
GodotmetersY+-ZRight
glTF (format)metersY+Z+Right

Read it and the whole genre of import bug explains itself: Blender->Unreal must convert meters->centimeters and re-aim forward and flip handedness; Maya->Unity only has to survive the cm->m scale. FBX carries metadata for all of this, which each importer honors slightly differently - hence the rule: fix conventions in saved export presets, never in the scene, never per-asset by hand.

Common Pairings, Fixed Once

RouteThe failure you'll seeThe fix that sticks
Blender -> Unreal100x too small, or -90 deg X-rotation stowawayExporter: Apply Scale = FBX All, Bake Space Transform = on. Full walkthrough in Blender for Game Artists
Blender -> UnityScale 100 on the import, or rotated -90 deg XSame preset as UE; Unity side: model importer "Use File Scale" on, or export glTF - Unity's glTF path skips most of the dance
Maya -> UnrealMostly painless (both cm, both Z-up-adjacent)The easy route - main check: working units actually set to cm, world-forward agreed with the team
Maya -> UnityEverything 100x too bigcm->m: let Unity's "Convert Units" do it (default on) - do NOT also scale in Maya, the classic double-conversion
Houdini -> engineFine to Unity, Y-up->Z-up confusion to UEHoudini's UE tooling/HDA path handles it; for raw FBX, set the export's up-axis to match target
Anything -> anything, charactersRoot bone rotated, animation twistsSkeletons multiply every axis sin - agree on ONE authoring orientation for rigs, validate at export (a pipeline script job)

Handedness In One Minute

Point your right hand's fingers along +X and curl toward +Y: thumb points +Z - that's right-handed, most DCCs. Unreal and Unity's +Z (or +Y) comes out the other way: left-handed. Practical consequences, beyond "the importer deals with it": cross products flip (why hand-computed normals sometimes invert crossing apps - see the math sheet), rotation signs flip (a +30 deg yaw in Blender may be -30 deg in-engine), and winding order flips - which is why a mesh mirrored with scale -1 shows inside-out in engine: its triangles now wind backwards and get culled. If you remember one thing: negative scale is not a mirror tool for game assets. Mirror the geometry, apply it, recalculate normals.

Diagnosing A Broken Import In 60 Seconds

  1. Wrong size? Units. 100x = m<->cm (Blender/UE), 2.54x = inches somewhere (hello Max). Fix the export preset's scale handling.
  2. Lying down / standing wrong? Up-axis. A -90 deg or +90 deg X rotation on import = Z-up <-> Y-up disagreement. Fix in exporter axis settings, not by rotating the mesh.
  3. Standing but facing sideways/backwards? Forward convention. Rotate the authoring orientation to your team's agreed front (Blender: front = -Y), re-export.
  4. Inside-out? Winding/negative scale. Find the -1 scale, apply it properly, recalc normals.
  5. Fixed one asset? Fix the preset, then the next asset can't have the problem. Per-asset fixes are how a project accumulates fourteen secret rotations nobody dares remove.
From the trenches

An outsourcing partner once delivered four hundred props, every one carrying rotation X=-90 "because that's how they import right." They did import right - until someone reset a transform during a layout pass and a temple pillar lay down like it was tired. We wrote a validator that rejected non-zero import rotations at the door and re-exported the batch properly through a shared preset in an afternoon. The matrix on this page was pinned in that Slack thread for a year.