Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Construir la matriz de vista

Iniciado por O2, 18 de Febrero de 2003, 11:34:52 AM

« anterior - próximo »

O2

                                Buenas!

Para desacerme de una vez por todas del gluLookAt me propuse construir a mano la matriz de vista a partir de los vectores Posición, Dirección y Up, y multiplicarla directamente con glMultMatrix.

He estado buscando en internet y en las formas que he visto de construirla, la gente usa 4 vectores, añadiendo a los que ya dije un vector "Right"

La matriz vista quedaria asi:



//  |  rx   ry   rz  -(r.e) |

//  |  ux   uy   uz  -(u.e) |

//  | -lx  -ly  -lz   (l.e) |

//  |   0    0    0     1   |

//

// Where r = Right vector

//       u = Up vector

//       l = Look vector

//       e = Eye position in world space

//       . = Dot-product operation





Ahora bien, mi pregunta es: ¿Para que sirve este vector Right? ¿Es realmente necesario? y lo más importante ¿Como construyo la matriz vista prescindiendo de el?

Muchas gracias y un Saludete!!                                

Mars Attacks

                                Hace miles de años hubo un thread por aquí (dios mío, ¿estos foros no tienen una función de búsqueda?No lo encuentro) disertando sobre el tema. Al parecer, si bien no es imprescindible (puesto que puede obtenerse mediante la multiplicación vectorial positiva del look_at y del up), sí puede ser recomendable para obtener fácilmente un desplazamiento lateral de la cámara si vas a hacer uso intensivo de él.
Sobre cómo puedes deshacerte... prueba con 1 0 0 0.

Por cierto, creo que acabas de darme la solución a un problemilla que tenía hace tiempo sobre cómo hacer que un bicho me apuntara a una determinada dirección.                                

O2

                                Pues ala, matemos dos parajos de un tiro jejeje...

Probare como me dices, aunque por otro lado si con el vector Right puedo hacer Strafe mas facilmente, no se...

En fin, Gracias Mars!                                

BeRSeRKeR

                                Con esos 3 vectores (right, up y look), lo que estás especificando es el sistema de referencia sobre el cual se aplican las transformaciones. De ahí que el vector right es imprescindible a la hora de construir la matriz de vista. Otra cosa es que a funciones ya hechas no se lo tengas que pasar ya que éstas lo calculan internamente con el producto vectorial entre up y look...

Saludos                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Mars Attacks

                                Bueno, pues por fin una explicación que me hace ver la luz. Gracias, BeRSeRKeR  :D                                






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.