Descarga la aplicación para disfrutar aún más
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
Compartir