• No se han encontrado resultados

Plataforma distribuida para el desarrollo de aplicaciones de realidad virtual

N/A
N/A
Protected

Academic year: 2020

Share "Plataforma distribuida para el desarrollo de aplicaciones de realidad virtual"

Copied!
123
0
0

Texto completo

(1)

Universidad Nacional del Centro de la Provincia de Buenos Aires

Facultad de Ciencias Exactas

Plataforma distribuida para el desarrollo de aplicaciones de

Realidad Virtual

Trabajo Final - Ingeniería de Sistemas

Laplace, Alan Jesús

Miñola, Federico Carlos

Rocha, Hernán Gabriel

Director:

Cristian García Bauza

Codirector:

Marcos Gonzalo Lazo

(2)

2

Agradecimientos

A nuestras familias y amigos, por estar siempre presentes, brindándonos su apoyo incondicional.

A los que hoy no están con nosotros, pero siempre estarán en nuestros corazones.

A nuestros profesores, por la excelente formación que nos brindaron.

(3)

3

Resumen

En el siguiente trabajo se explica detalladamente el desarrollo de RUBIKA, una plataforma que permite la creación de aplicaciones de realidad virtual inmersiva, que se ejecuta de manera distribuida, para ser aplicada en el desarrollo de simuladores.

En principio se realizó una comparación de las distintas tecnologías de realidad virtual inmersiva desarrolladas hasta la fecha, considerando costos, prestaciones y características de cada una. Una vez analizadas las ventajas y desventajas de cada una, se llegó a la conclusión de implementar una plataforma propia que se ajuste a las necesidades planteadas.

Teniendo en cuenta esto, se diseñó una plataforma que actúa como marco para el desarrollo de aplicaciones inmersivas, las cuales hacen uso de una CAVE, empleando una arquitectura cliente-servidor. Se explica la arquitectura de dicha plataforma, haciendo foco principalmente en el componente visual y el componente de red.

(4)

4

Índice

AGRADECIMIENTOS ... 2

RESUMEN ... 3

CAPÍTULO 1. INTRODUCCIÓN ... 6

1.1. MOTIVACIÓN... 8

1.2. OBJETIVO ... 8

1.3. ORGANIZACIÓN DEL TRABAJO ... 9

CAPÍTULO 2. ANTECEDENTES Y MARCO TEÓRICO ... 11

2.1. REALIDAD VIRTUAL ... 11

2.1.1. ¿Qué es? ... 11

2.1.2. Aproximación histórica ... 13

2.1.3. Utilización ... 16

2.2. CAVE ... 21

2.2.1. ¿Qué es? ... 21

2.2.2. Antecedentes ... 22

2.2.3. Ventajas y Desventajas del uso de CAVEs ... 24

2.3. MARCO TEÓRICO ... 25

2.3.1. Visualización ... 25

2.3.2. Tracking ... 28

2.4. TECNOLOGÍAS RELACIONADAS ... 31

2.4.1. Equalizer ... 32

2.4.2. Omegalib ... 34

2.5. PLATAFORMA DESARROLLADA ... 36

2.5.1. Ogre 3D ... 37

2.5.2. ENet ... 39

2.5.3. Kinect ... 41

CAPÍTULO 3. DISEÑO E IMPLEMENTACIÓN ... 42

3.1. INTRODUCCIÓN ... 42

3.1.1. Proceso de visualización ... 42

3.1.2. Proceso de sincronización ... 43

3.2. COMPONENTE DE VISUALIZACIÓN ... 46

3.2.1. Motor 3D ... 46

3.2.2. Primeras configuraciones ... 51

3.2.3. Implementación del componente de visualización ... 66

3.3. COMPONENTE DE RED ... 77

3.3.1. Metodología de comunicación ... 78

(5)

5

3.3.3. Inicialización del Host ... 79

3.3.4. Estado del Host ... 81

3.3.5. Procesamiento de mensajes ... 83

3.4. ENTRADA DE USUARIO ... 94

3.4.1. Inicialización ... 94

3.4.2. Procesamiento de eventos locales ... 96

3.4.3. Procesamiento de eventos por red ... 96

3.5. RESUMEN ... 100

CAPÍTULO 4. INSTANCIACIÓN DE LA PLATAFORMA ... 101

4.1. APLICACIÓN:SIMULADOR DE PERFORACIÓN ... 101

4.2. CONSTRUCCIÓN DE LA CAVE ... 104

4.3. CONFIGURACIÓN DE LA CAVE ... 105

4.4. CONFIGURACIÓN PARA VALIDACIÓN ... 107

4.5. APLICACIONES DESARROLLADAS ... 109

4.5.1. Aplicación 1: Recorrido de Locación ... 110

4.5.2. Aplicación 2: Partes del equipo y especificaciones ... 111

4.5.3. Aplicación 3: Ejercicios de Operaciones ... 112

4.6. IMPLEMENTACIÓN DE LAS APLICACIONES ... 113

4.6.1. Comunicación con otros módulos ... 114

4.6.2. Simulación del modelo físico ... 114

4.6.3. Actualización de las aplicaciones ... 115

4.7. OPTIMIZACIONES EN LA VISUALIZACIÓN ... 116

4.7.1. Adaptación del punto de vista ... 116

4.7.2. Vista estereoscópica ... 117

CAPÍTULO 5. CONCLUSIONES Y TRABAJOS FUTUROS ... 119

5.1. CONCLUSIONES ... 119

5.2. TRABAJOS FUTUROS ... 120

(6)

6

Capítulo 1.

Introducción

El tercer milenio que acaba de comenzar, ha dejado atrás el concepto de Nuevas Tecnologías por el de sencillamente, Tecnologías, asentando y extendiendo dos ideas primordiales para el avance social y técnico: información y conocimiento. Estas ideas, a su vez, se acompañan de dos revoluciones tecnológicas que modificaron el modo de comunicación de los sujetos entre sí.

La primera de ellas es la red de redes: Internet, que de ser un mero apéndice de la telefonía de cobre se ha transformado en una infraestructura básica para la Sociedad del Conocimiento y motor de la Economía mundial, de tal manera que forma ya parte de la vida de cualquier persona de una manera tan natural, que es como si siempre hubiera estado allí.

La segunda revolución tecnológica la propició la Realidad Virtual, la percepción en 3D de entornos simulados que permiten trasladar al usuario a mundos de ensueño y le posibilitan viajar a través del tiempo al pasado y al futuro, simulando percepciones sensoriales de forma que el usuario las tome como reales.

Las aplicaciones de realidad virtual deben ser capaces de brindar al usuario sensación de inmersión en el entorno virtual que recrean. Deben permitirle interactuar con los elementos presentes en el entorno, para resolver distintos problemas o desafíos como lo harían en el mundo real.

Esta misma idea puede ser trasladada al ámbito del entrenamiento de operarios, donde empresas desarrollan productos hace años y sus compañías emplean a miles de profesionales que van desde el área de la computación hasta diseño gráfico, pasando por matemáticos y físicos. Los simuladores recrean los puestos de mando, o habitáculos de maquinarias, o vehículos que el alumno debe operar y sobre la cual debe entrenar.

(7)

7 Además de la calidad de la visualización de la escena; la mayoría de las aplicaciones virtuales actuales incluyen simulaciones físicas. Estas simulaciones han evolucionado al punto donde la mayoría de los objetos en el mundo virtual pueden ser manipulados, reaccionando de forma realista con respecto a las distintas fuerzas aplicadas, dirección de movimiento, elasticidad, etc. (2) (3)

Existe un gran conjunto de comportamientos a simular, entre los principales, se pueden citar: la manipulación de vehículos, maquinarias, colisiones, apilamiento, fluidos, etc. El uso de estas técnicas en aplicaciones de mundos 3D, ayuda a que estas aplicaciones se vean diferentes del resto; reduciendo la enorme brecha entre la aplicación virtual y la realidad (4). Adicionalmente, otros conceptos para achicar esta brecha, son tecnologías que mejoren la inmersión del usuario y reduzca la asimilación de la metáfora del mundo virtual, haciendo que se sienta inmerso en el mundo virtual como si fuera en el real. En este punto, un buen ejemplo son las CAVEs (Computer Assisted Virtual Environment).

