scieee AI-readable full text Open interactive document viewer

Repositorio Institucional de Documentos

Abstract

El presente proyecto consiste en el desarrollo de una aplicación inmersiva de bajo coste que dispone de interacción natural con el usuario. Esta aplicación dispone de características como la visualización en tres dimensiones, el reconocimiento de la posición espacial del usuario (Head Tracking), el soporte para utilizar técnicas de render avanzado o la posibilidad de desplazarse por la escena mediante un sistema de navegación. Para conseguir la visualización en tres dimensiones, dispone de un sistema de estereoscopía que renderiza dos imágenes similares de la escena, cada una de ellas con la perspectiva ligeramente cambiada. Cada ojo del usuario debe visualizar solamente una de estas dos imágenes, simulando así la perspectiva 3D del mundo real. Para comprobar el funcionamiento se ha utilizando un sistema basado en la polarización en el cual el usuario debe ponerse unas gafas que le permiten visualizar una imagen en cada ojo. A la hora de determinar los puntos de enfoque de estas dos cámaras, se ha tenido en cuenta que no afecten a la percepción del escalado por parte del usuario. Para la realización de un correcto Head Tracking, es necesario posicionar la cabeza del usuario y modificar la perspectiva de la escena respondiendo a los movimientos que realice. Esto provoca una gran sensación de inmersión en la escena. Para conseguir el posicionamiento se han utilizado los mandos de la consola Wii de Nintendo, debido a su bajo coste y a la buena relación del rendimiento con respecto al mismo. El sistema de visualización de la aplicación permite hacer uso de técnicas avanzadas de render. Una de las técnicas que pueden utilizarse son los shaders (pequeños programas que calculan el aspecto final o color de cada píxel a pintar en pantalla). Como demostración se ha creado un shader que implementa la novedosa técnica de parallax mapping. Esta técnica consigue mayor sensación de profundidad de las texturas con menor número de polígonos, reduciendo los tiempos y posibilitando el cálculo de la escena en tiempo real. Algunos de los campos en los que puede aplicarse el trabajo realizado son la arqueología virtual, la biomedicina, la realidad aumentada y realidad virtual. Alastuey Elpuente, Arturo; Serón Arbeloa, Francisco José; López Moreno, Jorge Félix

Full text

