glMatrixMode(GL_PROJECTION);
glLoadIdentity();
La
proyección define el volumen del espacio que va a utilizarse para formar la
imagen; en el caso de la proyección perspectiva este volumen
es una pirámide truncada o frustum.
Por lo tanto, en esta proyección se produce un efecto tamaño - distancia y es
la proyección más usada en animación por ordenador o simulación visual, donde
se requiere un alto grado de realismo. El frustum de visualización se define en
OpenGL de la forma siguiente:
void
glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top,
GLdouble near, GLdouble far)
Dónde
los parámetros left, right, bottom, top, near y far definen el frustum tal y como se muestra en la figura
siguiente:
La
especificación de una proyección perspectiva mediante glFrustum puede resultar complicada debido a que la forma de
definición no resulta intuitiva. En lugar de esta orden, podemos utilizar la
rutina de la librería de utilidades de
OpenGL gluPerspective. Esta rutina
permite especificar el volumen de la vista de forma diferente, utilizando el ángulo de visión sobre el plano XZ (fovy) y el ratio de la anchura respecto a la altura (aspect). Mediante estos parámetros es posible determinar el volumen
de la vista, tal y como se muestra en la figura siguiente:
Esta
forma de definir la proyección resulta más intuitiva. La sintaxis de la rutina gluPerspective es la siguiente:
void
gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble near, GLdouble far)
Cuando
utilicemos la rutina gluPerspective
tendremos que tomar precauciones con respecto a los valores de fovy y near. Una mala elección de dichos valores puede producir
deformaciones en la imagen similares a las aberraciones ópticas habituales en
las lentes fotográficas (v.g. efecto “ojo de pez”).
Otra
forma de definir la manera en que una cámara sintética observa una escena es
mediante dos posiciones en el espacio: la del punto de interés o punto
al que la cámara está enfocando, y la del punto de vista o punto dónde
se encuentra situada la cámara. Esta forma de definir la transformación de la
vista es la que utiliza la orden de la librería de utilidades de OpenGL gluLookAt.
La sintaxis de la orden es la siguiente:
gluLookAt(GLdouble
eyex, GLdouble eyey, GLdouble eyez,
GLdouble
centerx, GLdouble centery, GLdouble centerz,
GLdouble
upx, GLdouble upy, GLdouble upz);
Donde
los parámetros eyex, eyey, eyez indican la posición del punto de
vista; centerx, centery, centerz especifican el punto de interés y upx,
upy, upz la dirección tomada como “arriba”, o inclinación de la
cámara
La proyección
ortográfica define un volumen de la vista cuya geometría es la de un
paralelepípedo rectangular (o informalmente, una “caja”). A diferencia de la
proyección perspectiva, la distancia de un objeto a la cámara no influye en el
tamaño final del mismo en la imagen. Este tipo de proyecciones son comunes en
aplicaciones de diseño asistido por
ordenador, ya que las medidas sobre la imagen son proporcionales a las
reales de acuerdo a un determinado factor
de escala. Entre las proyecciones ortográficas más comunes en este tipo de
sistemas cabe destacar la proyección
ortográfica (planta, alzado y perfil) y la proyección isométrica. La caja de visualización se define en OpenGL
de la forma siguiente:
void
glOrtho (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top,
GLdouble near, GLdouble far)
No hay comentarios:
Publicar un comentario