PROYECCIONES

La proyección la necesitamos para decirle a OpenGl como debe visualizar los objetos de la escena y  también necesitaremos una cámara para definirle desde que punto estamos mirando la escena y hacia donde estamos mirando.
Primero aprenderemos a colocar la cámara y después a definir el tipo de proyección, gracias a las proyecciones openGl será capaz de convertir el mundo de 3D a 2D ya la pantalla de nuestro pc es 2D.

COLOCACIÓN DE LA CAMARA

La cámara es el punto de donde estamos situados e indicamos hacia donde miramos de nuestra escena, otra manera de decirlo seria que son nuestros ojos.
Para situar la cámara y decir hacia donde miramos usaremos la función
gluLookAt( eyeX, eyeY, eyeZ, cenX, cenY, cenZ, vpX, vpY, vpZ)
Donde eyeX, eyeY, eyeZ es la posición de la cámara.
cenX,cenY,cenZ es el punto a donde mira la cámara.
vpX, vpY,Vpz es la orientación de la cámara. El vector vp no puede ser paralelo al vector formado por eye y cen, es más, debería serle perpendicular.
Esta función se tiene que utilizar al principio de dibujar nuestra escena es decir dentro de la función Render y al principio, así podremos cambiar la posición de la cámara o cambiar la dirección a la que mira para simular que nos estamos moviendo en nuestra escena.
Ui! Casi me olvido!! Antes de llamar a la función gluLookAt tenemos que activar la matriz GL_MODELVIEW

DEFINIR PROYECCIÓN

Tenemos varios tipos de proyección dos de ellas son la ortogonal o la perspectiva.
Para cambiar el tipo de proyección lo haremos mediante la función glMatrixMode(GL_PROJECTION) para indicar que vamos a modificar esta matriz. A partir de ahora todas las transformaciones que hagamos serán aplicadas a esta matriz.
La proyección solo tendremos que definirla una vez.

PROYECCIÓN ORTOGONAL

En este tipo de proyección no tiene en cuenta si los objetos estas cerca o lejos siempre quedan del mismo tamaño tanto si están muy cerca como si están muy lejos.
La proyección ortogonal la definimos mediante glOrtho(left, right, bottom, top, near, far), en ella definimos una caja. Para definir este tipo de proyección lo hacemos de la siguiente manera:
glMatrixMode GL_PROJECTION
glLoadIdentity
GlOrto( Xmin,Xmax,Ymin,Ymax,Zmin,Zmax )
Tambien podemos sustituir glOrto por:
gluOrtho2D( Xmin,Xmax,Ymin,Ymax)
en este caso coge por defecto los valores -1 y 1 para el eje de las Z.

DESCARGATE AQUI EL EJEMPLO

PROYECCIÓN PERSPECTIVA

Este tipo de proyección es mucho mas realista que la anterior ya que si tiene en cuenta que el mismo objeto delante de todo o al final de nuestra escena cambia de tamaño.

Para definir este tipo de proyección en openGl lo hacemos de la siguiente forma:
glMatrixMode GL_PROJECTION
glLoadIdentity
gluPerspective CampoVisualEnGrados, RelaciónDeAspecto, Znear, Zfar
CampoVisualEnGrados: es el ángulo de abertura vertical.
RelacionDeAspecto: Es el coeficiente entre la anchura y la altura del plano de proyección.
Znear y Zfar son las que definen el volumen de la perspectiva.
También podemos definir este tipo de proyección con la función
glFrustum(left, right, bottom, top, near, far)
Con esta función la OpenGl calcula el volumen de visualización para la perspectiva.
Esta función se tiene que cumplir la condición de que near sea mas grande que cero y far mas grande que near, sino no funcionara correctamente.

DESCARGATE AQUI EL EJEMPLO

Director Web Directorio AdirLink directorio web Agregar Web
Directorio Gratis Pala.net directorio de enlaces Pala.net directorio de enlaces