jueves, 4 de octubre de 2012

Glosario de terminos


Entornos CAVE: Cave Automatic Virtual Environment, entorno de realidad virtual inmersiva.

Obturador: Dispositivo que controla el tiempo durante el que llega la luz al dispositivo fotosensible.

Emisor RF: Emisor de radiofrecuencia, basa su funcionamiento en la emisión de una onda portadora modulada por una frecuencia musical.

GPU: Graphics Processing Unit, coprocesador dedicado al procesamiento de gráficos u operaciones de coma flotante, para aligerar la carga de trabajo del procesador central en aplicaciones como los videojuegos o aplicaciones 3D interactivas.

Graficos Quadro: Diseñadas y fabricadas especialmente para estaciones de trabajo profesionales, las GPUs NVIDIA Quadro son el motor de más de 150 aplicaciones profesionales utilizadas en campos tan variados como laproducción industrial, la producción audiovisual y el entretenimiento, las ciencias y la energía.


Transformaciones geometricas traslacion, rotacion y escalacion en OpenGL


2. Transformaciones Geométricas en OpenGL (traslación, rotación y escalación).

    *Traslación:
      glTranslatef(0.0f, 0.0f, 0.0f); //glTranslatef(unidadesdetrasladoen X, traslado en Y, traslado en Z);


    *Rotación: Rota en sentido contrario a las manecillas del reloj.
      glRotatef(0.0f, 0.0f, 0.0f, 0.0f); //ángulos en grados


    *Escalación: Nos permite expandir o contraer los objetos de un vértice.
      glScalef(0.0f, 0.0f, 0.0f);



3. Uso de matrices en OpenGL

*Matriz de proyección: Especifica el tamaño y la forma de volumen de visualizacion, el cual es aquel cuyo contenido es el que se muestra en pantalla. Está delimitado por una serie de planos de trabajo. Los planos más importantes sol los de corte porque acotan el volumen de visualizacion por delante y atras. En el plano más proximo a la cáamara, se proyecta la escena para después mostrarla en pantalla. Lo que está más adelante de la cámara, no se representa.


glMatrixMode(GL_PROJECTION);


*Matriz de modelado: Es una matriz de 4x4 que representa el sistema de coordenadas transformado que está siendo utilizado para colocar y orientar los objetos.


glMatrixMode(GL_MODELVIEW);



4. Operaciones con Matrices: Dibujando el Camino

A partir de las matrices de transformación y las coordenadas de modelado del objeto, se realiza la transformación de las coordenadas en OpenGL. Sin embargo, es necesario realizar la transformación de la coordenada de la posición actual de la tortuga para representar el trayecto que dibuja al desplazarse. De manera que se actúa directamente en la matriz de transformación.

*La Pila de Matrices
Existe una función denominada display() en la que se pueden encontrar las funciones de glPushMatrix() y glPopMatrix(), las cuales nos permiten guardar una determinada matriz en OpenGL para luego recuperarla.
glPushMatrix() saca una copia exacta de la matriz superior, llevándola encima de             la pila.
glPopMatrix() elimina la matriz superior, dejando en la parte alta de la pila a la matriz que estaba en el momento de llamar a la función glPushMatrix().
glGetDoublev() nos permite obtener la matriz actual de una de las pilas. A esta función se le indica la matriz que se requiere obtener, GL_MODELVIEW y un puntero de 16 posiciones donde se rellenaran los valores de la matriz.
Es necesario cargar la pila de matrices de GL_MODELVIEW, para utilizar la matriz mModel, luego de utilizar la función PushMatrix(), de manera que no se altere la matriz actual.         
glMultMatrixd() multiplica la matriz que se encuentra sobre la pila por la matriz que tiene como argumento. En este caso, al multiplicarse por la matriz identidad, mModel queda en el top de la pila.

Proyección orthogonal y perspectiva en opengl

El significado de las proyecciones.
OpenGL es una biblioteca gráfica para la creación de escenas 3D, pero finalmente, desde el ordenador nos asomamos a ese mundo 3D a través de una ventana en dos dimensiones. Al igual que en la analogía de la cámara fotográfica, debemos proyectar el mundo 3D sobre una vista 2D, bien sea la fotografía positivada, o como en nuestra caso, una ventana 2D (Tutorial).

Al llevar a cabo una proyección, cualquier objeto que caiga totalmente fuera del campo de vista, por ejemplo, los objetos que están a espaldas del observador, no apareceran en la proyección 2D. Y de aquellos objetos que caigan parcialmente dentro del campo de vista solo se proyectará las partes que al recortarse contra el volumen de la vista caigan dentro de él.


Proyección Ortogonal.

El tipo de proyección que hemos utilizado hasta ahora es una proyección ortogonal. Una proyección ortogonal define un volumen de la vista de tipo paralelepipédico tal y como se muestra en la siguiente figura. La principal característica de esta proyección es que el tamaño de los objetos es independiente de la distancia a la que estén del observador, por ejemplo, dos cilindros del mismo tamaño, uno a cinco unidades y el otro a diez unidades de distancia del observador se proyectarán con el mismo tamaño.



Para definir una proyección ortogonal en OpenGL hay que dar los siguiente pasos:
glMatrix(GL_PROJECTION); /* Voy a manejar la matriz de proyección */
glLoadIdentity(); /* Cargo inicialmente la identidad */
/* Y ahora defino la proyección ortogonal */
void glOrtho(izquierda, derecha, abajo, arriba, cerca, lejos);

Si lo que deseamos es trabajar con una proyección ortogonal 2D:
void gluOrtho2D(izquierda, derecha, abajo, arriba);

que no es más que una proyección ortogonal donde el plan delantero está en -1 y el trasero en 1.


Proyección perspectiva.
La proyección ortogonal no da sensación de profundidad porque el tamaño de los objetos no depende de su distancia al observador. Para conseguir este efecto necesitamos definir una proyección perspectiva. Esta proyección define un volumen de la vista que es una prisma truncado de base rectangular, como el de la siguiente figura:



la función OpenGL que establece este tipo de perspectiva es:
void glFrustum(izquierda, derecha, abajo, arriba, cerca, lejos);

este modo de definir la proyección perspectiva no es demasiado intuitivo, es más sencillo establecerla con un esquema como el que se muestra en la siguiente figura:



y la función OpenGL que la establece es:
void gluPerspective(fovy, aspecto, cerca, lejos);

donde fovy es el ángulo de apertura del objetivo de la cámara, en grados, y aspecto es la relación ancho/alto de la base de la pirámide.