Logo Studenta

Semana10-Interacción

¡Este material tiene más páginas!

Vista previa del material en texto

UNIDAD II
COMPUTACIÓN GRÁFICA II
▪ Interacción con el modelo.
Semana 10
Al término de la sesión, el estudiante diseña una interacción con el modelo OpenGL haciendo
uso del mouse e implementando menús en la ventana de visualización.
Logro de 
Aprendizaje
¿Interacción del modelo, cuál es su importancia?
Responder en el foro
Introducción
La captura y el manejo de eventos es esencial para crear
aplicaciones interactivas.
OpenGL no proporciona ninguna herramienta que nos permita
capturar eventos.
Pero la librería FreeGLUT si.
Y también crear menús desplegables.
Eventos
Una de las finalidades de la librería FreeGLUT es cubrir la necesidad de soportar eventos de mouse, teclado
y ventana
Funciones relacionadas 
con los eventos de 
teclado
Funciones relacionadas 
con los eventos del ratón
Funciones relacionadas 
con los eventos de 
ventana
Eventos
Funciones relacionadas con los eventos de teclado
void glutKeyboardFunc(void(*f )(unsigned char tecla,int x, int y));
void glutSpecialFunc(void (*f )(int tecla, int x, int y));
Eventos
Funciones relacionadas con los eventos del ratón
De entre los callbacks que nos da la GLUT, son especialmente interesantes para el control del mouse los
siguientes:
void glutMouseFunc( void (*func) (int button, int state, int x, int y))
La función func(button, state, x, y) se llamará tanto cuando 
se apriete (state = GLUT_DOWN) como cuando se suelte 
(state = GLUT_UP) el botón definido por el parámetro button 
en la posición (x,y).
void glutMotionFunc(void (*func) (int x, int y))
La función func(x, y) se llamará cuando el mouse se mueva 
mientras está pulsado uno de sus botones.
Eventos
Funciones relacionadas con los eventos de 
ventana
void glutReshapeFunc(void (*f )(int ancho, int alto));
Además, con la orden glutPostRedisplay() el programador puede generar un evento para 
solicitar el redibujado de la ventana.
Menús
GLUT provee una manera sencilla de definir menús para nuestra aplicación. Veamos algunas de las
herramientas de que disponemos para trabajar con menús:
int glutCreateMenu(void (*func) (int value)
❑ Esta función crea un menú (todavía sin opciones) y le asigna la función
func(value). Esta función se llamará cada vez que una de las opciones 
del menú sea seleccionada por el usuario y recibirá en value el código 
identificativo de la opción seleccionada. De esta manera, podremos 
definir que hace cada opción de menú. 
❑ Devuelve un identificador de menú, que nos servirá cuando tengamos 
que referirnos a él.
void glutSetMenu(int menu)
Esta función hace que el menú identificado como menú sea el menu actual.
Por defecto, el menú actual es el último que se ha creado.
Void glutAddMenuEntry(char *name, int value)
Añade una opción de menú al menú actual. Esta opción se llamará name y
se identificará por el número value.
Menús
GLUT provee una manera sencilla de definir menús para nuestra aplicación. Veamos algunas de las
herramientas de que disponemos para trabajar con menús:
Void glutAddSubMenu(char *name, int menu)
Añade una opción de menú que abrirá un submenú (en lugar de 
ejecutar directamente un comando, como en el caso anterior). La 
opción se llamará name y el menú que aparecerá será el 
identificado como menu (ver función glutCreateMenu).
Void
glutChangeToMenuEntry (int entry, char *name, int value)
Esta función sirve para modificar una opción del menú actual. El 
parámetro entry nos indica la opción a modificar (por ejemplo, 
para modificar la primera, entry = 1), name será el nuevo nombre 
de la opción y value el nuevo identificador que se le pasará a la 
función controladora de menú.
void glutAttachMenu(int button)
Esta función hace que el menú actual aparezca cada vez que se 
pulse el botón del mouse indicado por button
(GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON, 
GLUT_RIGHT_BUTTON).
Menús
Ejemplo:
Menús
Ejemplo:
EJEMPLO 1: USANDO
EVENTOS DEL MOUSE 
PROGRAMAR QUE EL 
TEAPOT GIRE SEGÚN
DIRECCIÓN DEL 
MOUSE
Interacción con 
el Mouse
EJEMPLO2: REALIZA UNA 
INTERACCIÓN DE LA 
CAMARA USANDO LAS 
FECHAS: 
TECLA ARRIBA: ACERCA LA CAMARA
TECLA ABAJO: ALEJA LA CAMARA
TECLA IZQ.: MUEVE LA CAMARA A LA IZQUIERDA
TECLA DER.: MUEVE LA CAMARA A LA DERECHA
CAMARA
EJEMPLO 3: CREA UN 
MENÚ PARA CAMBIAR 
EL COLOR DE FONDO
DE LA VENTANA DE 
VISUALIZACIÓN Y PARA 
AGREGAR UN PISO
DEBAJO DEL TEAPOT.
Menús
COMBINA EVENTOS 
DEL MOUSE, UTILIZA
MENÚS E 
INTERACCIÓN CON LA 
CÁMARA PARA 
MOSTRAR CADA UNA 
DE LAS SIGUIENTES 
ESCENAS EN UNA 
MISMA PANTALLA DE 
VISUALIZACIÓN
PRÁCTICA GRUPAL
❑ ¿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ón a 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
	Diapositiva 1
	Diapositiva 2
	Diapositiva 3
	Diapositiva 4
	Diapositiva 5
	Diapositiva 6
	Diapositiva 7
	Diapositiva 8
	Diapositiva 9
	Diapositiva 10
	Diapositiva 11
	Diapositiva 12
	Diapositiva 13
	Diapositiva 14
	Diapositiva 15
	Diapositiva 16
	Diapositiva 17
	Diapositiva 18
	Diapositiva 19
	Diapositiva 20
	Diapositiva 21

Continuar navegando