Una pregunta rapidilla; ¿Como puedo obtener los vectores up, left y dir, a partir de una matriz de OpenGL?
Pues supongo que será como en Direct3D salvo que en OpenGL, si no me equivoco, las matrices son column-major, por lo que las bases de un objeto con una matriz de transformación T serían (en teoría :D):
right = vec3(T[0], T[1], T[2])
up = vec3(T[4], T[5], T[6])
look = vec3(T[8], T[9], T[10])
Si es la matriz de vista (la cámara), entonces es al revés (la traspuesta).
Saludos.
Lo que voy a decir es de memoria, y puede que me equivoque por no tener tanta carrera como vosotros, si es asi corregirme, pero me pareceria interesante decir algo sobre las matrizes.
En algunos libros puedes aprender a "ver" las matrizes como algo mas que una tabla bisimensional de numeros, estos representan el espacio de coordenadas por el que se trasformaran los vectores, y en realidad son un grupo de vertices que representan ese espacio de coordenadas. puedes sacar el vector que indica la direccion de x en la primera fila, la de y en la segunda ,y la de z en la tercera.
Como ves no es casualidad que la matriz identidad sea:
Matriz3x3
100
010
001
Matriz4x4
1000
0100
0010
0001
[EDIT]
Importante!
Si no voy mal OGL usa vectores columna y no vectores fila, asi que tendras que leer las columnas de la matriz y no sus filas, primera columna X, seguna Y, tercera Z.
Ya nos contaras si hay mas! chao!!.