Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
UNIDAD I COMPUTACIÓN GRÁFICA I ▪ Transformación Modelo-Vista ▪ Transformaciones Geométricas en 2D. Semana 03 Al término de la sesión, el estudiante crea un programa aplicando el concepto de transformación modelo-vista y transformaciones geométricas en 2D. Logro de Aprendizaje ¿Qué son las transformación de visualización? Responder en el foro ¿Cuáles son las transformaciones Geométricas básicas? Transformación Geométricas Son las operaciones que se aplican a descripciones geométricas de un objeto para cambiar su posición, orientación o tamaño. También se llaman: Transformaciones de modelado Las transformaciones geométricas, pueden usarse para describir cómo los objetos deben moverse a lo largo de una escena durante una secuencia de animación o simplemente, para verlos desde otro ángulo. Transformación Geométricas Las denominadas transformaciones de modelado de OpenGL, son aplicadas a objetos para cambiar su localización y forma. Tipos Translación cambios en la posición Escalado cambios de tamaño Rotación cambios de orientación según un ángulo Transformación Geométricas El comando de translación glTranslatef(p,q,r): Traslación Traslada un objeto r unidades en la dirección z Traslada un objeto p unidades en el dirección x Traslada un objeto q unidades en la dirección y Cada punto(x,y,z) del objeto es mapeado al punto(x+p, y+q, z+r). Transformación Geométricas glTranslatef(p,q,r): Reposiciona un objeto desplazándolo a las nuevas coordenadas. Traslación En forma matricial: Transformación Geométricas glTranslatef(p,q,r): Reposiciona un objeto desplazándolo a las nuevas coordenadas. Traslación En forma matricial: Transformación Geométricas El Es una transformación rígida -> el objeto no se deforma Traslación Para trasladar líneas rectas trasladamos sólo sus extremos. Para trasladar polígonos, trasladamos sólo sus vértices y redibujamos. Transformación Geométricas Mapea cada punto(x,y,z) de un objeto al punto(ux,vy,wz). Escalado Esto tiene el efecto de extender objetos El comando de escalado glScalef(u,v,w) Por un factor w en la dirección z. Por un factor de u en la dirección de x Por un factor v en la dirección y Transformación Geométricas Rota cada punto de un objeto alrededor de un eje desde el origen O=(0,0,0) al punto (p,q,r). Rotación La cantidad de rotación es A°, medido en sentido anti horario desde (p,q,r) hasta el origen El comando de escalado glRotatef(A, p,q,r) Si la idea intuitiva que se tiene de girar un punto P alrededor de un eje, es del punto que gira a lo largo de un cilindro en ese eje, estamos en lo correcto. Transformación de visualización Transformación de visualización Las transformaciones de modelado de OpenGL controlan el movimiento del objeto: • Traslación • Escalado • Rotación La transformación de Visualización • Maneja la cámara de OpenGL Transformación de visualización La ubicación predeterminada de la cámara OpenGL se encuentra en el origen, con su lente apuntando hacia la dirección -z (la línea de visión) y con su parte superior alineada a lo largo de la dirección +y (la dirección hacia arriba). Debemos tener en cuenta, que la cámara OpenGL es simplemente un dispositivo conceptual. Transformación de visualización La representación en la que vemos los objetos dibujados, está determinada únicamente por la forma de la caja de visualización o tronco, lo cual es decidido por la declaración de proyección especificada por el programador, puede ser una proyección ortogonal (GluOrto) o una proyección con perspectiva (glPerspective) de la escena. Transformación de visualización Especifica el tronco de visualización en el sistema de coordenadas del mundo. En general, la relación de aspecto en gluPerspective debe coincidir con la relación de aspecto de la ventana gráfica asociada. Persepectiva de la escena gluPerpective(Angulo de apertura, aspecto, pcerca, plejos): ❑ El parámetro apertura corresponde al ángulo marcado en el gráfico con un máximo de 180. ❑ El parámetro aspecto será la relación entre largo y alto del plano de corte cercano (largo/alto). ❑ El parámetro pcerca será la distancia mínima al punto de vista a partir de la cual se pintaran los objetos. ❑ El parámetro plejos será la distancia máxima al punto de vista. A partir de esta distancia no se pintaran los objetos. Transformación de visualización Debemos apelar a la intuición para imaginar que estamos viendo a través de una cámara. En el caso particular de un tronco de visualización, uno puede imaginar una cámara puntual en el origen con la película frente a ella en la cara de visualización. También es intuitivo pensar en cambiar la vista moviendo y girando la cámara. ❑ Transformación de visualización glutLookAt (). El Comando Glulookat: Transformación de visualización El Comando Glulookat: simula una cámara OpenGL y su sintaxis es la siguiente:: gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz) La transformación de visualización gluLookAt() es una función de tres parámetros, siendo cada uno un vector de puntos en 3D. La diferencia del comando gluLookAt() sobre glTranslatef(), es que somos capaces de organizar la cámara OpenGL de acuerdo a cómo queremos fotografiar el objeto, en lugar de mover el objeto. Transformación de visualización El Comando Glulookat: Este comando ejecuta los siguientes pasos: Primero mueve la cámara a la ubicación eye = (eyex, eyey, eyez). Luego ubica la cámara en el centro, center = (centerx, centery, centerz). Finalmente, la cámara es rotada con respecto a su línea de visión (la línea que une el ojo y el centro), de modo que su dirección ascendente (up) es determinada por up=(upx, upy, upz). Transformación de visualización El Comando Glulookat: Permite definir de forma específica donde se va a situar la cámara, hacía donde mirará ésta y cuál será el orden de los ejes de coordenadas. Se debe usar la matriz glMatrixMode(GL_MODELVIEW) antes de glulookat Si gluLookAt altera la matriz GL_MODELVIEW y esta es la que guarda el estado de todo nuestro sistema en cuanto a transformaciones. Transformación de visualización El Comando Glulookat: Coordenadas del "at". Es el valor XYZ del punto al que queremos que mire la cámara. Coordenadas del "eye“: Es la posición XYZ dónde colocar la cámara dentro del mundo. Coordenadas del vector "up“: es un vector y no un punto. Con él regularemos la orientación de la cámara. https://www.youtube.com/watch?v=AhmabhB7mjo https://www.youtube.com/watch?v=8cJhz91wl6s Video: gluLookAt y glPerspective https://www.youtube.com/watch?v=AhmabhB7mjo https://www.youtube.com/watch?v=8cJhz91wl6s Transformación de visualización Dibujamos un cubo en el origen de coordenadas y jugamos con la cámara: void inicalizar_ventana() { glClearColor(0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); gluPerspective( angulo , largo/alto, pcerca, plejos); gluLookAt(eyex, eyey, eyez, atx, aty, atz, 0, 0, 1, 0); glMatrixMode(GL_MODELVIEW); } void formas() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); glBegin(GL_LINES); glVertex3f(0, 0, 0);…... glEnd(); glFlush(); } Inicializamos la ventana: Creamos el cubo, cara por cara: Anexo Primitivas de objetos predefinidos Hay algunos objetos que vamos a renderizar muy a menudo y vienen ya definidos. Así, disponemos de las siguientes funciones: Transformación de visualización 1.Genera el TORUS: 2.Investiga acerca de Quadratics Objects: superficies que se pueden definir mediante una ecuación cuadrática y crea el cilindro. Para ambos casos, busca los valores adecuados de los parámetros del comando Glulookat y gluPerspective para tener la siguiente escena: Actividad Calificable 3 ❑ ¿Qué aprendí? ❑¿Qué necesito reforzar? ¿Preguntas o dudas? Referencias Benstead, Luke. (2012) Programación de videojuegos con OpenGL. https://upn.vitalsource.com/books/9786074817621. Bosque, Jose. (2007). Introduccióna OpenGL. https://elibro-net.eu1.proxy.openathens.net/es/ereader/upnorte/35680?page=2 Donald, Hearn. (2006). Gráficos por computadora con OpenGL: Pearson Educación https://upn.vitalsource.com/books/9786074817621 https://elibro-net.eu1.proxy.openathens.net/es/ereader/upnorte/35680?page=2
Compartir