Las CAVEs son estructuras cúbicas en forma de habitación, donde se proyectan imágenes sobre las diferentes caras para crear una sensación de inmersión. Las imágenes proyectadas dependen de la posición y orientación del usuario de la CAVE. La idea original proviene de la Universidad de Illinois y consiste en tres paredes y un suelo.

Son los primeros dispositivos en implementar experiencias de un alto grado de inmersión en el entorno del usuario. Permiten la utilización por parte de varios usuarios, lo cual es ideal para realizar presentaciones en diversos sectores, aunque se pierde la mayor parte de la inmersión, ya que solo es posible realizar la proyección desde el punto de vista de un único usuario.

Las estructuras más simples sólo disponen de dos paredes y el suelo, aun así es posible un buen grado de inmersión para el usuario y facilidad en el seguimiento de la simulación. Las más complejas disponen de cinco o seis caras activas. Actualmente es un esquema muy reproducido a nivel mundial y muchas organizaciones, empresas y universidades disponen de su propio modelo de CAVE (5) (6), aunque los modelos existentes tienen precios muy elevados.

(8)

8

1.1.

Motivación

La CAVE es una herramienta de realidad virtual de propósito general, sin embargo no existe una única plataforma que se adapte a todas las situaciones que puedan presentarse, y otorgue resultados satisfactorios para los distintos escenarios.

Las herramientas comerciales existentes involucran varias áreas de investigación y suelen requerir altos niveles de conocimiento para poder implementarlas. Éstas pueden no ser de aplicación directa en algunos casos, considerando un esfuerzo adicional a la hora de su empleo, ya sea adaptación o capacitación. Con lo cual, para poder elaborar aplicaciones, que aprovechen este recurso, es necesario desarrollar una propia plataforma que se adapte a las necesidades actuales.

Actualmente existen diversos trabajos académicos, entre los cuales podemos destacar proyectos que darán acceso a múltiples aplicaciones en áreas como visualización científica, entrenamiento y capacitación de operarios, visualización médica, entre otros.

Las investigaciones pueden tener mayor o menor impacto en la sociedad, pero para que tengan verdadera trascendencia deben ser tomadas por empresas y comercializadas para que lleguen a la mayor cantidad de usuarios posible, logrando articular acciones y desarrollos entre las compañías e investigadores para generar nuevos productos, que puedan comercializarse en el mundo.

Por lo tanto, la principal motivación es proporcionar soporte para capacitar operarios de todo tipo: máquinas, camiones, barcos, aviones, trenes, grúas, cosechadoras e incluso incursionar en simuladores de cirugía para operaciones de tipo laparoscópicas o de cateterismo. Aunque hoy en día no se encuentra tan extendido el uso de la herramienta, se sabe que en un futuro cercano serán de uso corriente, por lo cual, participar de su implementación en nuestro entorno también es parte de la motivación.

1.2.

Objetivo

(9)

9 debe encargarse de capturar todos los eventos y procesarlos, para luego actualizar el estado de los clientes. De esta forma, el comportamiento de las distintas aplicaciones será consistente.

Para la interrelación entre el servidor y los clientes, se plantea un protocolo de comunicación diseñado específicamente para distintos tipos de herramientas similares a la CAVE, basado en la tecnología ENet (7).

Para la detección de la posición del usuario se utiliza el sensor Kinect para Sistemas Operativos Windows (Kinect for Windows Runtime y Kinect SDK (8)), provisto por Microsoft para desarrollar las aplicaciones propuestas. Tal es así, que el entorno de desarrollo requiere sistemas operativos Windows, por lo que la aplicación se desarrollará bajo Windows 7.

El sistema diseñado, debe permitir reconocer distintos movimientos y comandos, emitidos por un dispositivo de control, los cuales se procesarán por el servidor, comunicando y manteniendo sincronizadas todas las paredes de la sala. Se debe trabajar con un motor de renderizado 3D orientado a escenas, llamado OGRE (Object-Oriented Graphics Rendering Engine (9)), el cual es utilizado para la producción de aplicaciones que utilizan gráficos 3D, acelerados por hardware.

También se incluyen diferentes implementaciones de aplicaciones, que muestran la capacidad de la plataforma para generar la sensación de inmersión que otorga una CAVE. Estas aplicaciones serán probadas y evaluadas por personas ajenas al proyecto.

1.3.

Organización del trabajo

En este documento, se describe el paso a paso de la elaboración de una plataforma que actúa como marco para el desarrollo de aplicaciones inmersivas. Las cuales hacen uso de la CAVE, empleando una arquitectura cliente-servidor. Incluyendo, también, algunos prototipos realizados para evaluar los resultados obtenidos.

En el capítulo 2, se describe el marco teórico en el cual se encuentra inmerso el trabajo. Presentándose trabajos, tecnologías relacionadas y antecedentes en soluciones similares.

(10)

10 visualizar que todo lo desarrollado se haya realizado correctamente. Sus componentes principales son el componente de red, el de visualización y el de entrada de usuario.

En el capítulo 4, se presentan una aplicación real, mostrando las características principales y detallando los puntos de interés que deban ser tenidos en cuenta en la plataforma presentada.

(11)

11

Capítulo 2.

Antecedentes y marco teórico

El objetivo principal de este capítulo es introducir el concepto Realidad virtual, CAVE y aplicaciones inmersivas, semi-inmersivas, y no inmersivas, haciendo hincapié en su propósito y la funcionalidad que proveen. Mostrar la evolución del tema desarrollado a lo largo de la historia, y lograr distinguir que se encuentra en continuo avance, observando una comparación entre los distintos sistemas explicados.

Se explicará el marco teórico del presente proyecto, realizando una introducción al funcionamiento de dos de sus principales componentes y además se nombrarán tecnologías relacionadas e involucradas con este trabajo.

2.1.

Realidad Virtual

2.1.1.

¿Qué es?

Existen multitud de definiciones acerca de lo que es o lo que significa la Realidad Virtual (RV), entre las que se destacan las siguientes: La RV comprende la interface hombre-máquina (human-machine), que permite al usuario sumergirse en una simulación gráfica 3D generada por ordenador, y navegar e interactuar en ella en tiempo real, desde una perspectiva centrada en el usuario. La RV es una experiencia sintética mediante la cual se pretende que el usuario sustituya la realidad física por un entorno ficticio generado por ordenador. “La RV es lo más parecido que tenemos a la Máquina del Tiempo, en tanto que nos permite recrear virtualmente cualquier tipo de espacio en tres dimensiones y situarlo en cualquier época, incluso en el futuro, con un grado de realismo completamente creíble”, (Alejandro Sacristán, 1990). Diferentes definiciones para el termino RV han sido propuestas. Se puede ver como una tecnología que permite interaccionar a un usuario con “bases de datos tridimensionales”, o como una manera de “integrar el hombre con la información” (10).

El término actual de realidad virtual se atribuye a Jaron Lanier, en 1986 en una conversación comentando el trabajo de Scott Fischer, ingeniero de la NASA. Scott se refería al campo como “entornos virtuales” (Virtual Environments), Myron Krueger lo llamó “realidad artificial” (Artificial Reality) en 1983 (11).

(12)

12 finalidad última de cada investigador. En una entrevista a la revista Mondo 2000, Jaron Lanier -quien acuñó el término de RV-, dice: “La idea en RV es “generar” realidad con otras personas. Estás haciendo sueños cooperativos todo el tiempo” Artistas e investigadores de reconocido prestigio, han opinado sobre ¿qué se busca al entrar en un mundo virtual? Ken Perlin (Director del Media Research Laboratory en New York University): “Cuando accedo a un espacio virtual lo más importante para mí es tener la sensación de estar accediendo a un mundo que me afectará emocionalmente y en el que me puedo sumergir. Y cuando es así, me maravillo, como si fuera un niño” (12). De otro lado, Miro Kirov, escultor y artista 3D, de origen búlgaro, señala al respecto: “Lo primero que hago es mirar el suelo que piso. Si el mundo es una simulación, nuestro entorno virtual es nuestra realidad. Pensar que el mundo es una expresión abstracta tridimensional flotando en el espacio es, simplemente, una opción más” (12).

Obviamente el espectador de un espacio virtual puede tener un papel pasivo, sólo como observador -ni activo ni interactivo-, pero se debe destacar que el propósito cardinal del diseño de espacios virtuales es conseguir una experiencia inmersiva e interactiva entre el espectador y el mundo. De hecho, si no se consigue la interacción y la inmersión “física”, no se tendrá verdadera RV. Comparativamente, se puede pensar que un buen libro también puede trasladar al lector a un mundo de ensueño y hacerle partícipe de una determinada historia. No obstante, dicho individuo seguirá sentado en el sillón de su casa, o en la parada del autobús.

(13)

13

Figura 1: Realidad Virtual

Así mismo, se establece una clara diferencia entre RV y los típicos programas de diseño 3D. En estos últimos solo se diseñan objetos tridimensionales, mientras que en un programa de diseño de mundos virtuales se hace un mayor hincapié en la interacción con el usuario, sin descuidar la apariencia visual. Para nuestro proyecto, una definición apropiada para el término de Realidad Virtual puede ser la siguiente: amplio conjunto de tecnologías que buscan crear nuevos métodos de interacción entre el usuario y el ordenador, de forma lo más realista posible.

2.1.2.

Aproximación histórica

Los primeros simuladores

Aunque se trata de una tecnología emergente en estos últimos años, y parece que lleva pocos años entre nosotros, la realidad virtual echa sus raíces en la década de los 50 e incluso antes. Ya en 1930 aparecen los primeros simuladores de vuelo, que pueden verse como una primera aproximación a las simulaciones y con ello la realidad virtual. En época de entreguerras es importante la formación de los pilotos, éstos aprendían de forma práctica volando, no hacían ningún entrenamiento añadido. El problema aparecía con los nuevos modelos de aviones, poner un avión de un alto costo en manos de un piloto inexperto no era una idea muy buena ni para el piloto ni para el avión. De esta necesidad nació la idea de realizar un entrenamiento en tierra con un simulador de vuelo antes de los vuelos reales.

O R

O

R

Ordenador

Mundo Real

Interacción Persona-Ordenador Interacción

(14)

14 Este simulador provocó un cambio de mentalidad entre los investigadores y diseñadores, en lugar de entrenar tareas en dispositivos reales, se crean dispositivos que simulan los reales para realizar esas prácticas. Este es uno de los objetivos que fundamenta la realidad virtual. El simulador era muy rudimentario ya que consistía simplemente en una cabina de avión, con todos los elementos que el avión real, pero solo algunos de ellos activaban alguna acción u opción. Carecía de muchos detalles y solo permitían simular ciertos aspectos como es el pitch y el roll.

Comparado con los simuladores actuales está desfasado tecnológicamente, pero en su época fue un avance tecnológico muy importante, y además, supuso la adopción de la realidad virtual como una tecnología militar, siendo hoy en día la industria armamentística la principal inversora en las investigaciones en realidad virtual.

La primera experiencia virtual

Si bien esos primeros simuladores de vuelo no se pueden considerar como aplicaciones de realidad virtual plenamente, fue a partir de ellos que se empezó a investigar en tecnologías que posteriormente llegarán a formar parte de la realidad virtual. Entre los científicos e ingenieros que fueron partícipes de la génesis de la realidad virtual, podemos considerar a Morton Heilig junto con Ivan Sutherland como los padres de la realidad virtual en la época de la posguerra mundial.

En 1956, Morton Heilig comenzó a diseñar la primera experiencia virtual multisensorial. Con apariencia de una máquina recreativa de videojuegos, el “sensorama” combinaba película, audio, vibración, viento y olor, todo diseñado para hacer sentir al usuario como si estuviera dentro de la película más que viendo la película. Fue patentado en 1962 (13).

(15)

15

Figura 2: Sensorama de Norton Heilig

También patentó la idea para un dispositivo que se puede considerar como el primer HMD (head mounted display). Usaba un gran campo de visión para ver fotogramas en 3D, e incluía sonido estéreo y un generador de olores. Más tarde propuso la idea de crear un teatro inmersivo que permita la proyección de imágenes tridimensionales sin necesitar que el usuario lleve gafas especiales o dispositivos. Los asistentes a la representación se sentaban en asientos que estaban conectados con la película, no sólo para permitir un sonido estéreo, sino también la sensación de movimiento. Los olores se crearían mediante la combinación de varios olores básicos en el sistema de aire acondicionado. Esta “experiencia sensorial” nunca llegó a ser construida, pero puso los cimientos de lo que en las décadas siguientes se ha intentado alcanzar.

Mejoras de las técnicas de representación

Tal y como conocemos hoy en día la realidad virtual, surgió a partir de las investigaciones en gráficos tridimensionales interactivos y la simulación de vehículos. En 1965 Sutherland creó el Ultimate Display (14) el cual es una nueva versión de un HMD con la particularidad de tener una pantalla estereoscópica (una pantalla para cada ojo). También disponía de un sistema de posicionamiento mecánico que permitía saber la dirección de la cabeza del usuario.

(16)

16 usuario podía entrar a la habitación y moverse a través de la habitación mirando todo a su alrededor. En esa época también se empezó a utilizar la realidad aumentada.

Simultáneamente en Ohio, Thomas Furness trabajaba en cómo mejorar la forma en que se relacionaban los pilotos con máquinas complejas. El objetivo era simplificar el interfaz que presentaban las cabinas de pilotaje a los pilotos de forma que no fuera necesario más que un piloto para pilotar correctamente el avión. La solución que se elaboró fue una cabina de pilotaje que proyectara información directamente al piloto, de manera que pueda volar valiéndose solo de un horizonte simulado. Esto hoy en día es crítica para los pilotos de cazas, ya que permite volar de noche sin utilizar ningún foco de luz, donde la realidad virtual reproduce lo que el piloto no puede ver con sus ojos. El desarrollo culminó en 1981 cuando se proyectó la cabina virtual por primera vez, con un ángulo de visión de 120º para el piloto.

No sería hasta 1984 cuando en la NASA se construyó el primer HMD de bajo coste llamado VIVED (Virtual Visual Environment Display System), desarrollado por un grupo de investigación liderado por Michael McGreevy (15). Se utilizó junto con una computadora PDP-11/40 y dos monitores de 19‟‟, videocámaras, circuito cerrado de video, etc. Se realizaron demostraciones para la industria y la universidad y se diseñaron aplicaciones que incluían la exploración planetaria, simulación de dinámica de fluidos, etc.

2.1.3.

Utilización

La realidad virtual inmersiva liga un ambiente tridimensional creado por un programa con algún dispositivo físico capaz de lograr una inmersión, como lo son: cascos, guantes u otros dispositivos que capturan la posición y rotación de diferentes partes del cuerpo humano, con la intención de enviar esta información a la computadora y que esta realice una interacción entre el usuario y el mundo virtual.

La no inmersiva también utiliza estos lenguajes de programación enfocados a la realidad virtual, la diferencia con respecto a los inmersivos es que no existen dispositivos adicionales a la computadora donde se está visualizando.

(17)

17 asimilarla, pero será, sin dudarlo, una de las tecnologías preferidas en un futuro cercano.

La realidad virtual ha ido evolucionando de una manera vertiginosa en los últimos años, esto en gran medida ocasionado por la implementación y desarrollo de consolas de videojuegos que han explotado esta tecnología y que la han hecho llegar, a toda persona que posea una consola de este tipo.

A pesar de que la realidad virtual ha tenido un gran auge la mayoría de los dispositivos que existen actualmente, están basados en presentar el mundo virtual al usuario utilizando una sola pantalla, esto es debido a lo complejo que resulta sincronizar las imágenes en más de una pantalla.

Aunque existen dispositivos de despliegue de más de una pantalla, estos suelen ser caros y no aplicados a fines didácticos o de investigación.

Sistemas Inmersivos

Son todos aquellos sistemas donde el usuario se siente dentro del mundo virtual que se está simulando. Este tipo de sistemas utiliza diferentes dispositivos llamados accesorios como pueden ser los guantes de datos, trajes especiales, cascos, etc. El objetivo de tantos sistemas es dar el mayor grado de libertad al usuario dentro del mundo virtual de manera que lo hagan sentirse totalmente inmerso en él. Son los sistemas adecuados para aplicaciones de entrenamiento o capacitación.

Como contra tiene, que la inmersión total es muy difícil de alcanzar debido a la multitud de sentidos involucrados y la gran fiabilidad que ha de tener la aplicación para con cada uno de ellos.

Los siguientes son ejemplos de sistemas inmersivos:

Head Mounted Display (HMD)

De forma casi simultánea, Corneau y Bryan, empleados de Philco Corporation, construyeron el primer HMD en 1961 tal y como conocemos hoy en día. Su sistema llamado HeadSight disponía de una pantalla de rayos catódicos acoplada al casco y un sistema de posicionamiento magnético para poder determinar la orientación de la cabeza. La finalidad de su diseño era usarlo con un circuito cerrado de video controlado remotamente para poder ver situaciones peligrosas.

(18)

18 Interesa que el campo de visión sea lo más grande posible para que la sensación de inmersión sea lo mayor posible. Si es muy pequeño da la sensación de tener un pequeño monitor 3D cerca de la cara. El problema al aumentar el campo de visión es tanto el costo de los dispositivos como la disminución de resolución.

Figura 3: Extracto de la patente de Heilig “Stereoscopic Television Apparatus For Individual Use”, considerado el primer HMD

La resolución de los displays suele ser mala con unas versiones típicas de 640x480, resolución muy baja para tener una experiencia fiel a la realidad. Lo recomendable son resoluciones mínimas de 1280x1024. Hoy en día es más accesible conseguir pantallas con las características necesarias para generar una buena experiencia visual, como se puede lograr con los actuales Oculus Rift, (dispositivo de realidad virtual creado por Oculus VR (16)).

(19)

19

Figura 4: HMD comercial de Oculus VR

Binocular Omni Orientation Monitor (BOOM)

Un monitor omnidireccional binocular es un dispositivo con un funcionamiento análogo a los HMD. El monitor es montado sobre un brazo mecánico articulado con sensores de posicionamiento localizados en las articulaciones. El monitor está estabilizado con un contrapeso de forma que no cueste esfuerzo moverlo. Para ver el entorno virtual, el usuario debe sostener el monitor y posicionarse enfrente de este, entonces el ordenador generará una escena de acuerdo a la posición y orientación de las articulaciones.

Figura 5: Utilización de un BOOM para la visualización tridimensional de bote sobre la superficie marítima.

(20)

20 permiten entonces resoluciones y campos de visión muy buenos además de un mejor seguimiento de los movimientos del usuario.

Computer Assisted Virtual Environment (CAVE)

Son estructuras cúbicas en forma de habitación donde las imágenes son proyectadas sobre las diferentes caras para crear la sensación de inmersión. Las imágenes proyectadas dependen de la posición y orientación del usuario de la CAVE. A diferencia de los sistemas explicados anteriormente, esta estructura permite sortear las dificultades mencionadas, posee un campo de visión muy completo sin tener que utilizar elementos que dificulten o limiten los movimientos del usuario. Como este sistema de visualización forma parte de los elementos utilizados en el desarrollo de esta tesis, se le dará un mayor énfasis en el apartado 2.2.

Figura 6: Esquema de funcionamiento de un sistema CAVE

Sistemas semi-inmersivos

(21)

21 Ejemplos de estos sistemas pueden ser los inmersivos de proyección o los sistemas de escritorio. Los sistemas inmersivos de proyección se caracterizan por ser pantallas en que ocupen un amplio rango de visión del observador. El usuario utiliza lentes y opcionalmente algún dispositivo de seguimiento de movimientos de la cabeza de manera que al moverse el usuario, las imágenes a proyectar son calculadas por el motor de realidad virtual para cada pared y el suelo. Los de escritorio consisten en algún periférico que permite al usuario sentirse inmerso en uno de los sentidos dentro del mundo virtual, a costa de disminuir el grado de inmersión de otros sentidos.

Sistemas no inmersivos

Estos sistemas tienen dispositivos de entrada-salida muy básicos. La salida suele ser un monitor donde se representa el mundo virtual y la entrada suele ser por medio del ratón, teclado o joystick. Son sistemas muy simples y son adecuados para las visualizaciones científicas y simuladores de bajo coste donde interese más la secuencia de acciones que su correcta aplicación.

Sistemas de Realidad Aumentada

En los sistemas de realidad aumentada, los usuarios tienen acceso a una combinación de realidad virtual y mundo real, mediante la superposición de información. La idea es, partiendo del mundo real y de una serie de parámetros, programados anteriormente o bien obtenidos a partir del análisis dinámico del mundo real, añadir elementos visuales que se superpongan sobre el mundo real. Cara al usuario todo parece una única cosa, sin llegar a distinguir entre lo real y lo virtual.

2.2.

CAVE

2.2.1.

¿Qué es?

Una CAVE se cataloga como un entorno de realidad virtual inmersiva. Puede, a su vez, decirse que las CAVEs son entornos multipersona de alta resolución con video 3D y audio, ajustados a un espacio determinado.

(22)

22 tenga una mayor experiencia inmersiva, porque ayuda a la actualización de las proyecciones e interacciones de acuerdo a los movimientos del usuario.

Puede ser usado para presentar experiencias en entornos virtuales con un alto grado de inmersión. La tecnología permite interactuar, por lo cual es de entrada y salida. Corresponde al Paradigma de Realidad Virtual, al ser un sistema aislado totalmente inmersivo, la interacción es directamente con el ordenador, la comunicación con el mundo real es transparente, solo la hacen los procedimientos externos.

2.2.2.

Antecedentes

El término CAVE, se relaciona por primera vez en “The Cave, Audio Visual Experience Automatic Virtual Environment” de Carolina Cruz-Neira, Daniel J. Sandin, Thomas A. Dfanti, Robert V. Kenyon y John C. Hart, publicación del desarrollo realizado por el Laboratorio de Visualización Electrónica (EVL) de la Universidad de Illinois-Chicago (UIC) en 1992, originalmente desarrollada como una herramienta para la visualización de datos (17). En dicho Artículo se encuentra un análisis de cuatro diferentes sistemas virtuales para visualización, HMD (Head-Mounted Display), Cathode Ray Tube, Binocular Omni-Oriented Monitor (BOOM) y Audio-Visual Experience Automatic Virtual Environment (CAVE).

(23)

23

Dificultades Inmersivas

Field of View Panorama Perspective Body Rep. Intrusion

CRT 45° None Slow Physical None

BOOM 90° - 120° Fast Fast Virtual Partial

HMD 100° - 140° Slow Slow Virtual Full

CAVE Full Fast Slow Physical None

Dificultades en la Visualización

Vis. Aculty Linearity Look Around Prog. Refine. Collab.

CRT 20/45 Linear Limited Fix Loc. Only Single Persp.

BOOM 20/85 LEEP Full Fix Loc. And Rot. Dup. Hardware

HMD 20/425 Elther Full Fix Loc. And Rot. Dup. Hardware

CAVE 20/110 Linear Full Fix Loc. Only Single Persp.

Tabla 1: Tablas comparativas de los distintos sistemas de RV. (17) (18)

Las tablas anteriores muestran cómo cada sistema se comporta en aspectos de inmersión y visualización. Con esto, los resultados ubicaron a la CAVE como una interfaz de alta resolución no intrusiva para la realidad virtual fácil de aprender. Superior a los paradigmas de su época en diferentes aspectos.

(24)

24

Figura 7: Render del primer CAVE

2.2.3.

Ventajas y Desventajas del uso de CAVEs

Las ventajas y desventajas en el uso de CAVEs, son también las que generan el uso de realidad virtual, dependiendo del contexto claro está.

Ventajas:

 Aprendizaje en manipulación de objetos en un contexto no real.

 Ayuda a realizar experimentos, entrenamiento, formación y aspectos

académicos y de negocios que evitan pérdidas económicas, materiales o humanas.

 Beneficios para que personas de diversidad funcional puedan experimentar

cuestiones que no les permite la realidad.

 Permite realizar un seguimiento de las situaciones y procedimientos realizados

in-world.

 Se puede romper paradigmas, principios y leyes de la realidad (Gravedad,

Vuelo, Arquitectura Virtual, etc.).

 Se pueden poner a prueba principios y modelos.

 Se pueden plantear situaciones para ser simuladas y poder obtener una

(25)

25 Desventajas:

 La complejidad de los desarrollos es elevada.

 Los costos son bastante elevados en la realización de mundos virtuales.

 Habrán defectos durante la experiencia in-world, en cuanto a la interacción

entre el programa, los usuarios y la interfaz.  Se puede presentar desorientación espacial.

 A veces suele ser difícil el aprendizaje del uso de la herramienta, lo cual incurre

en cierta dificultad para dominar los mandos y/o controles.  Distanciamiento emocional de los objetos y escenas virtuales.

 Todo el equipo técnico necesita de un adecuado personal para el

mantenimiento e instalación, por lo tanto para su manejo requiere personal altamente calificado.

2.3.

Marco Teórico

2.3.1.

Visualización

El proceso de renderizado, en inglés rendering, es el proceso por el cual el modelo 3D de la escena (representado usualmente por superficies trianguladas) se transforma en imagen considerando la posición de la cámara y las condiciones de iluminación. En una aplicación de realidad virtual, este proceso debe realizarse a un ritmo no inferior a 30 cuadros por segundo y si se trabaja con estereoscopia, el proceso debe realizarse para dos cámaras simultáneamente.

Para modelar correctamente la iluminación de los objetos debe considerarse los tres fenómenos que ocurren cuando la luz incide en el mismo: absorción y emisión difusa; reflexión especular y transmisión (en realidad es refracción, ya que la luz al cambiar de medio cambia su dirección). El modelo clásico de renderizado soportado en las placas gráficas está basado en el tratamiento por triángulos. Es decir, se toma cada triángulo de la escena y se computa un modelo de iluminación simple que considera poco más que la componente difusa.

(26)

26

Ventana de visualización y puerto de visualización

La ventana de visualización, también llamada window view, es una sección de una escena 2D en la que se desea graficar otra sección esquemática, llamada puerto de visualización (viewport). La palabra ventana, tal como se utiliza aquí, no debe confundirse con la ventana de interfaz gráfica del usuario (19). Más bien es una analogía con la forma y límites que posee una ventana de una habitación, en la que uno puede ver lo existente fuera de ella (20).

Generalmente tanto el viewport como la ventana son rectángulos paralelos a los ejes de coordenadas y están limitados por valores máximos y mínimos como se muestra en la Figura 8.

Figura 8: Figura z. Ventana gráfica, (a) viewport, (b) window view.

Volumen de Vista

La generalización de una ventana de visualización en 3D se denomina volumen de vista. Este se encuentra orientado para observar una sección de una escena 3D, es decir, se define una cámara con la cual se va a visualizar la escena y su propio sistema de coordenadas denominado coordenadas de visión (v). Definiremos este sistema con origen en Ov y sus ejes orientados sobre los vectores unitarios u,v,z donde n indica el vector normal a la cámara.

(27)

27

Figura 9:(a) Un volumen de vista proyección paralela. (b) Un volumen de vista proyección perspectiva.

La transformación de proyección usada establece la forma del volumen de vista, una proyección paralela define un volumen de vista como paralelepípedo rectangular (Figura 9(a)); y en una proyección perspectiva el volumen de vista es una pirámide truncada en el plano cercano (Figura 9(b)). En las aplicaciones CAVE se hará uso de una proyección perspectiva.

Volumen de vista inmersivo

En un sistema de inmersión tipo CAVE se establecen volúmenes de vista independientes y complementarios de un mismo campo visual para un único punto focal, ubicado en la posición del usuario. Un sistema CAVE posee dispositivos de rastreo de posición, por lo tanto el punto focal es actualizado con la posición del usuario. La Figura 10 muestra un ejemplo de un volumen de vista inmersivo para tres pantallas.

Figura 10: Volumen de vista inmersivo para un sistema de tres pantallas. Se observa que el volumen está compuesto por tres volúmenes de vista independientes, con punto focal ubicado en posición del usuario. En (a) se observan los volúmenes de vista cuando el usuario está ubicado a la misma distancia de las tres

pantallas, en (b) se muestra cómo los volúmenes de vista cambian de acuerdo a la posición del usuario, es decir que se modifican de acuerdo a la distancia que el sujeto adquiera en función a las pantallas, esto

(28)

28

2.3.2.

Tracking

Debido a una importante interrelación de los aparatos sensoriales del ser humano, la información originada a partir de los distintos sentidos y en especial la percepción kinestésica relacionada con los movimientos del organismo, el tracking resulta crucial para la comprensión del espacio donde se sitúa el usuario de una aplicación CAVE. Las experiencias realizadas por Ware, Arthur y Kellog en “Fish Tank Virtual Reality” (22) demuestran la posibilidad de sustituir la estereoscopía por el tracking con resultados comparables e incluso superiores en lo que se refiere al desempeño exitoso de tareas en un espacio virtual.

Aunque es posible controlar un sistema de estas características con un dispositivo 2D como el mouse, también en este campo se vienen produciendo innovaciones a pasos agigantados, pudiendo señalarse como ejemplo los sistemas Wii, en los que el puntero 3D cuenta además con respuestas de carácter háptico. En este contexto debe hacerse referencia al trabajo de J. Chung Lee, ampliamente difundido a través de Internet (23).

En aplicaciones de RV (realidad virtual) y RA (realidad aumentada) se debe realizar el seguimiento o tracking del participante, para determinar su posición y orientación en el mundo virtual (en aplicaciones de realidad virtual) o en el mundo real (en el caso de aplicaciones de realidad aumentada).

Para realizar el seguimiento del usuario, pueden usarse dispositivos especí-ficos o puede analizarse una imagen capturada de la realidad para deducir la posición del usuario en base a elementos del entorno, lo que se denomina tracking basado en visión.

Generalmente en aplicaciones de realidad virtual y algunas aplicaciones de realidad aumentada, se realiza el tracking de la cabeza para realizar la visualización del mundo virtual o mixto de acuerdo al punto de vista del participante.

(29)

29

Tipo de Sistemas

Sensores

Fuente

Inside-out En el objeto en movimiento En el ambiente

Inside-in En el objeto en movimiento En el objeto en movimiento

Outside-in En el ambiente En el objeto en movimiento

El Tracking puede clasificarse según la tecnología con la que se realice en:  Electromagnético

 Mecánico  Inercial  Ultrasónico  Óptico  Videométrico

Puede consultarse la publicación de Rolland (24) para mayor detalle de cada tecnología de tracking. En la tabla siguiente se detallan las ventajas y desventajas de cada tipo de tecnología.

Tracking

Tipo de sistema

Ventaja

Desventajas

Electromagnético

Es un sistema inside-out ya que los sensores se localizan en el cuerpo del participante que se mueve en un campo electromagnético exterior que actúa como fuente.

No se necesita una línea de visión directa del participante. Si se colocan múltiples sensores se puede realizar el seguimiento de diferentes

articulaciones.

(30)

30

Mecánico

Es un sistema inside-in donde los sensores son

potenciómetros que se colocan en las articulaciones que son las fuentes que ejercen fuerza sobre los potenciómetros.

Muy rápido y muy preciso.

Muy incómodo para el usuario. Movimientos muy limitados. Se puede integrar respuestas de fuerzas (force-feedback).

Óptico

Es un sistema outside-in ya que los sensores externos, cámaras, se posicionan en el ambiente exterior para recolectar datos de fuentes localizadas en el cuerpo (puntos reflectantes).

Utiliza cámaras de video u otros sensores de luz.. No necesita cables. Con varias cámaras se puede obtener la posición 3D.

Necesita visión directa y buena iluminación.

Videométrico

Es un sistema inside-out ya que sitúa una cámara sobre el participante y se utilizan puntos de referencia en el mundo real para determinar la posición del mismo.

Es económico. Necesita elementos de cálculo adicional o cableado.

Ultrasónico

A través de múltiples fuentes de sonidos de alta frecuencia y micrófonos se puede medir el tiempo que tarda el sonido para ir de un lugar al otro, y determinar la posición de cada micrófono por triangulación.

No es bueno en ambientes ruidosos. Necesita visión directa.

Inercial

Utiliza instrumentos que pueden detectar y medir cambios de fuerzas giroscópicas (aceleración e inclinación).

Son baratos. No precisan punto de referencia.

Pierden precisión a lo largo del tiempo. Funcionan bien combinados con otros sistemas.

Tabla 2: Comparación de tipos de tracking

(31)

31 adecuadas y suficientes para lograr los objetivos del proyecto. Se explica más adelante en la sección 2.5.3.

2.4.

Tecnologías Relacionadas

En esta sección se nombraran distintos tipos de software y distintas librerías diseñadas específicamente para aplicaciones CAVE, que hoy en día se encuentran disponibles para su uso, algunas de fácil acceso y manipulación, y otras no tanto.

Existen varias técnicas para el rendering de escenas, teniendo a OpenGL (Open Graphics Library) (25) como una de las principales para simulaciones simples. A su vez, hay 3 escenarios gráficos populares que se encuentran en uso hoy en día: OpenSG, OpenSceneGraph y OpenGL Performer. OpenSG y OpenSceneGraph son de código abierto, mientras que OpenGL Performer es un producto comercial de Silicon Graphics Inc (SGI).

CAVELib es la API original, desarrollado por EVL-UIC. El software se comercializó en 1996 y potencializado por VRCO Inc. CAVELib es un paquete software de bajo nivel para realidad virtual que permite desarrollo y creación, centrada en el observador, con todas las características mencionadas anteriormente. Los desarrolladores crean todos los gráficos de su entorno y la CAVELib los muestra acorde a lo planeado.

La API CAVELib es independiente a la plataforma, permitiendo a los desarrolladores crear aplicaciones de alto nivel de realidad virtual en los sistemas operativos Windows y Linux (IRIX, Solaris, y HP-UX ya no son compatibles). Las aplicaciones basadas en CAVELib son configurables externamente en tiempo de ejecución, haciendo la aplicación ejecutable independiente del sistema de visualización.

Hay gran cantidad de aplicaciones que ofrecen APIS y plataformas de desarrollo para RV (VR Juggler, CoVE, Quest 3D, VR4MAX, TechViz), frameworks (Avango, inVRs), middlewares (Equalizer, Omegalib), Sistemas Operativos (Syzygy), librerías (libGlass) y Aplicaciones (CaveUT, Vrui, 3DVisualizer, LidarViewer, Cave 5D, EON Icube), entre otras, que se relacionan con el software utilizado en CAVEs.

(32)

32

2.4.1.

Equalizer

Equalizer (26) es un middleware estándar para crear y desarrollar aplicaciones que se puedan ejecutar en paralelo, basadas en OpenGL. Permite a las aplicaciones beneficiarse al poder utilizar varias placas de video, procesadores y computadoras para escalar el rendimiento de la representación gráfica, la calidad visual y tamaño de la pantalla. Una aplicación de Equalizer, se ejecuta sin modificaciones en cualquier sistema de visualización, desde una estación de trabajo simple de clusters gráficos de gran escala, estaciones de trabajo multi-GPU e instalaciones de Realidad Virtual.

Equalizer impulsa a los sistemas de visualización más avanzados del mundo, por ejemplo, una CAVE de ultra-alta resolución, impulsada por 24 proyectores 4k, a 72 pantallas de visualización, así como clusters de escalabilidad para el trazado interactivo de rayos utilizando cientos de nodos.

Sequel, es una interfaz de fácil acceso para el framework de renderizado paralelo de Equalizer, y permite un rápido desarrollo de aplicaciones multi-GPU en cluster.

GPU-SD es una biblioteca para el descubrimiento y anuncio de unidades de procesamiento gráfico utilizando ZeroConf. Se utiliza para la configuración automática de las aplicaciones del Ecualizer.

Collage es una biblioteca de C ++, multiplataforma, utilizada para la construcción de aplicaciones distribuidas heterogéneas. Es el cluster multi-hilo que actúa como backend de Ecualizer.

(33)

33

Figura 11: Ditribucion de proyección en dos pc´s utilizando Equalizer

Beneficios

Mayor rendimiento, Calidad Visual y Tamaño de pantalla: Equalizer contiene la esencia de 10 años de experiencia en el rendering paralelo y escalable, fácil de integrar en cualquier aplicación.

Rápido direccionamiento para aplicaciones OpenGL paralelas: Equalizer es mínimamente invasiva y ofrece un modelo de ejecución en paralelo natural para explotar el paralelismo de múltiples núcleos, estaciones de trabajo multi-GPU y clusters gráficos.

Framework rico en características: Equalizer contiene algoritmos de renderizado escalables, y su modelo de desarrollo abierto asegura una mejora continua. Las aplicaciones de Equalizer son flexibles y se pueden desplegar en muchos ambientes que cambian rápidamente.

Prueba a futuro: Una comunidad activa de desarrollo y una licencia de código abierto proporcionan características de vanguardia y aseguran la estabilidad de su inversión.

Características

Las aplicaciones desarrolladas usando el framework de Equalizer se benefician con las siguientes características:

(34)

34 escala, dirigiendo una sola ventana o una CAVE de seis caras, durante el uso de una o varias placas gráficas para renderizar cada vista.

Gran Visualización de Datos: Una aplicación de Equalizer puede aprovechar el poder de múltiples procesadores, placas gráficas y/o equipos, para escalar el rendimiento de la renderización de imágenes, la calidad visual y tamaño de la pantalla. Esto permite que prácticamente, cualquier conjunto de datos, pueda ser renderizado en cualquier resolución, teniendo los recursos de hardware suficientes.

Realidad Virtual: Las aplicaciones de Equalizer se pueden ejecutar sin problemas en instalaciones de realidad virtual utilizando renderización estéreo activo y pasivo, así como head tracking para uno o varios observadores.

Ejecución distribuida: Equalizer incluye Collage, una biblioteca avanzada para aplicaciones distribuidas. Características como multicast fiable, soporte InfiniBand y la compresión de datos permiten un rendimiento óptimo en los clusteres de visualización a gran escala.

2.4.2.

Omegalib

Omegalib (27) es un middleware diseñado para facilitar el desarrollo de aplicaciones para realidad virtual y sistemas inmersivos.

A pesar de que Omegalib está diseñado para sistemas de realidad virtual, puede ser utilizado para desarrollar aplicaciones en sistemas de escritorio estándar, aprovechando el poder de las unidades de múltiples GPU, cuando estén disponibles. La distribución fuente de Omegalib, también incluye todas las dependencias principales requeridas y está listo para ejecutarse en Windows, Linux (32 y 64 bits) y OSX 10.7 o superior.

Con Omegalib, se pueden heredar aplicaciones y convertirlas fácilmente para funcionar en sistemas de visualización de varias pantallas.

(35)

35

Figura 12: Representacion de un escenario tipo.

Omegalib soporta script de Python e integra con Mision Control, una herramienta para editar escenas 3D en tiempo de ejecución y el perfil de renderizado y rendimiento de la red.

Figura 13: Vista general de una representacion utilizando Omegalib

Además, se pueden modificar pipelines de visualización científica VTK para ejecutar aplicaciones.

Características

 Soporte para sistemas híbridos, que presentan alta definición 2D y

contenido 3D en la misma superficie de la pantalla.

 Un API de C ++ y Python. Las aplicaciones pueden ser desarrolladas

(36)

36  Cambio de aplicaciones en tiempo de ejecución: las aplicaciones

pueden ser recargadas o intercambiadas sin necesidad de reiniciar el sistema de visualización.

 Sistema escalable de pantallas: Omegalib se ejecuta en máquinas de

escritorio, estaciones de trabajo multi-GPU con conducción de pantallas como celdas, y sistemas clusters como CAVE2, compuesto por 36 computadoras y 72 pantallas.

 Control de la interfaz web y streaming de píxeles para clientes HTML5.  Integración SAGE experimental.

 2D / biblioteca de widgets 3D personalizable.

 Soporte para una amplia gama de periféricos de entrada (controladores,

sistemas de captura de movimiento, superficies táctiles, interfaces cerebrales y del habla), a través de la toolkit de Omicron.

 Integración extensible con toolkits de terceros de alto nivel, como VTK (

The Visualization Toolkit) y Open Scene Graph.

 Reproducción de sonido a través de un servidor de sonido basado en

un supercolisionador (supercollider). Omegalib se ocupa de la sincronización de los sonidos activos, entre la aplicación y máquinas de sonido, en una instalación de RV. El servidor de sonido es escalable (se ejecuta en altavoces estéreos o en sistemas de audio de 22 canales como el de CAVE2) y se puede personalizar usando el lenguaje de scripting del supercolisionador (supercollider).

2.5.

Plataforma desarrollada

Las tecnologías mencionadas anteriormente formaron parte, en un principio, del desarrollo del proyecto en cuestión, pero debido a su compleja configuración e integración a los sistemas que se pretendían desarrollar, no se justificaba el esfuerzo requerido para la envergadura del proyecto. Como se puede observar, estas aplicaciones abarcan un amplio abanico de variables y parámetros, como así también multiplicidad de configuraciones para atacar de diferentes maneras a un mismo objetivo.

(37)

37 A continuación se detallan los módulos que se utilizaron para el desarrollo de esta plataforma.

2.5.1.

Ogre 3D

OGRE (Oriented Object Graphics Rendering Engine) (28) es un motor gráfico 3D orientado a objetos y flexible, escrito en C ++. Está diseñado para que resulte más fácil y más intuitivo a los desarrolladores, producir aplicaciones que utilizan representación gráfica 3D acelerada por hardware. Abstrae todos los detalles de las bibliotecas que utilizan sistemas subyacentes como Direct3D y OpenGL, y proporciona una interfaz basada en objetos globales y otras clases intuitivas.

OGRE puede ser utilizado para hacer juegos, pero realmente está diseñado para proporcionar solución grafica para cualquier tipo de aplicación; por ejemplo, se puede incorporar funciones, como sonido, la creación de redes, inteligencia artificial, colisión, física, etc., al integrarlo con otras bibliotecas, algo que varios frameworks ya han hecho.

Es tan amplio que no todo el que necesita un motor 3D, quiere hacer juegos, por lo que se pueden desarrollar simulaciones, aplicaciones de negocio, etc., incluso dentro de la industria de los juegos, los requisitos pueden variar ampliamente; por ejemplo, un MMORPG necesitará un tipo diferente de biblioteca de red que un FPS, y un simulador de vuelo necesitará un tipo diferente de colisión/sistema físico a diferencia del que necesitará un juego de lucha.

Si OGRE incluyera todas estas características no estaría obteniendo un buen diseño. En lugar de ello, ofrece una API muy amigable de integración para que se pueda escoger las otras bibliotecas a utilizar. Muchos desarrolladores de juegos experimentados han expresado su aprobación de este enfoque, ya que no existen limitaciones incorporadas.

(38)

38

Características

Características de productividad

 Simple, fácil de usar, interfaz OO diseñada para minimizar el esfuerzo

necesario para renderizar escenas 3D, y para ser independiente de la aplicación 3D es decir Direct3D / OpenGL.

 Un framework extensible hace que la aplicación en ejecución sea rápida

y sencilla.

 Requisitos comunes como administración del estado de render, que

trata de la transparencia obtenida y ahorra tiempo valioso de forma automática

 Diseño limpio, ordenado y documentación completa de todas las clases

de motores.

 Comprobado, motor estable utilizado en varios productos comerciales

Plataforma y API 3D apoyo

 Direct3D 9 y 11, OpenGL (incl. ES, ES2, ES3 y OGL3 +) y WebGL

apoyo (emscripten)

 Compatibilidad con Windows (todas las versiones), Linux, Mac OSX,

Android, iOS, Windows Phone y WinRT

 Se basa en varios compiladores como MSVC, GCC 3+ o Clang

Materiales / soporte Shader

 Potente lenguaje para la declaración de materiales lo cual permite

mantenerlos fuera del código.

 Soporta programas vértices y de fragmentos (shaders), ambos

programas de bajo nivel escritos en ensamblador, y programas de alto nivel escritos en CG, HLSL DirectX9 o GLSL y proporciona apoyo automático a los muchos parámetros constantes comúnmente ligados como matrices de visión del mundo, la información de estado de la luz, objeto posición del ojo del espacio, etc.

 Soporta la gama completa de las operaciones de multitextura y mezcla

(39)

39  Soporte para múltiples técnicas sobre materiales, significando que se

puede diseñar efectos y alternativas para una amplia gama de placas de video y OGRE utiliza automáticamente la mejor.

 Texturas de carga de PNG, JPEG, TGA, BMP o archivos DDS,

incluyendo formatos inusuales como texturas 1D, texturas volumétricas, cubemaps y texturas comprimidas (DXT / S3TC).

 Las texturas pueden ser proporcionadas y actualizadas en tiempo real

por los plugins, por ejemplo un canal de video.

 Fácil para usar soporte para proyecciones texturizadas.

Características Misc

 Infraestructura de recursos comunes para la gestión de la memoria y la

carga de los archivos (ZIP, PK3).

 Arquitectura de plugin flexible, lo cual permite que el motor se extienda

sin re-compilación.

 Sus 'Controladores' permiten organizar fácilmente los valores derivados

entre los objetos, por ejemplo, cambiar el color de un barco.

 Depuración del administrador de memoria, para identificar pérdidas de

memoria.

 XMLConverter para convertir eficientemente en tiempo de ejecución,

formatos binarios, a/de XML para edición o intercambio de datos.  Biblioteca de muestra + browser, que muestran muchas características.

2.5.2.

ENet

El propósito de ENet (7) es proporcionar una capa de comunicación de red relativamente delgada, simple y robusta en la parte superior de la UDP (User Datagram Protocol). La característica principal que proporciona es una entrega de paquetes fiable y en orden.

Omite ciertas características de red de alto nivel como la autenticación, la detección de servidores, el cifrado, u otras tareas similares que son particularmente de aplicación particular, por lo cual la biblioteca se mantiene flexible, portátil y fácilmente integrable.

(40)

40 fiabilidad, la secuenciación, tamaños de paquetes de libre disposición, y la gestión de la conexión. Así UDP por sí mismo tampoco era adecuado como un protocolo de red.

Por lo cual se necesitaba de una biblioteca de red adecuada, de libre disponibilidad, por lo cual fue donde entró en juego la posibilidad de utilizar ENet.

UDP y TCP podrían haber sido utilizados juntos en Cube para beneficiar un poco de ambos de sus características, sin embargo, las combinaciones resultantes de protocolos todavía deja mucho que desear. TCP carece de múltiples flujos de comunicación sin tener que recurrir a la apertura de muchas tomas y complica delineación de paquetes debido a su comportamiento de buffering. UDP carece de secuenciación, gestión de la conexión, gestión de los recursos de ancho de banda, e impone limitaciones en el tamaño de los paquetes. Se requiere una inversión significativa para integrar estos dos protocolos, y el resultado final es peor en características y rendimiento que el protocolo uniforme presentado por ENet.

ENet por lo tanto, nos deja conforme en los intentos de abordar estas cuestiones y proporcionar un protocolo único, uniforme en capas sobre UDP para el desarrollador con las mejores características de UDP y TCP, así como algunas características útiles, con una integración mucho más limpia que cualquier resultado de una mezcla de UDP y TCP.

Proporciona una interfaz de conexión simple a través de la cual puede comunicarse con un host externo. La vida de la conexión se supervisa activamente haciendo ping al host extranjero en intervalos frecuentes, y también supervisa las condiciones de la red desde el host local al host extranjero, tales como el tiempo medio de ida y vuelta, y la pérdida de paquetes.

Secuencialización y confiabilidad

ENet proporciona secuenciación para todos los paquetes mediante la asignación de un número de secuencia que se incrementa a medida que se envían los paquetes. ENet garantiza que ningún paquete con un número de secuencia más alto será entregado antes de que un paquete con un número de secuencia inferior, asegurando así que los paquetes se entregan exactamente en el orden en que se envían.

(41)

41 confiables a un mínimo absoluto. Para los paquetes confiables, si un paquete de número de secuencia más alto llega, pero los paquetes anteriores en la secuencia aún no han llegado, ENet detendrá la entrega de los paquetes de mayor número de secuencia hasta que sus predecesores hayan llegado.

Adaptabilidad y Portabilidad

ENet proporciona un mecanismo de asignación de ancho de banda estática para asegurar que el volumen total de paquetes enviados y recibidos a un host, no superen las capacidades del huésped. Además, también proporciona una aceleración dinámica que responde a las desviaciones de las conexiones de red normales para rectificar varios tipos de congestión de la red, limitando aún más el volumen de los paquetes enviados.

Funciona en Windows y cualquier otro Unix o plataforma Unix que proporciona una interfaz de sockets BSD. La biblioteca cuenta con una pequeña y estable base de código que se puede ampliar fácilmente para soportar otras plataformas y se integra fácilmente.

ENet no exige regalías y no lleva una licencia que tienda a limitar en cómo puede ser utilizado. Está licenciado bajo una licencia estilo MIT, que da la libertad para hacer lo que se necesite.

2.5.3.

Kinect

Kinect es un dispositivo económico pensado desde su concepción como un elemento de soporte para videojuegos de consola, aunque es posible conectarlo a una PC estándar a través de una conexión USB. A más de un año del lanzamiento oficial, las aplicaciones y líneas de investigación que lo incluyen como dispositivo de interfaz abarcan diversos ámbitos y son aplicables en distintas áreas como medicina (29) (30), reconstrucción de objetos (30) (31), entre otros (32).

(42)

42

Capítulo 3.

Diseño e implementación

3.1.

Introducción

El objetivo principal de este capítulo es determinar detalladamente las características de cada una de las etapas de desarrollo para la creación de una plataforma de rendering distribuido, con el fin de poder ser aplicada e implementada para desarrollar aplicaciones que se puedan visualizar en una CAVE. Como se mencionó en el capítulo Capítulo 2, existen distintos tipos de software especializados en la funcionalidad antes mencionada, pero se decidió implementar una plataforma propia, para poder adaptar a los requerimientos particulares.

Además, se realiza un análisis de los elementos disponibles al inicio del proyecto; se describe las distintas decisiones de diseño tomadas y la evolución de la plataforma a través de las distintas iteraciones llevadas a cabo.

Los dos aspectos más importantes de la plataforma son el componente de visualización y la sincronización de los datos, materializado en el componente de red. La sincronización de los datos es imprescindible ya que habrá varias aplicaciones ejecutándose en simultáneo en diferentes computadoras, y se debe mostrar una ejecución consistente para cada una de ellas. De lo contrario no hay inmersión posible. Adicionalmente, se le debe proveer al usuario de una forma de interactuar con la plataforma. Es necesario sincronizar la interacción del usuario con la plataforma, a través de los diferentes dispositivos de entrada, como los son joystick, teclado y mouse, razón por la cual se crea un componente específico con este fin.

3.1.1.

Proceso de visualización

(43)

43

Figura 14: Izquierda: malla del modelo de un delfín. Derecha: visualización final de la malla luego de aplicar materiales e iluminación.

Como se explicó en el capítulo anterior, para generar una buena sensación de inmersión, es necesario tener en cuenta la disposición de las pantallas en el ambiente a representar, y la posición del usuario para poder establecer las distintas cámaras virtuales y representar las diferentes imágenes en cada una de sus respectivas pantallas. Por lo cual se necesita de un motor gráfico para dar soporte a la generación de la imagen, y un dispositivo de seguimiento (21), para obtener la posición del usuario en cada momento.

Para lograr una mayor sensación de inmersión, la proyección de las imágenes en las pantallas tienen que conseguir que el usuario adquiera una visión tridimensional humana real. Debido a esto, se trabajó con proyección estereoscópica, por lo que fue necesario generar dos proyecciones distintas, para crear la ilusión de profundidad mediante una imagen estereoscópica, es decir, a partir de la emisión de imágenes intercaladas pertenecientes a la perspectiva del ojo izquierdo y derecho.

3.1.2.

Proceso de sincronización

(44)

44 primera de estas representaciones muestra la geometría, color, ubicación y textura que tienen los objetos representados en la visualización. La segunda modela el comportamiento de estos objetos, dadas propiedades físicas simplificadas de estos como el peso o la forma.

Figura 15: Estructura de la CAVE

Además de esto, se deben sincronizar todas las funciones necesarias para que el mundo virtual se asemeje de manera fiable al mundo real.

(45)

45 Características del Servidor:

Simulación física: el procesamiento del motor físico se realizará en el servidor, para luego ser sincronizado con los clientes. Esto es así para evitar los errores que introducen los motores físicos, y que hacen imposible que los cálculos sean determinísticos, es decir, que se genere el mismo resultado en todas las aplicaciones.

Head Tracking: El tracking de la posición de la cabeza se realiza a través del dispositivo Kinect. mediante una pequeña aplicación que captura los datos emitidos por el dispositivo y utilizando UDP envía estos datos al servidor. Cuando los datos son recibidos, el servidor se encarga de adaptar la perspectiva para generar una correcta representación del mundo virtual.  Dispositivos de interacción de usuario (joystick, teclado, mouse,

aplicaciones de terceros). En todos los frames se realiza una captura del estado actual de los dispositivos de entrad/salida y se actúa en consecuencia, modificando tanto la visualización computacional como el estado de la aplicación.

Comunicación con los demás clientes, los cuales serán los

visualizadores del mundo virtual. En este caso la comunicación con los clientes se realiza mediante dos grandes conjuntos o tipos de mensajes. Los primeros son mensajes de sincronización automáticos, los cuales se encargan de transmitir datos comunes a todas las aplicaciones, como por ejemplo, la posición de la cámara en cada momento. Los segundos, son mensajes personalizados, los cuales pueden ser creados y enviados en cualquier momento con fines propios a cada aplicación.

Características del Cliente:

Contendrá el mundo virtual. El cliente se encarga de renderizar la geometría de las escenas representadas. Los elementos estáticos se mantendrán invariantes durante toda la ejecución de la aplicación, y los objetos dinámicos son actualizados, según los datos enviados por el servidor. Algunos casos especiales, como las animaciones por ejemplo, se actualizan según un offset aplicado al tiempo en que se reciben los mensajes de actualización del servidor, manteniendo así la sincronización.  Comunicación con el servidor para recibir datos de sincronización de

Referencias

Documento similar