9
\$\begingroup\$

In Blender and other 3D modeling tools, the coordinate system is right-handed, while in Unity 3D and Orbiter Space Flight Simulator, they are left-handed, why this could happen? Why they don't simply use the right-hand coordinate system all the time to make things easier? Why don't all programs that deal with 3D graphics use Z+ as up?

 Y         |  Z
 ZX        |  YX
RIGHT-HAND | LEFT-HAND
TOP VIEW   | TOP VIEW

(fortunately, Unity3D converts from Blender coordinate system to Unity3D coordinate system)

\$\endgroup\$
0

3 Answers 3

11
\$\begingroup\$

It's just tradition. Neither system is objectively better than the other, so you just have to get used to using both and switching between them from time to time!

Right-handed coordinates are traditional for modelling where one imagines the XY-plane to be horizontal, and the Z-axis to be vertical.

Left-handed coordinates are traditional for cameras where one imagines the XY-plane to be vertical (corresponding to screen coordinates if the camera is upright), and the Z-axis is into the screen (corresponding to the Z in the Z-buffer).

So modelling applications like Blender often use right-handed coordinates and game development toolkits like Unity often use left-handed coordinates. But some systems go the other way: RenderMan is left-handed, and OpenGL is right-handed (or at least early versions were, it's fairly agnostic now).


Another reason why handedness can differ is because of different conventions about the direction of the Y axis in two dimensions. Back in those far-off days when computer displays used cathode ray tubes, the display was scanned from top to bottom and left to right by the electron beam. So it was convenient to have the Y axis running down the screen, with the coordinate origin in the top left. On the other hand, it's conventional in mathematics for the Y axis to point upwards, with the coordinate origin in the bottom left. When you add a Z axis, these conventions give rise to three-dimensional coordinate systems of different handedness.

\$\endgroup\$
1
  • \$\begingroup\$ Far-ff days from cathode ray tubes? Not that far off :) \$\endgroup\$
    – ashes999
    Feb 8, 2012 at 2:46
3
\$\begingroup\$

Simple answer, because there is no strict rule about following a certain convention.

You can even create a new coordinate system for your application. And people, who will be using it, will have to get used to with the new thing. No question.

\$\endgroup\$
0
\$\begingroup\$

Neither left nor right handed convention is objectively better than the other and similarly, no choice for which axis should be "up" is objectively better than the other. Different applications will have different requirements and for them, one particular choice may be more ideal. But that's not true in general.

Besides, it is a straightforward operation to convert between coordinate systems.

\$\endgroup\$
3
  • 2
    \$\begingroup\$ 'straightforward'? I guess someone has never had to convert quaternion based animation data from a right-handed modelling tool into an engine where everything is in left-handed space. \$\endgroup\$
    – MrCranky
    Jul 8, 2011 at 8:45
  • 1
    \$\begingroup\$ I have, and worse; I didn't say 'easy,' I said straightforward. Transforming transformations (such as animation data) can be reduced to just another matrix transformation. Deriving which particular transformation is appropriate is slightly tricky. \$\endgroup\$
    – user1430
    Jul 8, 2011 at 14:07
  • \$\begingroup\$ It's right that there is no obvious choice for which axis should be "up". However whichever axis choose to be up should be up consistently. And obviously up must be positive, at least in 3D coordinate. With the same logic forward must also be positive. And right is consistently always positive in every convention. By these reasoning we can argue that any application choose to use RHC must use Z up. And if you want Y up you must use LHC. But many 3D application and engine not respect this and use Y up with RHC. And the root cause is it just want to align with engineering format \$\endgroup\$
    – Thaina Yu
    Feb 2 at 7:48

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .