miércoles, 10 de abril de 2013

Conceptos

Investigar:
concepto y como manejar estos conceptos en Opengl

PUERTO DE VISIÓN Y VENTANAS

Especificamos los parámetros del visor con la función OpenGL



Donde todos los valores de los argumentos se proporcionan en coordenadas de pantalla enteras relativas a la ventana de visualización  los argumentos xvmin e yvmin especifican la posicion de la esquina inferior izquierda del visor respecto a la esquina inferior izquierda de la ventana de visualización  el ancho y la altura en pixeles del visor se establecen con los argumentos vpWidth y vpHeight. si no se invoca la funcion glViewporc en un programa, el tamaño y la posicion predeterminados del visor son los mismos que los de la ventana de visualizacion.
Después de que se han aplicado las subrutinas de recortes, la posiciones dentro del cuadrado normalizado se transforman en el rectangulo de visor utilizando la matriz. Las coordenadas de la esquina superios derecha del visor se claculan para esta matriz de transformacion en funcion del ancho y de la altura del visor.

en la trasformacion final, los colores de los pixeles de las primitivas dentro del visor se cargan en el bufer de refresco en las posiciones de pantalla especificadas.
Se pueden crear multiples visores en OpenGL para una gran variedad de aplicaciones. Podemos obtener los parametros del visor activo actualmente utilizando la funcion de consulta:




donde vpArray es una matriz de un unico indice y cuatro elementos. Esta funcion Get devuelve los parametros del visor actual en vpArray en el orden xvmin, yvmin, voWidth y vpHeight. En una aplicacion  interactiva, por ejemplom, podemos utilizar esta funcion para obtener los parametros del visor que contiene el cursor de panatalla.

PROYECCION ORTOGONAL

  Una proteccion ortografica es cuadrada en todas sus caras. esto produce una proyeccion paralela, util para aplicaciones de tipo CAD o dibujos arquitectonicos, o tambien para tomar medidas, ya que las dimensiones de lo que representan no se ven alteradas por la proyeccion.

Una aproximacion menos tecnica pero mas comprensible de esta proyeccion es imaginar que se tiene un objeto fabricado con un material deformable, y se aplasta literalmente como una pared. Se obtendria el mismo objeto, pero plano, liso. Pues eso es lo que se veria por pantalla.

Para definir la  matriz de proyeccion ortografica y multiplicarla por la matriz activa (que deberia ser en ese momento la de proyeccion, GL_PROJECTION), se utiliza la funcion glOrtho, que se define de la siguiente forma.



siendo todos flotantes. Los valores de Znear y Zfar no son las posiciones de esos planos en el espacio ·D. representan la distancia desde el centro de proyeccion, con valor positivo ha cia delante y negativo hacia atras. Con esto simplemente se acota lo que sera el volumen de visualizacion (un cubo).

 Ejemplo:
es un render de un conche con proyeccion ortografica, visto desde delante.


el codigo utilizado para definir  la proyeccion ha sido:




se podra apreciar la diferencia usando una proyeccion perspectiva.

PROYECCION EN PERSPECTIVA

Una proyeccion en perspectiva reduce y estirar los obejos mas alejados del observador. Es importante saber que las medidas de la proyeccion de un  objeto no tienen por que coincidir con las del objeto real, ya que han  sido deformadas.

El volumen de visualizacion creado por una perspectiva se llama frustum. Un frustum es una seccion piramidal, vista desde la parte afilada hasta la base.


 Se puede definir esta proyeccion utilizando la funcion glFrustum. Pero existe otra funcion de la libreria GLU llamada gluPerspective que hace el proceso mas sencillo. se define de la siguiente forma:


Los parametros de gluPerspective son flotantes y definen las caracteristicas mostradas en la ilustracion, el angulo para el campo de vision en sentido vertical, el aspecto que es la relacion entre la altura y la anchura y las distancias znear y zfar de los planos que acotan el fustrum el observador. Los valores de znear y zfar no son las posiciones de esos planos en el espacio 3D, representan la distanci desde el centro de proyeccion, con valor positivo hacia delante y negativo hacia atras.

La siguiente ilustracion, muestra la escena del coche de la seccion anterior, esta vez con la proyeccion en perspectiva:


El codigo utilizado para definir la proyeccion ha sido:

Se usan 45º de angulo, la relacion entre el ancho y alto de la  pantalla (width y height son el ancho y alto actual de la ventana) y las distancias a los planos de corte znear y zfar son 0.01 y 100 respectivamente.

Fuentes:
http://sabia.tic.udc.es/gc/Tutorial%20OpenGL/tutorial/cap4.htm

No hay comentarios:

Publicar un comentario