Coordinate Space Terminology

Explanations of the various coordinate spaces used in Unreal Engine.

Windows
MacOS
Linux

Spaces

Space in Unreal

Other Names

Description

Tangent

Orthogonal (can deviate after interpolation), can be left or right handed. The TangentToLocal transform contains rotation only, so it is OrthoNormal (can be inverted by transposing).

Local

Object Space

Orthogonal, can be left or right handed (triangle cull order needs adjustment). The LocalToWorld transform contains rotation, non-uniform scaling (including negative non-uniform scaling which can change the winding order), and translation.

World

The WorldToView transform contains only rotation and translation, so distances in View space are the same as in World space.

TranslatedWorld

World

TranslatedWorld - PreViewTranslation

TranslatedWorld

World + PreViewTranslation

Translated matrices are used to remove camera position from the combined transform matrices, which improves precision when transforming vertices.

View

CameraSpace

The ViewToClip transform contains scale on x and y, but no translation (which would be an off center projection). It scales and translates z. It also applies a projection to convert into the homogeneous ClipSpace.

Clip

HomogeniousCoordinates, PostProjectionSpace, ProjectionSpace

After the perspective projection matrix was applied. Note that W in Clip space is the same as View Space Z.

Screen

NormalizedDeviceCoordinates from OpenGL

After the perspective divide:

left/right

-1,1

top/bottom

1,-1

near/far

0,1 (OpenGL RHI needs to transform this to -1,1)

Viewport

ViewportCoordinates, WindowCoordinates

In pixels :

left/right

0, width-1

top/bottom

0, height-1

Space Transformations

Transformation between spaces should always be named using the form X To Y.

Examples:

  • WorldToView

  • TranslatedWorldToView

  • TangentToWorld

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback