LABORATORIO COMPUTACIÓN GRAFICA

Documentos relacionados
Practica 3. Cámara. Objetivo: conocer e utilizar adecuadamente la cámara, mediante glulookat.

Funciones GLUT para Eventos y Menús

Practica 4: Eventos y Menús GLUT

Taller # 1 (OpenGL/GLUT)

WINDOWS XP. Operaciones con ficheros

Tema 1 Introducción. David Vallejo Fernández. Curso 2007/2008. Escuela Superior de Informática

Configuración preliminar de blender para usar el editor de video.

6. TIPOS DE FUENTES DE LUZ

El programa Explorer es una herramienta muy potente para visualizar y moverse a través del árbol de directorios de su ordenador.

Bienvenido al módulo de formación sobre programación de DriveAP. Para ver en forma de texto las notas del presentador, haga clic en el botón Notas de

1. Detalle de los Comandos:

Profesor: Marcelo Rebellato. Teórico 3. Teclado

INCIO DE WORD. Mis primeros pasos

EL EXPLORADOR DE WINDOWS II

Copyright 2017 HP Development Company, L.P.

Manos a la obra. Selección de archivos

MATERIA: TECNOLOGIA DE LA INFORMACION Y LAS COMUNICACIONES II DOCENTE: ING. MAYNOR GUILLERMO REYNADO RIVAS. UNIVERSIDAD TECNICA LATINOAMERICANA

Tema 2 Sistema operativo y aplicaciones básicas

MANUAL BASICO DE INSTRUCCIONES Y COMANDOS SMART DFD 1.0

Taller de Videojuegos. Pedro J. Camacho

Las Computadoras y Como Usarlas Introducción

GUIA DE LABORATORIO # 2 ENTORNO DE DESARROLLO Y COMPILACIÓN DE UN PROGRAMA EN C

Formato para prácticas de laboratorio

manual de usuario Versión Marzo 2017

PROCESSING. El interfaz del programa es el siguiente: Antes de iniciar su utilización, hay que saber algunos aspectos importantes.

MANUAL DE USO DE SMART DFD

Qué es un Procesador de textos? Iniciar Word. Microsoft Word Microsoft Office 2010

2. PROCEDIMIENTO 3. OPERACIÓN. 3.1 Acceso

1. Introducción de datos

Tema 4: Viendo en 3D

Tema: Estructuras de Selección en C#.

Manual de usuario de Kiva

Librería GLUI para interfaces en OpenGL. Computación Gráfica I Septiembre-Diciembre 2011

GUIA 1: Repaso sobre uso de C#. Funciones, procedimientos y arreglos.

GRAFICACIÓN OpenGL. Profr. Hilario Salazar Martínez

Manual de usuario de la aplicación Cortona 3D

Manual de usuario. 01 Introducción

PASO # 2 - (Las ventanas)

Programación 1 Tema 5. Instrucciones simples y estructuradas

C. E. I. P. LAS VIÑAS. Bollullos del Cdo. (Huelva) Centro TIC/DIG. Las ventanas

Tema: Clases y Objetos en C#. Parte II.

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

ARCHIVOS Y CARPETAS 1

Operaciones básicas con hojas de cálculo

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

Trabajo Práctico: Función Cuadrática

Bienvenidos al curso Microsoft Word 2010

INTRODUCCION CREAR UN DISEÑO 2D.

Práctica 0: Entorno de Windows

Formato para prácticas de laboratorio

Para ingresar a la aplicación Microsoft Access 97, los pasos que se deben seguir pueden ser los siguientes:

Escuela de Procesos Tecnológicos e Industriales Sistemas Operacionales I Ambiente de Trabajo de Windows 10 GUIA 2 1 WINDOWS 10

CONOCIENDO EL NUEVO ESCRITORIO UNITY Acostúmbrate a utilizar el teclado!

Programación asíncrona con C#

Usar niveles de acceso y zonas horarias

Centro de Bachillerato Tecnológico. Manual de prácticas. Visual Basic 6.0. Nivel Básico. Industrial y de servicios No. 231.

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Mover y copiar archivos y carpetas

Microsoft Office Word

IESTP MOTUPE MICROSOFT WORD 2016

Ejercicios - Intents y navegación entre actividades

INSTITUCIÓN EDUCATIVA TÉCNICA SAGRADO CORAZÓN Aprobada según Resolución No NIT DANE SOLEDAD ATLÁNTICO.

Agosto de 2012 TUTORIAL PSEINT. Servicio Nacional de Aprendizaje SENA Jordan Angulo Canabal

Dentro de las funciones básicas de un procesador de textos están; escribir, guardar e imprimir documentos.

6.2. APLICAR Y GESTIONAR ILUSTRACIONES

MICROSOFT EXCEL 2007

Agentes con Interfaz Gráfica.

