jueves, 29 de marzo de 2012

ACTIVIDAD 2 RESUMEN

OPENGL
·         Proyección: Trasforman una escena 3d “abstracta”, en una imagen plana que puede ser visualizada en una pantalla.
·         Viewport: Ajustan el producto de la proyección a las dimensiones de un rectángulo contenedor (ventana).
·   De vista: Que definen y afectan la posición desde la cual se visualizan las escenas tridimensionales.
·         Modelado: Sirven para manipular los objetos en la escena, permitiendo trasladarlos, rotarlos y deformarlos (escalarlos).
·         Modelo-Vista: Son la combinación de las dos transformaciones anteriores, que desde un punto de vista práctico son semejantes. 


 
  •  void glMatrixMode( enum mode ); Permite seleccionar la matriz sobre la cual se realizaran las operaciones, los posibles valores de mode son TEXTURE, MODELVIEW, COLOR o PROJECTION . Por ahora las más interesantes son MODELVIEW y PROJECTION, las otras se verán en su momento.
  • Void glLoadMatrix{fd} (T m[16]); Recibe una matriz de 4×4 que reemplaza la actual seleccionada. El arreglo es ordenado en forma de una matriz que tiene orden Y, a diferencia de las matrices convencionales que tienen orden X, lo que quiere decir que tiene la forma:     m = [a1 ,a2 ,a3 ,a4 ,a5 ,a6 ,a7 ,a8 ,a9 ,a10, a11, a12, a13, a14, a15, a16]
  • void glMultMatrix{fd}( T m[16] ); Multiplica la matriz actual por la matriz m[16] y reemplaza la matriz actual con el resultado de la operación. La operación resultante sería algo así como A’ = A M , donde A es la matriz actual, M es la matriz suministrada y A’ es la nueva matriz que resulta de la operación y que reemplaza a A.
  • void glLoadTransposeMatrix{fd}( T m[16] ); Realiza una función similar a LoadMatrix(
  • void glMultTransposeMatrix{fd}( T m[16] ); Misma funcionalidad que MultMatrix() , solo que actúa en base al la matriz en orden X, o sea la transpuesta.
  • void glLoadIdentity( void ); Remplaza la matriz actual por la matriz identidad de tamaño 4×4.
  • void glPushMatrix( void ); Coloca una copia de la matriz actual en la parte superior de la pila correspondiente.
  • void glPopMatrix( void ); Saca el elemento superior de la pila, que pasa a reemplazar a la matriz actual. 
TRANSFORMACIONES EN OPENGL
PROYECCIÓN
Como ya se ha visto en tutoriales anteriores, OpenGL maneja 2 tipos de proyección en perspectiva y ortográfica.
PRESPECTIVA.-  corresponde a la visión “realista” de la escena, mientras que la segunda es una “plana” que no deforma las dimensiones de los objetos dependiendo de su distancia a la cámara.
ORTOGRÁFICA: Para ajustar la proyección ortográfica se utiliza el siguiente grupo de funciones:
glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);
Esta función permite controlar los parámetros del volumen de vista izquierdo, derecho, abajo, arriba, cerca y lejos. Hay que recordar que debido a que no se posee percepción de profundidad en este modo el valor del volumen deberá corresponder en la mayoría de los casos a un volumen suficientemente grande para contener los objetos de la escena.
gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
Esta función es simplemente una forma de la anterior, en donde se ha despreciado el valor de Z asignando los valores near = -1 y far = 1, generalmente se utiliza para escenas planas, en las que los objetos carecen de profundidad.
Perspectiva: Existen dos manera de manejar la proyección en perspectiva, a través de de una función gl o mediante la librería glu (una tercera puede ser realizar los cálculos de la matriz “manualmente”. En el primer caso:
glFrustrum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far)
Esta función crea una matriz y la multiplica por la matriz de proyección actual.
Transformaciones ModelView
Una tarea muy común en la creación de gráficos 2d, 3d y videojuegos es la de mover objetos par crear cierta animación. La primera idea que se nos viene a la cabeza en el caso de OpeGL es que todo modelo está formado por primitivas, toda primitiva por puntos y finalmente todo punto por una tripleta de coordenadas XYZ, así que si se cambian las coordenadas todo de ahí hacia arriba se mueve.
Después de un tiempo tal vez se requieran realizar unas tareas un poco mas complicadas como rotar el objeto alrededor de su centro, o alrededor de la posición donde se encuentra con respecto al sistema coordenada. Esta tarea no es tan simple y requiere algo de conocimiento en matemático para hacerse, debido a que probablemente implique la implementación de un sistema para almacenar y operar matrices, implementación de coordenadas homogéneas, etc. OpenGL provee de estos sistemas y utiliza algunas simples funciones para su acceso, contando con tres operaciones básicas: mover, rotar y escalar un conjunto de vértices.
void glRotate[fd](GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
Realiza una rotación del espacio coordenado por una medida de (angle) tomados en grados a lo largo del vector determinado por (x,y,z). Es recomendable que (x,y,z) representen un vector normalizado (o sea magnitud(x,y,z) = 1), debido a que si no es así OpenGL intentará normalizarlo. La rotación se lleva siguiendo la regla de la mano derecha, teniendo en cuenta que el vector (x,y,z) apunta con el “pulgar” hacia adentro (hacia uno).
void glTranslate[fd](GLfloat x, GLfloat y, GLfloat z);
Esta función traslada el espacio coordenado en x, y, z unidades sobre sus respectivos ejes coordenados X, Y, Z.
void glScalef(GLfloat x, GLfloat y, GLfloat z);
Cambia la proporción de los objetos respecto a los ejes coordenados, lo que es equivalente a decir que los estira o encoge una cantidad determinada por los parámetros de la función x,y,z.



COORDENADAS OCULARES
Las coordenadas oculares se sitúan en el punto de vista del observador, sin importar las transformaciones que tengan lugar.

TRANSFORMACIONES
Las transformaciones son las que hacen posible la proyección de coordenadas 3D sobre superficies 2D. También son las encargadas de mover, rotar y escalar objetos.

TRANSFORMACIONES DEL OBSERVADOR
La transformación del observador es la primera que se aplica a la escena, y se usa para determinar el punto más ventajoso de la escena.
TRANSFORMACIONES DEL MODELO
Estas transformaciones se usan para situar, rotar y escalar los objetos de la escena.
TRANSFORMACIONES DE LA PROYECCIÓN
 La transformación de proyección se aplica a la orientación final del modelador. Esta proyección define el volumen de visualización y establece los planos de trabajo.
TRANSFORMACIONES DE LA VISTA
 En el momento en que se ha terminado todo el proceso de transformaciones, solo queda un último paso: proyectar lo que hemos dibujado en 3D al 2D de la pantalla, en la ventana en la que estamos trabajando. Esta es la denominada transformación de la vista.
 MATRICES
 Las matemáticas que hay tras estas transformaciones se simplifican gracias a las matrices. Cada una de las transformaciones de las que se acaba de hablar puede conseguirse multiplicando una matriz que contenga los vértices por una matriz que describa la transformación.
LA MATRIZ DE PROYECCIÓN 
La matriz de proyección especifica el tamaño y la forma del volumen de visualización. El volumen de visualización es aquel cuyo contenido es el que se representa en pantalla.
PROYECCIONES ORTOGRÁFICAS
Una proyección ortográfica es cuadrada en todas sus caras. Esto produce una proyección paralela, útil para aplicaciones de tipo CAD o dibujos arquitectónicos, o también para tomar medidas, ya que las dimensiones de lo que representan no se ven alteradas por la proyección.
PROYECCIÓN ORTOGONAL
Una proyección ortogonal define un volumen de la vista de tipo paralelepipédico
PROYECCIONES PERSPECTIVAS
Una proyección en perspectiva reduce y estirar los objetos más alejados del observador.

No hay comentarios:

Publicar un comentario