martes, 17 de abril de 2012

gluLookAt()



Permite definir de forma específica donde se va a situar la cámara, hacía donde mirará ésta y cuál será el orden de los ejes de coordenadas.

Según sea el valor del vector de vista hacia arriba el objeto que se visualizara tendrá un aspecto diferente.En OpenGL lo tenemos fácil con:

gluLookAt(eyeX, eyeY, eyeZ, atX, atY, atZ, upX, upY, upZ);

Esta es la función que determina dónde y cómo está dispuesta la cámara. Cuidado que la posición de la cámara no tiene nada que ver con el tipo de proyección que hayamos definidoPara ello recordad siempre activar esta matriz antes de llamar a gluLookAt de esta forma:

glMatrixMode(GL_MODELVIEW);

En cuanto a los parámetros que demanda la función son los siguientes:

Coordenadas del "eye". Es literalmente la posición XYZ dónde colocar la cámara dentro del mundo.

Coordenadas del "at". Es el valor XYZ del punto al que queremos que mire la cámara. Un punto del mundo obviamente.

Coordenadas del vector "up". Si, es un vector y no un punto. Con él regularemos la orientación de la cámara. Este ha de ser el vector que "mira hacia arriba" si entendemos que el vector que mira hacia adelante es el que va del "eye" hasta el "at". Variando el "up" variamos la orientación y sino mirad:


Si gluLookAt altera la matriz GL_MODELVIEW y esta es la que guarda el estado de todo nuestro sistema en cuanto a transformaciones (recordad el artículo anterior), mejor controlar la situación con los gl_push y gl_pop que ya conoceis para no desmontarlo todo....y quizás tengais que limpiar la matriz antes de tocar la cámara usando para ello una identidad.....pensad en ello un poco...8)


No hay comentarios:

Publicar un comentario