GUIÓN DE PRÁCTICAS Bloque no guiado
Transcripción
GUIÓN DE PRÁCTICAS Bloque no guiado
GUIÓN DE PRÁCTICAS Bloque no guiado Gráficos 3D Máster en Informática Gráfica, Juegos y Realidad Virtual Marcos García Lorenzo Práctica 4 El objetivo de las prácticas anteriores era introducir al alumno en la programación de aplicaciones 3D interactivas utilizando el API de OpenGl. De forma progresiva, se ha presentado el cauce estático de OpenGl 1.5 y el cauce dinámico de OpenGl 2.1, para terminar con una implementación sencilla de la técnica conocida como “Deferred Shading” en OpenGl. Cada bloque se ha realizado de forma guiada simplificando su implementación y permitiendo al alumno aterrizar de forma suave en el mundo de los gráficos por computador. El desarrollo de una aplicación real requiere enfrentarse a problemas que se han esquivado en las prácticas anteriores, tales como: diseñar la solución que mejor resuelva el problema que queremos resolver, configurar el entorno de desarrollo, seleccionar e incluir las librerías adecuadas, depurar programas sin tener claro que es lo que está fallando. Esta práctica pretende forzar al alumno a enfrentarse a estos problemas. De este modo, la práctica se realizará de forma no guiada. Requisitos Cada grupo de prácticas deberá implementar una aplicación que permita visualizar una estructura 3D utilizando OpenGl 3.3: - El alumno deberá crear los ficheros de configuración del proyecto para el entorno Visual Studio 2010. La estructura 3D a visualizar podrá cargarse de fichero, generarse proceduralmente en ejecución o estar definida en el código de la aplicación. De forma obligatoria se deberán utilizar las versiones 3.3 (o superior) sin compatibilidad hacia atrás (modo Core profile) de OpenGl y GLSL. Se deberá implementar un modelo de sombreado de Phong que funcione al menos con una luz y que modele como mínimo el comportamiento de la luz difusa y especular. Entregables Al igual que las partes opcionales de las prácticas 1, 2 y 3, la entrega de esta práctica se realizará a través de la página web de esta asignatura en Campus Virtual. El alumno deberá entregar un fichero ZIP con: - - Una carpeta que contenga una pequeña memoria descriptiva en formato PDF o compatible con Microsoft Word. La memoria explicará el trabajo realizado y las funcionalidades implementadas en no más de 4 páginas. Una carpeta con el ejecutable y las librerías dinámicas necesarias para lanzar dicho ejecutable. Una carpeta con el código y los ficheros de configuración del proyecto. Normativa La práctica podrá realizarse en grupos de 2. La fecha tope de la entrega se indicará en Campus Virtual. Recomendaciones A continuación se listan algunas recomendaciones. - - Empieza por algo sencillo e incrementa la funcionalidad poco a poco. Puedes empezar: o situando la cámara en el (0,0,0), o creando una matriz de proyección sencilla (puedes cogerla de los ejemplos de clase) o definiendo una geometría sencilla en tu código. Un triángulo es más que suficiente. o Implementando shaders sencillos. Es suficiente (en una primera versión) con que el shader de vértices proyecte los vértices de entrada y que el shader de fragmentos pinte todos los fragmentos del mismo color. Cuando implementes el sombreado de Phong, utiliza una luz fija definida en el shader. De este modo no hay que pasarla como parámetro uniform. Inspírate en el código de los ejemplos de clase. Los ejemplos de clase están subidos en la web de la asignatura. Inspírate en los ficheros de configuración de proyecto de los ejemplos de clase. Utiliza la librería freeGLUT para gestionar la creación del contexto, la creación de ventanas y los eventos del sistema operativo. Utiliza la librería GLEW para gestionar las extensiones de OpenGl de forma automática. No es obligatorio, pero la librería GLM te puede ayudar con la gestión de matrices. Recuerda que para que un ejecutable funcione, las librerías dinámicas utilizadas deben de estar en la carpeta de trabajo. Configuración del proyecto 1. Selecciona en el menú “File > New > Project”. 2. Indica que quieres crear una aplicación de consola, indica el nombre de la aplicación y el lugar donde quieres almacenarla: 3. Pulsa “OK”. En la siguiente ventana pulsa “Next”: 4. Crea una aplicación de consola vacía: 5. Pulsa el botón “Finish” Una vez creado el proyecto, es necesario configurarlo: 1. Pulsa con el botón derecho del ratón sobre la carpeta con el nombre de tu proyecto en explorador de soluciones. 2. En el menú desplegable pulsa sobre “Properties” 3. En la ventana que se muestra a continuación podrás configurar el proyecto. 4. Como sabes puedes crear una aplicación en modo “Release” o en modo “Debug”. Deberás configurar los modos: 5. En la pestaña Debugging puedes configurar los parámetros de entrada de tu aplicación y el directorio de trabajo (por defecto, el mismo directorio que el del proyecto). 6. En “C/C++ > General > Additional Include Directories” tenéis que indicar dónde están los ficheros de inclusión de las librerías que utilicéis. 7. En “Linker > General > Additional Library Directories” tenéis que indicar dónde se encuentran las carpetas con las librerías que vais a utilizar. 8. En “Linker > Input > Additional Dependencies” tenéis que especificar el nombre de las librerías. NOTA: Comprueba que valores tienen los apartados indicados en los ejemplos de clase. Una vez configurado el proyecto hay que añadir el fichero donde se implementará la función de entrada: 9. Pulsa con el botón derecho del ratón sobre la carpeta “Source” del explorador de soluciones. 10. En el menú desplegable pulsa sobre “Add > New item”: 11. Selecciona un fichero de C++ y dale nombre: 12. Pulsa el boton “Add”. Podrás crear tantos ficheros fuente como desees.