Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

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)

share|improve this question
add comment

3 Answers

up vote 9 down vote accepted

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.

share|improve this answer
    
Far-ff days from cathode ray tubes? Not that far off :) –  ashes999 Feb 8 '12 at 2:46
add comment

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.

share|improve this answer
add comment

Niether left nor right handed conventions are 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 coordiante systems.

share|improve this answer
    
'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. –  MrCranky Jul 8 '11 at 8:45
1  
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. –  Josh Petrie Jul 8 '11 at 14:07
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.