UNIVERSIDAD DE ZARAGOZA Proyecto Fin de Carrera Ingeniería Informática ENTORNO INMERSIVO DE BAJO COSTE CON INTERACCIÓN NATURAL Grupo de Informática Gráfica Avanzada Departamento de Informática e Ingeniería de Sistemas Centro Politécnico Superior Curso académico: 2010-2011 Fecha: Abril de 2011 Autor: Arturo Alastuey Elpuente Director: Jorge López Moreno Ponente: Francisco José Serón Arbeloa 3 Entorno inmersivo de bajo coste con interacción natural Resumen El presente proyecto consiste en el desarrollo de una aplicación inmersiva de bajo coste que dispone de interacción natural con el usuario. Esta aplicación dispone de características como la visualización en tres dimensiones, el reconocimiento de la posición espacial del usuario (Head Tracking), el soporte para utilizar técnicas de render avanzado o la posibilidad de desplazarse por la escena mediante un sistema de navegación. Para conseguir la visualización en tres dimensiones, dispone de un sistema de estereoscopía que renderiza dos imágenes similares de la escena, cada una de ellas con la perspectiva ligeramente cambiada. Cada ojo del usuario debe visualizar solamente una de estas dos imágenes, simulando así la perspectiva 3D del mundo real. Para comprobar el funcionamiento se ha utilizando un sistema basado en la polarización en el cual el usuario debe ponerse unas gafas que le permiten visualizar una imagen en cada ojo. A la hora de determinar los puntos de enfoque de estas dos cámaras, se ha tenido en cuenta que no afecten a la percepción del escalado por parte del usuario. Para la realización de un correcto Head Tracking, es necesario posicionar la cabeza del usuario y modificar la perspectiva de la escena respondiendo a los movimientos que realice. Esto provoca una gran sensación de inmersión en la escena. Para conseguir el posicionamiento se han utilizado los mandos de la consola Wii de Nintendo, debido a su bajo coste y a la buena relación del rendimiento con respecto al mismo. El sistema de visualización de la aplicación permite hacer uso de técnicas avanzadas de render. Una de las técnicas que pueden utilizarse son los shaders (pequeños programas que calculan el aspecto final o color de cada píxel a pintar en pantalla). Como demostración se ha creado un shader que implementa la novedosa técnica de parallax mapping. Esta técnica consigue mayor sensación de profundidad de las texturas con menor número de polígonos, reduciendo los tiempos y posibilitando el cálculo de la escena en tiempo real. Algunos de los campos en los que puede aplicarse el trabajo realizado son la arqueología virtual, la biomedicina, la realidad aumentada y realidad virtual. Índice general 4 5 Agradecimientos A mis padres, hermanos y mi abuela, por alentarme, darme fuerzas y por brindarme todo su apoyo y ayuda durante todo este tiempo, a Elisa porque siempre ha estado ahí cuando lo he necesitado, al resto de amigos y familia por darme su apoyo y confianza. Y a Jorge y Paco por ayudarme en todo lo posible y hacer mucho más de lo que marcan sus funciones. 7 Índice General Capítulo 1.Introducción ............................................................................................ 9 1.1.Estructura de la memoria .................................................................................. 9 1.2.Ámbito y contexto ............................................................................................ 9 1.3.Medios ............................................................................................................ 10 1.4.Motivación y objetivos ................................................................................... 10 1.5.Alcance ........................................................................................................... 12 1.5.1.Resultado ................................................................................................................... 12 1.5.2.Esfuerzo .................................................................................................................... 12 1.5.3.Futuro ........................................................................................................................ 12 1.6.Tareas del proyecto ......................................................................................... 12 Capítulo 2.Mundo Virtual ...................................................................................... 15 2.1.Carga de objetos ............................................................................................. 15 2.2.Materiales ....................................................................................................... 16 2.3.Navegación ..................................................................................................... 19 2.4.Pruebas de carga ............................................................................................. 19 2.5.XML de configuración ................................................................................... 20 Capítulo 3.Generación de estereoscopía ............................................................... 23 3.1.¿Qué es? .......................................................................................................... 23 3.2.Profundidad de campo .................................................................................... 24 3.2.1.Convergencia ............................................................................................................ 24 3.2.2.Sensación .................................................................................................................. 25 3.2.3.Configuración en XML ............................................................................................. 27 Capítulo 4.Interacción ............................................................................................. 29 4.1.Navegación ..................................................................................................... 29 4.2.HeadTraking ................................................................................................... 29 4.3.Gestos para navegar ........................................................................................ 30 Índice general 8 Capítulo 5.Descripción de la aplicación final ........................................................ 33 5.1.Esquema de comunicación ............................................................................. 33 5.2.Sistema Físico ................................................................................................. 33 5.3.Descripción de las clases de la aplicación ...................................................... 34 5.3.1.Clase Stereoscopycam ............................................................................................... 34 5.3.2.Clase OSMLoader ..................................................................................................... 34 5.3.3.Clase OgreForm ........................................................................................................ 35 Capítulo 6.Resultados y conclusiones ................................................................... 37 6.1.Conclusiones personales ................................................................................. 37 6.1.1.Beneficios ................................................................................................................. 37 6.1.2.Dificultades ............................................................................................................... 37 6.1.3.Enfoque ..................................................................................................................... 37 6.2.Resultados y aplicaciones ............................................................................... 38 6.2.1.Virtual Heritage ........................................................................................................ 38 6.2.2.Biomedicina .............................................................................................................. 39 6.2.3.Realidad Aumentada ................................................................................................. 39 6.2.4.Realidad virtual ......................................................................................................... 40 Anexo A.Puesta en marcha ...................................................................................... 43 A.1.Instalación de componentes ............................................................................ 43 A.1.1.Instalación de Ogre ................................................................................................... 43 A.2.Arrancar el proyecto en Visual Studio 2005 .................................................. 44 A.3.Exportar objeto de 3D Studio Max al formato .osm....................................... 46 A.4.Proceso de carga de un objeto en la aplicación .............................................. 47 A.5.Preparación de mapas para el Shader de Parallax mapping ........................... 50 A.5.1.Proceso de obtención de la información.................................................................... 50 A.6.Poner los mapas cocinados en la forma que necesita la aplicación ................ 56 A.7.Poner Shader de Parallax mapping en un objeto ............................................ 56 A.8.Iniciación con Ogre ........................................................................................ 61 Anexo B.Estado del arte .......................................................................................... 65 B.1.Entornos inmersivos parecidos ....................................................................... 65 B.1.1.Visualización ............................................................................................................. 65 B.1.2.Interacción ................................................................................................................. 67 9 Capítulo 1. Introducción 1.1. Estructura de la memoria La memoria consta de los siguientes capítulos: 1. Introducción. Ofrece una visión general del proyecto y de su documentación 2. Mundo Virtual. Describe las principales características del mundo virtual de la aplicación. 3. Generación de estereoscopía. Define y describe el concepto de estereoscopía y analiza las principales características de ésta que se han utilizado para el desarrollo de este proyecto. 4. Interacción Describe las diferentes formas de interacción de la aplicación con el usuario. 5. Descripción de la aplicación. Describe la arquitectura, partes físicas y funcionamiento de la aplicación. 6. Resultados y conclusiones. Realiza una valoración del trabajo realizado. Además, analiza el cumplimiento de los objetivos planteados y las posibilidades de continuación, así como las posibles aplicaciones. También explica los problemas encontrados durante el desarrollo de proyecto. 1.2. Ámbito y contexto Este proyecto fin de carrera ha sido desarrollado como parte de la labor investigadora del Grupo de Informática Gráfica Avanzada (GIGA), que pertenece al Departamento de Informática e Ingeniería de Sistemas (DIIS) de la Universidad de Zaragoza. Más concretamente, forma parte del importante proyecto de investigación de ámbito estatal financiado por el Ministerio de Ciencia y Tecnología “TANGIBLE: Humanos Virtuales realistas e interacción natural y tangible”, en cuya descripción se expone como uno de sus objetivos: “La interacción con el usuario, utilizando el paradigma de los interfaces naturales y multimodales, incluidos los tangibles. Las aplicaciones más inmediatas de sus resultados se enmarcan en los entornos de la formación y el entretenimiento, aunque prevemos un campo de aplicación más extenso a medio y largo plazo.” Fue concedido en la convocatoria de Programas Nacionales del Plan Nacional de Investigación Científica, Desarrollo e Innovación Tecnológica 2004-2007 del Ministerio de Educación y Ciencia. En el proyecto participan investigadores de la Universidad de Zaragoza, de la Universidad de las Islas Baleares y de la Universidad Pública de Navarra. El proyecto une tres grandes campos (informática gráfica, personajes 3D inteligentes e interfaces naturales) en una propuesta coherente cuyo Mundo Virtual 16 2.2. Materiales Los objetos cargados en la aplicación debían de ser texturizables para poder estar dotados de una apariencia más realista, ya que los materiales procedentes del exportador muchas veces no son del todo realistas. También era necesario poder modificar las texturas de la escena en función de las necesidades. Para que los materiales que texturizan un objeto fueran modificables se dotó a la aplicación de un sistema que permite cambiar la textura de un objeto de la escena de forma rápida e independiente de los demás objetos. Para esto se dispone de un archivo .material en el que están definidos todos los materiales de los objetos de la escena, en este archivo que provee Ogre se pueden definir materiales normales o materiales que utilicen técnicas como shaders. Un shader básicamente es un pequeño programa que calcula el color del píxel a pintar en la pantalla, por cada píxel de la pantalla o por cada vértice de la figura, según el tipo de shader, se realiza una ejecución de este programa. Hay dos tipos de shaders, el Vertex shader que es el que realiza una ejecución por cada vértice de la figura, y el Píxel shader que es el que realiza una ejecución por cada píxel a pintar. Todos estos programas se ejecutan en la GPU (Graphics Processing Unit) y utilizan la API de DirectX [7] u OpenGL [8]. Se investigaron los distintos lenguajes de shaders disponibles en el mercado, los más usados son, HLSL que es un lenguaje propiedad de Microsoft que se debe utilizar con DirectX, GLSL que es un lenguaje del grupo Khronos y que está diseñado específicamente para su uso dentro del entorno de OpenGL y por último CG que es un lenguaje propiedad de Nvidia cuya principal ventaja es que puede ser usado con las Apis de DirectX y OpenGL aunque es recomendable crear programas específicos para las diferentes tarjetas. Uno de los requisitos de nuestro sistema es que sea integrable a nivel gráfico con el software ya existente en el proyecto TANGIBLE [9], el cual se basa en la librería gráfica OpenGL. Por tanto, optamos por la utilización del leguaje de shaders a alto nivel GLSL, el cual, pese a no alcanzar la potencia gráfica de las últimas versiones de DirectX, presenta una mayor compatibilidad con sistemas no propietarios (por ejemplo basados en Linux). Para que en el sistema se pudieran utilizar shaders se utilizó el framework Ogre debido a su amplio soporte y versatilidad en lo referente a técnicas avanzadas de gráficos. En primer lugar hay que poner tanto los programas del shader como los archivos que estos utilizan en una ruta visible desde la aplicación y hacer la llamada al shader en el archivo de materiales de la aplicación. Ogre tiene para cada escena un archivo .material en el que se define un material para cada objeto que se ha cargado en esa escena, en este archivo se utiliza el lenguaje de materiales que provee Ogre. En este archivo también se declaran los shaders que se quieren utilizar y se realizan las Mundo Virtual 17 llamadas a estos. Al hacer la llamada al vertex shader y al pixel shader se le pasan los parámetros y configuraciones necesarias. El código de los shaders se pone en dos archivos independientes, el vertex shader en un archivo con la extensión .vert y el píxel shader en otro con la extensión .frag, aunque estas extensiones no eran necesarias se decidió hacerlo así ya que es una muy buena práctica de nomenclatura para diferenciar con facilidad los archivos que teníamos en la aplicación. El verter shader, ejecutado previamente para cada vértice del objeto, realiza cálculos que posteriormente se utilizarán en el píxel shader. Éste, utilizando los datos obtenidos, realiza los cálculos necesarios para obtener el color adecuado de cada píxel. La Figura 2.1 describe el funcionamiento del pipeline de GLSL+openGL, mostrando en color naranja el paso por el vertex shader y el píxel shader (también llamado fragment shader). Figura 2.1 Pipeline de GLSL+OpenGL Para demostrar el funcionamiento de todas estas características y comprobar su correcta integración con el resto de funcionalidades de la aplicación se implementó un shader de parallax mapping [10]. Esta es una novedosa técnica que se introdujo en el año 2001 que está basada en la técnica de Normal mapping pero introduciendo significativas mejoras. El objetivo de la técnica de Parallax Mapping es intentar dar la sensación de profundidad a las texturas sin utilizar mayor número de polígonos que es lo que provoca mayor tiempo de cálculo en el resultado final de la escena. Para ello lo que hace es desplazar las coordenadas de textura de un punto en función del ángulo existente entre el punto de vista y el valor del mapa de altura en dicho punto. Cuando el ángulo de vista es más abrupto, las coordenadas de textura se desplazan más, y generan mayor sensación de profundidad como se puede apreciar en la Figura 2.2. Mundo Virtual 18 Figura 2.2 Técnica Parallax Mapping. Donde (u,v) son las coordenadas de textura originales, (u’,v’) son las coordenadas finales y h(u, v) es el desplazamiento Para realizar estos cálculos se necesita tener pre-calculado el mapa de alturas para saber la profundidad de cada punto, el mapa de normales para saber en qué dirección apunta la normal en cada punto, y para el texturizado final y la iluminación hace falta la textura y el mapa de brillos respectivamente. Observando la Figura 2.4 y la Figura 2.5 podemos ver la diferencia entre dos paredes de ladrillos en nuestra aplicación, una utilizando la técnica de Parallax mapping y la otra sin utilizarla. En ambos casos el objeto es el mismo, un objeto simple que consta solamente de dos caras planas (Figura 2.3). Sin embargo, esta técnica de texturizado consigue dar la sensación de volumen. Figura 2.3 Poligonado del objeto Figura 2.4 Pared de ladrillos sin parallax mapping Figura 2.5 Pared de ladrillos con parallax mapping Mundo Virtual 19 2.3. Navegación La aplicación dispone de un sistema para poder navegar por la escena, éste sistema consta de varias partes. La primera funcionalidad del sistema consiste en el movimiento por la escena utilizando las teclas del teclado y el ratón, con las teclas W y A se puede avanzar y retroceder por la escena, con el movimiento del ratón manteniendo el botón derecho pulsado se puede mover arriba, abajo, derecha e izquierda por la escena. Por último con el movimiento del ratón manteniendo el botón izquierdo pulsado se puede modificar la dirección en la que se observa la escena. Es importante indicar que ésta dirección es siempre modificable por la posición indicada por el head tracking. De forma intuitiva podemos imaginar que modifica la posición en la que el usuario está encarado, mientras que el head tracking, captura su dirección en función de los movimientos de cabeza. La segunda funcionalidad consiste en recoger la información de la posición de los sensores Wiimote que simulan los ojos del usuario, y con ésta realizar las modificaciones, simulando así el cambio de perspectiva de la escena respecto al cambio de posición del observador (ver Figura 2.6). Figura 2.6 Utilización del sistema de posicionamiento. 2.4. Pruebas de carga Uno de los requisitos de la aplicación era su correcto funcionamiento utilizando escenas con un número elevado de polígonos. Para comprobar el funcionamiento del sistema en estos casos se cargó en la aplicación una escena de este tipo y se realizaron Mundo Virtual 20 distintas pruebas sobre ella, comprobando las funcionalidades más importantes de la aplicación. La escena utilizada para estas pruebas tenía 1.693.637 polígonos y correspondía a un modelo de arqueología virtual de un foro romano completo (ver Figura 2.7). Al arrancar la aplicación con esta escena se observó que el proceso era más lento, ya que el arranque llegaba a tardar incluso minutos, pero una vez arrancada la aplicación todas las funcionalidades del sistema funcionaban correctamente. Aunque, en los casos en los que la cámara enfocaba la parte central de la escena, donde estaba la mayor concentración de polígonos, existía cierto retardo en algunas operaciones. Sin embargo éste no impedía el uso normal de la aplicación. Figura 2.7 Foro romano en la aplicación (Las dos imágenes que conforman la imagen en tres dimensiones) Estas pruebas de carga fueron realizadas con un ordenador portátil convencional que disponía de un procesador Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz, 2GB de memora RAM y con una tarjeta ATI Radeon Xpress 1200 Series con una memoria de 256MB. Éste es hoy en día un equipo de perfil bajo con lo que en la mayoría de equipos actuales el rendimiento de la aplicación debería ser superior al obtenido en esta prueba. 2.5. XML de configuración Para poder configurar las propiedades de la aplicación, ésta dispone de un fichero .xml en el cual el usuario puede inicializar el valor de sus principales parámetros, tal y como se describe a continuación. Mundo Virtual 21 El primer valor que se puede configurar es el la ruta de la escena a cargar, es decir, la ruta del archivo .osm que contiene la escena. El segundo es la posición de la cámara estereoscópica en la escena y el tercero es el punto hacia el que mira dicha cámara. El cuarto y quinto son la distancia entre los ojos y el grado de convergencia respectivamente, son los parámetros referentes a la estereoscopía. Los siguientes son los que configuran las luces de la escena, el sistema puede tener varias luces y para cada una de ellas se indica su posición en la escena, su tipo (Spotlight, Point, Directional), el color especular y el color difuso en RGB (Red Green Blue). Por último se puede configurar si se desea activar o no la funcionalidad de posicionamiento del usuario mediante el Wiimote. En la Figura 2.8 se aprecia con más claridad la estructura del archivo de configuración XML. Figura 2.8 Estructura del archivo de configuración XML 23 Capítulo 3. Generación de estereoscopía 3.1. ¿Qué es? Antes de comenzar la implementación del sistema estereoscópico se realizó un estudio previo con el fin de averiguar en qué consistía la estereoscopía y cuál era la forma adecuada de implementarla en nuestro sistema. Estereoscopía [11] es cualquier técnica capaz de recoger información visual tridimensional de una escena o crear la ilusión de profundidad en una imagen. Literalmente, estereoscopía significa ver con dos ojos. La técnica utilizada consiste en obtener dos imágenes distintas, una para cada ojo, de la escena. Estas están tomadas a 6,5 cm de distancia una de la otra que es la distancia entre los ojos media en un ser humano, simulando así que cada ojo ve la perspectiva que vería en la realidad. La Figura 3.1 representa gráficamente esta idea. Figura 3.1 Representación gráfica de estereoscopía Todo esto es posible gracias a que el ser humano tiene dos ojos situados a unos 6.5 cm y estos recogen dos imágenes ligeramente distintas uno del otro de la misma escena. Son estas pequeñas diferencias las que utiliza el cerebro para calcular la distancia de los objetos, esta técnica es conocida como paralaje. Este cálculo de distancias es el que da al cerebro la tercera dimensión y por tanto la sensación de profundidad. Por lo tanto cuando recogemos dos imágenes ligeramente distintas una de otra tomadas a una distancia de 6.5 cm una de otra y le mostramos al usuario una en cada ojo, el cerebro puede reconstruir la distancia y por tanto tener la sensación de tridimensionalidad. Generación de estereoscopía 24 3.2. Profundidad de campo La profundidad de campo es la zona visualizada por la aplicación en la que la imagen resultante es nítida. Por tanto, los objetos que se encuentren en la zona de la imagen correspondiente a la profundidad de campo se deben ver nítidos. En nuestro caso, al estar trabajando con un sistema de visión estereoscópica, en la profundidad de campo influyen, además de los factores típicos como el enfoque de la cámara, otros como la convergencia. 3.2.1. Convergencia Se llama punto de convergencia al punto en el que los ejes de las dos cámaras que conforman la cámara estereoscópica convergen para crear la imagen resultante en 3 dimensiones, es decir, el punto al que las dos cámaras apuntan. Podemos verlo con más claridad en la Figura 3.2. Figura 3.2 Punto de convergencia En la aplicación desarrollada, para que el usuario pudiera adaptar la convergencia del sistema estereoscópico a sus necesidades, se ha implementado un sistema que permite variar el grado de convergencia de la cámara estereoscópica en un punto. De esta forma, se puede modificar desde totalmente convergente en el punto deseado hasta totalmente paralelos los ejes de las dos cámaras, como se puede apreciar en la Figura 3.3. Generación de estereoscopía 25 Figura 3.3 Convergencia total 3.2.2. Sensación Los elementos mencionados anteriormente influyen de manera directa en la sensación que percibe el usuario de la aplicación. Por ejemplo, si el punto en el que centra la atención del usuario no se encuentra dentro de la profundidad de campo, el usuario verá el punto borroso y esto puede provocar en él una sensación de mareo. Esto es debido a que el objeto que está mirando está desenfocado y sin embargo el objeto al que no está mirando está enfocado. Con la convergencia estereoscópica pueden ocurrir problemas parecidos ya que si no hay convergencia de la cámara estereoscópica en el punto al que el usuario está mirando este no va a apreciar el efecto 3D, podemos apreciar mejor este caso en la Figura 3.4. Figura 3.4 Problema con la estereoscopía si no hay convergencia en el punto al que el usuario mira 33 Capítulo 5. Descripción de la aplicación final 5.1. Esquema de comunicación En el diagrama de la Figura 5.1 se describe la estructura de la aplicación. Los rectángulos corresponden a los distintos componentes del sistema, tanto físicos como de software. Las elipses representan las comunicaciones entre unos componentes y otros. Figura 5.1 Esquema de comunicación de la aplicación 5.2. Sistema Físico Los componentes físicos utilizados y en los que se basan tanto el sistema de interacción, como el sistema de estereoscopía de la aplicación son los siguientes: Wiimote, Antena Bluetooth USB, Wii Sensor bar, PC con sistema operativo Windows y con una tarjeta gráfica que permita estereoscopía y por último proyector estereoscópico (Figura 5.2). Descripción de la aplicación final 34 Wiimote Antena Bluetooth USB Wii Sensor bar PC con Windows con tarjeta gráfica que permita estereoscopía Proyector estereoscópico Figura 5.2 Componentes físicos utilizados 5.3. Descripción de las clases de la aplicación A continuación, se muestran los diagramas de clases de las principales clases de la aplicación desarrollada, así como una breve explicación acerca de cada una de ellas. 5.3.1. Clase Stereoscopycam La clase Stereoscopycam representa una cámara estereoscópica y dispone de los métodos y atributos necesarios para abstraerse de su implementación interna, permitiendo instanciar y utilizar cámaras estereoscópicas. En la Figura 5.3 se muestra su diagrama de clase. 5.3.2. Clase OSMLoader La clase OSMLoader proporciona los métodos y atributos necesarios para cargar una escena en la aplicación desde un fichero en formato .osm. En la Figura 5.4 puede observarse su diagrama de clase. Descripción de la aplicación final 35 Figura 5.3 Diagrama de clase de Stereoscopycam Figura 5.4 Diagrama de clase de OSMLoader 5.3.3. Clase OgreForm La clase OgreForm se utiliza para crear el diálogo de la aplicación, crear las pantallas de renderizado y poder interactuar con el usuario. En el campo cam se guarda la cámara estereoscópica (clase Stereoscopycam). Al inicializar la clase OgreForm, cuando se arranca la aplicación, se instancia un objeto de la clase OSMLoader que se utiliza para cargar la escena configurada. En la Figura 5.5 se muestra el diagrama de clase de OgreForm. Descripción de la aplicación final 36 Figura 5.5 Diagrama de clase de OgreForm 37 Capítulo 6. Resultados y conclusiones 6.1. Conclusiones personales 6.1.1. Beneficios Durante el desarrollo de este proyecto he investigado, desarrollado y documentado cada uno de los componentes necesarios. Para ello, se ha seguido una metodología profesional que me ha servido como aprendizaje para el futuro. El desarrollo de este proyecto con resultados prácticos claramente visibles, a diferencia de programas realizados para la propia formación, ha sido motivador para el futuro. Además, que el proyecto se haya llevado a cabo utilizando el lenguaje de programación C# y el motor de render Ogre ha supuesto el aprendizaje de herramientas modernas, distintas a las vistas anteriormente en el transcurso de la carrera. Esto puede serme de gran ayuda para la utilización de las mismas en el futuro a nivel profesional. 6.1.2. Dificultades La parte correspondiente al estudio de los shader y el trabajo con los mismos ha supuesto muchas horas de estudio e implementación, especialmente la parte de comunicación entre la aplicación, el shader y las diferentes formas existentes para precalcular los datos que el shader necesitaba (mapas de normales, de brillo, de altura, de textura). Otra de las partes del proyecto que también ha supuesto gran cantidad de horas de trabajo ha sido la investigación en el campo de la estereoscopía y el posterior desarrollo de la clase que proporciona el sistema estereoscópico a la aplicación. Se requería de un trabajo de investigación acerca de cómo crear un sistema estereoscópico realista. Esta investigación nos llevó a un sistema que entraña una cantidad de cálculos matemáticos de cierta complejidad para conseguir el correcto posicionamiento de las dos cámaras que conforman la cámara estereoscópica. 6.1.3. Enfoque El enfoque inicial fue bastante acertado. Consistía en realizar una investigación y estudio previo de las opciones disponibles para cada una de las partes del proyecto, analizándolas y optando por la opción más ventajosa en cada caso. Para tomar las Resultados y conclusiones 38 decisiones se tendría también en cuenta el proyecto de manera global, de forma que todas las piezas encajaran correctamente. Sin embargo, hubo aspectos en los cuales el trabajo de investigación previo no sirvió para determinar la solución más adecuada, y fue en la fase de desarrollo cuando se detectaron algunos problemas, implicando volver a la fase de estudio y realizar otra iteración. Por ejemplo, tras estudiar los diferentes exportadores de objetos, se decidió utilizar OgreMax, pero al empezar a utilizarlo se presentaron algunos errores y se comprobó que no era el más adecuado para el desarrollo del proyecto. 6.2. Resultados y aplicaciones Los objetivos iniciales se han cumplido en su totalidad. Al finalizar el proyecto, surgen ahora nuevas posibilidades de desarrollo y aplicación. Algunas de las más importantes son las que se describen en este apartado. 6.2.1. Virtual Heritage Virtual Heritage [14] o Arqueología Virtual es un concepto que aparece a principios de la década de los 90. Según Paul Reilly, que fue el primero en proponer este concepto, se define como “el conjunto de técnicas informáticas que permiten la visualización 3D de la representación virtual y realista de los objetos y edificios antiguos, cuyos restos han desaparecido o están en un estado de preservación tan deficiente que hacen imposible su observación o muy difícil su interpretación”. La aplicación desarrollada en este proyecto, por sus características de visualización y sus capacidades de interacción, permite la inmersión del usuario en la escena que se está visualizando, haciéndole sentir que forma parte de ella. Por tanto, se perfila como un sistema muy apropiado para introducirse en reconstrucciones de ruinas arqueológicas, permitiendo al usuario observarlas, recorrerlas y comprenderlas. Figura 6.1 Reconstrucción del teatro romano de Bilbilis Resultados y conclusiones 39 En la Figura 6.1 puede observarse la reconstrucción del teatro romano de Bilbilis [16], que es un claro ejemplo de arqueología virtual. El presente proyecto permite la reproducción a este nivel de calidad visual en tiempo real. 6.2.2. Biomedicina Una de las aplicaciones de los entornos inmersivos, como el desarrollado en este proyecto, es el campo de la biomedicina. En la Figura 6.2 se observa un ejemplo de un entorno inmersivo utilizado en este campo [15]. Figura 6.2 Entorno inmersivo utilizado en biomedicina En el caso concreto de este proyecto, podría utilizarse para visualizar escenas relacionadas con este campo y, además, permitir al usuario desplazarse a través de las mismas. Por un lado, podrían cargarse escenas que representarán las distintas partes del cuerpo humano, de tal forma que los médicos visualizaran ciertos casos y pudieran practicar antes de enfrentarse a ellos en el mundo real. Por otro lado, también se podría utilizar para cargar, analizar y comprender escenas representando elementos que, por su tamaño, no son visibles al ojo humano, como por ejemplo el ADN. En resumen, la aplicación podría ser especialmente útil en el campo de la formación médica, permitiendo a los médicos o estudiantes adentrarse en el cuerpo humano como si tuvieran un tamaño microscópico. 6.2.3. Realidad Aumentada Se define como Realidad Aumentada a la visión del mundo real, en la que sus elementos se combinan con elementos virtuales para crear una realidad mixta (parte real y parte virtual), todo ello en tiempo real. En la Figura 6.3 puede verse un ejemplo de realidad aumentada en el que la mano y el cromo serían la parte real y el jugador de béisbol sería la parte virtual [17]. Resultados y conclusiones 40 Figura 6.3 Ejemplo de realidad aumentada En el caso de este proyecto, se podría proyectar la escena cargada en la aplicación sobre objetos reales, dando así la sensación de que se añade la realidad virtual a una escena del todo real. Esto podría ser utilizado en el mundo de la arqueología, ya que se podrían recrear partes de ruinas que estuvieran en mal estado de conservación o deterioradas sobre la parte real existente. De esta forma, el visitante de las ruinas tendría la sensación de que está visualizándolas tal y como se encontraban antes de su deterioro. Por un lado, la estereoscopía nos permitiría visualizar la parte virtual en 3 dimensiones y, por otro lado, el HeadTracking permitiría que la parte virtual se visualice con la misma perspectiva que la parte real. La suma de estas dos características permitiría que las dos partes (real y virtual) quedaran totalmente acopladas. 6.2.4. Realidad virtual El concepto de realidad virtual consiste en producir virtualmente al usuario una apariencia de realidad generándole la sensación de estar en ella (En la Figura 6.4 se observa un ejemplo [18]). El sistema desarrollado se puede utilizar como sistema de realidad virtual, ya que, gracias a características como el posicionamiento del usuario, el sistema de estereoscopía (que aporta sensación de profundidad) o la alta calidad gráfica soportada en las escenas cargadas, produce en el usuario la sensación de estar presente en un entorno real. Resultados y conclusiones 41 Figura 6.4 Ejemplo de realidad virtual