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.

Documentos relacionados