Logo Studenta

Semana3-TransformacionesModeloVista2D

¡Este material tiene más páginas!

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

Continuar navegando

Materiales relacionados

690 pag.
Lector22

SIN SIGLA

User badge image

kresur21

541 pag.
modelado_matematico - Axel

User badge image

Muchos Materiales

85 pag.
Manual-opengl

BUAP

User badge image

Estudiando Y Aprendendo