TECH TUTOR. Aspectos básicos de la computadora. kcls.org/techtutor. Aspectos básicos de la computadora Rev 12/2014

Viewports e Interacción con el Mouse CG 2014.

Práctica 1. Introducción a los sistemas operativos

7. Otras sentencias Sentencia break. 84 A. García-Beltrán y J.M. Arranz

MATLAB. (PARTE III) APLICACIONES EN CONTROL CON SIMULINK SIMULINK

Tema: Estructuras de Selección en C#.

Funciones Definición de función

Nos muestra el contenido de la celda activa, es decir, la casilla donde estamos situados.

Cuentacuentos Digital: El Capitán de la Capa Roja Manual de Usuario y de Instalación

UNIVERSIDAD NACIONAL DE TRUJILLO ESCUELA DE INFORMATICA SWI PROLOG

Nombre(s): Apellidos: Teléfono. ** 1 **

Transcripción:

UNIVERSIDAD NACIONAL AUTONOMA DE MÉXICO FACULTAD DE INGENIERIA PRACTICA 5. INTERACTIVIDAD LABORATORIO COMPUTACIÓN GRAFICA PROFESORA: M.I. ELIZABETH FONSECA CHAVEZ GRUPO: 4 VAZQUEZ TOUNGATE REYNA CATALINA

INTERACTIVIDAD OBJETIVOS: 1. Preparar una ventana Windows para su uso con OpenGL. 2. Realizar un programa iterativo mediante el uso del mouse. 3. Lograr interactividad con objetos en la escena. 4. Lograr interactividad con la cámara en la escena. CUESTIONARIO PREVIO: 1. Investigue y reporte que hace la función glutidlefunc() ; GlutIdleFunc(void *(func)(void)), GLUT llama a ésta función todo el tiempo, haciendo que se logre una animación. 2. Investigue y reporte que hace función glutmotionfunc() ; "glutmotionfunc", se ejecuta cuando hay eventos del ratón, tales como tener pulsado el botón izquierdo o derecho. Al principio en ambas ventanas "glutmotionfunc" llamaba a la misma función: "glutmotionfunc(mousemotion)", lo cual hacía que al pinchar con el ratón en cualquiera de las ventanas las variables quedarán modificadas para cuando pinchaba con el ratón en la otra ventana. 3. Investigue y reporte que hace la función glutdisplayfunc() glutdisplayfunc(). Esta función es la más importante de las funciones callback. Gracias a la definición de las funciones callback, GLUT hace posible una dinámica de programación de aplicaciones OpenGL. Una función callback será llamada por GLUT para hacer alguna operación especifica cada vez que se produzca un evento. En este caso, glutdisplayfunc(display), define que la función display que es pasada como argumento sea ejecutada cada vez que GLUT determine que la ventana debe ser dibujada (la primera vez que se muestra la ventana) o dibujada (cuando se maximiza, cuando se superponen varias ventanas, etc). 4. Investigue y reporte que hace la función glutidlefunc(). Si esta activada, la llamada a idle es continuamente invocada cuando no es recibido algún evento. 5. Investigue y reporte que hace la función glutmainloop(); Ingresa el bucle de procesamiento de eventos de GLUT INTRODUCCION: Opengl proporciona una función que permiten registrar los eventos producidos por los clicks del ratón.

El nombre de esta función es glutmousefunc() y se suele llamar en la fase de inicialización de la aplicación. Su sintaxis se puede ver en el siguiente ejemplo: void glutmousefunc(raton); Donde ratón es el nombre de la función a la que se llamará cuando se invoque al manejador de eventos del ratón. Esta función tiene que estar definida de la siguiente forma: void raton (int button, int state, int x, int y) Al igual que en el caso de la función que manejaba eventos del teclado, ésta no devuelve datos, simplemente da la oportunidad de modificar atributos de nuestro programa. Los parámetros de entrada que necesita son cuatro. El primero de ellos se refiere al botón que ha sido presionado (botón izquierdo, central o derecho), puede contener uno de estos 3 valores: GLUT_LEFT_BUTTON GLUT_MIDDLE_BUTTON GLUT_RIGHT_BUTTON El segundo argumento se refiere al estado que presentaba el botón cuando fue generada la llamada (callback), por ejemplo pulsado o no pulsado. Los valores que puede tener son: GLUT_DOWN GLUT_UP Cuando se genera una llamada con el estado GLUT_DOWN, la aplicación asume que este estado será sucedido por el estado GLUT_UP, incluso si la posición del ratón se sale fuera de la ventana actual. Sin embargo, si se llama a la función de nuevo, pasándole NULL como argumento, el proceso dejará de enviar cambios de estado. Los dos parámetros restantes proporcionan las coordenadas (x,y) del ratón relativas a la esquina superior izquierda de la ventana cuando se pulsa el botón del ratón. Detección de movimientos Opengl proporciona también un método de detección de movimientos de ratón. Existen dos tipos de movimientos manejados por GLUT, son movimiento activo y pasivo. El primer tipo aparece cuando se mueve el ratón mientras está pulsado un botón. En cambio, el movimiento pasivo, se produce con el sólo movimiento del ratón. Si una aplicación está ejecutándose, se generará un evento por frame durante el periodo en el que el ratón está haciendo un movimiento de arrastre. Por lo general se debe registrar la función que será responsable del manejo de los eventos de movimiento. GLUT permite especificar dos tipos diferentes de funciones: una para los movimientos pasivos y otra para los activos. Las cabeceras para estas funciones son las siguientes:

