Conventions Reference


OpenGL

  • Right-handed Coordinate System
  • Column-Major
  • y up, -z into screen


Direct3D

  • Left-handed Coordinate System
  • Row-Major


Maya

  • x = red
  • y = green, up
  • z = blue


Matrix Stuff


PerspectiveFOV:

Right Handed:

h = cos(fov/2) / sin(fov/2);
w = h / aspect;

2*zn/w  0       0,             0
0       2*zn/h  0,             0
0       0       zf/(zn-zf)    -1
0       0       zn*zf/(zn-zf)  0



Left Handed:

h = cos(fov/2) / sin(fov/2);
w = h / aspect;

2*zn/w  0       0              0
0       2*zn/h  0              0
0       0       zf/(zf-zn)     1
0       0       zn*zf/(zn-zf)  0



LookAt:

Right Handed:

zaxis = normal(Eye - At)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)
    
 xaxis.x           yaxis.x           zaxis.x          0
 xaxis.y           yaxis.y           zaxis.y          0
 xaxis.z           yaxis.z           zaxis.z          0
-dot(xaxis, eye)  -dot(yaxis, eye)  -dot(zaxis, eye)  l


Left Handed:

zaxis = normal(At - Eye)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)
    
 xaxis.x           yaxis.x           zaxis.x          0
 xaxis.y           yaxis.y           zaxis.y          0
 xaxis.z           yaxis.z           zaxis.z          0
-dot(xaxis, eye)  -dot(yaxis, eye)  -dot(zaxis, eye)  l