Default Coordinate System in glTF

This article provides an overview of the mathematical conventions that define the default coordinate system orientation in glTF (GL Transmission Format). It details the primary axis directions, handedness rules, and standard units used across the format to ensure consistent rendering across different 3D engines and platforms.

glTF relies strictly on a right-handed Cartesian coordinate system. In this mathematical framework, the orientation and direction of the axes are defined as follows:

  • +X Axis: Points to the right.
  • +Y Axis: Points upward (Y-up convention).
  • +Z Axis: Points toward the viewer, outward from the screen.

Because the positive Z-axis points toward the viewer, the default forward-facing direction for assets, characters, and standard cameras in glTF is along the negative Z-axis (-Z).

The Right-Hand Rule

The spatial orientation can be verified using the standard right-hand rule of mathematics:

  • Extend your right thumb along the positive X-axis (right).
  • Extend your index finger along the positive Y-axis (up).
  • Point your middle finger perpendicular to your palm; it aligns with the positive Z-axis (pointing at you).

For rotations, glTF follows the standard right-hand grip rule. A positive rotation angle represents a counter-clockwise rotation when looking down a positive axis toward the origin.

Measurement Units and Conventions

To complement its coordinate orientation, the glTF specification establishes standardized measurement units:

  • Distance: Linear distances are measured in meters.
  • Angles: Rotations are measured in radians.
  • Scale: Unit scale is 1.0 (no scaling).

Handling Cross-Platform Conversions

Because glTF uses a right-handed, Y-up convention, conversions are often necessary when importing or exporting assets to systems with differing mathematical standards:

  • Z-Up Systems (e.g., Blender, 3ds Max): Assets must undergo a 90-degree rotation around the X-axis to transition between Z-up and Y-up.
  • Left-Handed Systems (e.g., Unreal Engine, DirectX, Unity default scene space): Typically require inverting one axis (usually the Z-axis) and adjusting polygon winding order to maintain proper front-face culling.