void glutmotionfunc(void (*func) (int x,int y)); (arrastre activo) void glutpassivemotionfunc(void (*func) (int x, int y)); (arrastre pasivo) Donde func es la función que se llamará cuando se detecta el evento. Los parámetros que se le pasan a estas funciones de procesado son los mismos para ambas, las coordenadas (x,y). Detección de abandono de la pantalla de la aplicación GLUT es capaz de detectar cuando se entra o se sale de la ventana de la aplicación. Se puede usar una función para manejar estos dos eventos: void glutentryfunc(void (*func)(int state)); Donde el parámetro state se refiere al estado actual de la posición del ratón en cuanto a si ha salido o ha entrado en la ventana de la aplicación. Sus posibles valores son los siguientes: GLUT_LEFT GLUT_ENTERED Detección de pulsación en teclas especiales OpenGL proporciona una función que indica si están pulsadas en cada momento las teclas especiales SHIFT, ALT y CONTROL. int glutgetmodifiers() Devuelve los códigos (como bitmask, que se pueden combinar con operadores lógicos: &) GLUT_ACTIVE_SHIFT, GLUT_ACTIVE_ALT o GLUT_ACTIVE_CTRL como enteros. Se puede usar dentro de las funciones asociadas a los callbacks de teclado y glutmousefunc, asociado al ratón (no funciona dentro de los otros callbacks de gestión del ratón), para detectar combinaciones de entrada, de teclas del teclado y del ratón, con estas teclas especiales. La instrucción de comprobación sería del tipo: if (glutgetmodifiers() == GLUT_ACTIVE_SHIFT) Relacionado con este tema está el callback glutspecialfunc que permite detectar la pulsación de teclas especiales como las de función o las flechas de dirección. DESARROLLO: Ejercicio 1 Para este experimento tenemos un programa que luego de iniciada la ventana Windows, pone a la PC a esperar un evento de teclado, ratón o josytick. La función glutmainloop() hace que el computador espere la ocurrencia de un evento para entonces invocar a la función respectiva (callback).

Mientras no ocurra un evento, GLUT invocará la función glutidlefunc(), la cual a su vez invoca la generación de la escena en la función RenderScene(). La función 1. Vamos a crear un nuevo proyecto dentro de la carpeta prácticas_gl. Así que presione en secuencia menú File->New Project o simplemente presione simultáneamente las teclas ctrl+shift+n. El nuevo proyecto se llamará ejer08. 2. Localice el archivo el archivo ejemplomouse.cpp y cópielo de su origen a la carpeta \prácticas_gl\ejer08. 3. Presione la secuencia menú Project->Add Existing_Item o simplemente presione la combinación de teclas Shift+Alt+A. 4. El programa consta de las siguientes partes a. Sección de variables globales. b. Subrutina luces() para habilitar la ecuación de iluminación de OpenGL. c. Subrutina EjesReferencia() para dibujar los ejes del sistema de referencia de OpenGL.habilitar d. Subrutina cubo() Para definir una lista de primitivas que luego serán invocadas. e. Subrutina idle() Es una subrutina que se invoca mientras GLUT no percibe ningún evento de teclado, ratón o joystic y que se encarga de redibujar la escena tan pronto como sea posible. f. Subrutina ControlMovimientoRaton() Esta subrutina es un callback que se invoca en respuesta a un evento de ratón. g. Subrutina RenderScene() Para invocar las subrutinas anteriores. h. Subrutina main() Para crear una ventana Windows para uso con OpenGL. 5. Construya y ejecute. 6. Reporte la gráfica obtenida.

*El cubo se va moviendo cuando ocurre con un clic del ratón, se mueve con el movimiento del ratón y las imágenes muestran los diferentes movimientos que tuvo con el ratón. Ejercicio 2 7. Elabore un diagrama de bloques que ilustre el funcionamiento del programa del ejercicio 1.

Ejercicio 3 8. Modifique el programa del ejercicio para que sea la cámara la que se mueva en respuesta a eventos del ratón.

CONCLUSIONES: Al realizar esta práctica aprendí el código que se necesita para tener interactividad con algún dispositivo como el mouse, el teclado, etc, pues al crear la animación en este caso el cubo se movía conforme al movimiento del ratón.