• No se han encontrado resultados

Simulador de interfaz tangible

N/A
N/A
Protected

Academic year: 2020

Share "Simulador de interfaz tangible"

Copied!
46
0
0

Texto completo

(1)

Simulador de Interfaz Tangible

Proyecto de grado de Ingeniería de Sistemas y Computación

Presentado por:

Carlos Andrés Barrientos Achury

Profesor Asesor

Mario Fernando De la Rosa Rosero

(2)

Tabla de Contenido

1. Introducción ... 6

2. Problemática ... 8

2.1 Descripción de Tecnologías a utilizar ... 9

3. Estado del Arte ... 11

4. Metodología, Diseño e Implementación de la Solución ... 17

4.1 Diseño de funcionamiento del sistema ... 17

4.2 Implementación ... 20

5. Resultados del proyecto y Pruebas ... 26

5.1 Pruebas de usuario ... 41

6. Conclusiones y Trabajos Futuros ... 43

(3)

Tabla de Figuras

1. Esquema de Interacción Usuario/Interfaz Tangible...9

2. Dispositivo MisTable...12

3. Ilustración de componentes del dispositivo MisTable...12

4. Proyección del dispositivo MisTable...13

5. Dispositivo CityScape...14

6. Ilustración de componentes del dispositivo Tangible CityScape...14

7. Ilustración de rayos láser...15

8. Proyecciones del dispositivo Aerial Burton...16

9. Diseño modular de software...17

10. Gestos de desplazamiento...18

11. Gestos de escalamiento...18

12. Gestos de rotación...19

13. Mecanismo Raycast...22

14. Mecanismo de esferas de colisión...23

15. Mecanismo de funciones de superficie...24

16. Menú inicial...27

17. Caja (Paralelepípedo) continuo...27

18. Caja (Paralelepípedo) discreto...28

19. Ortoedro Continuo...28

20. Ortoedro discreto...29

21. Tetraedro continuo...29

22. Tetraedro discreto...30

23. Pirámide continua...30

24. Pirámide discreta...31

25. Cilindro continuo...31

26. Cilindro discreto...32

27. Cilindro elíptico continuo...32

28. Cilindro elíptico discreto...33

29. Cono continuo...33

30. Cono discreto...34

31. Cono elíptico continuo...34

32. Cono elíptico discreto...35

33. Paraboloide continuo...35

34. Paraboloide discreto...36

35. Paraboloide elíptico continuo...36

36. Paraboloide elíptico discreto...37

37. Toro continuo...37

38. Toro discreto...38

39. Automóvil a partir de modelos geométricos continuas...38

40. Automóvil a partir de modelos geométricos discretos...39

41. Gestos de cambio de vista...39

42. Gestos de desplazamiento en el eje X, y Y...40

(4)

44. Gestos de escalamiento en el eje Z...40

45. Gesto de rotación con las manecillas del reloj...40

46. Gesto de rotación contra las manecillas del reloj...41

47. Formato de pruebas de usuario...41

(5)

Resumen

Hoy en día existen desarrollos de dispositivos que nos permiten lo que ha sido llamado como “interacción tangible”. La interacción tangible es un tipo de interacción cuyo objetivo es desarrollar y controlar “sistemas interactivos en los que objetos

convencionales son, al mismo tiempo, control y representación física de la información digital”. Así mismo este proyecto tiene como objetivo simular la visualización e

interacción de una interfaz tangible.

Este trabajo propone un simulador 3D de generación de contenido 3D sobre una pantalla tridimensional de bajo costo. El simulador integra un mecanismo de

interacción natural basado en gestos realizados con las manos que permiten al usuario interactuar sobre el contenido proyectado en la pantalla. Este contenido se compone de un conjunto de objetos geométricos y las posibles interacciones son operaciones de movimiento, escalamiento, y rotación de estos objetos.

(6)

1. Introducción

La visualización de la información siempre ha sido un motivador importante para la tecnología. A través de la historia esta necesidad ha estado detrás de grandes inventos como la televisión y las pantallas que muestran una profundidad tridimensional. Por otro lado, la interacción con estos dispositivos ha dado el acceso a un mejor aprovechamiento de los recursos, dispositivos como pantallas táctiles dan muestra de eso. Así mismo, la mezcla de tecnologías de interacción y visualización se enfoca en permitir manejar grandes cantidades de información al instante, y con las herramientas adecuadas para que el usuario pueda interactuar de una manera amigable sobre la misma.

Hoy en día existen desarrollos de dispositivos que nos permiten lo que ha sido llamado como “interacción tangible”. La interacción tangible es un tipo de interacción cuyo objetivo es desarrollar y controlar “sistemas interactivos en los que objetos convencionales son, al mismo tiempo, control y representación física de la información digital” (Baldassarri, 2014, p. 3). Este proyecto tiene como objetivo simular la visualización e interacción de una interfaz tangible.

Objetivo General

Simular un dispositivo que proyecta objetos tridimensionales y permitir la interacción gestual de las manos con estos objetos haciendo uso del dispositivo Leap Motion.

Objetivo Específicos

1. Caracterizar los gestos de las manos para lograr la rotación, el desplazamiento, y el cambio de tamaño de los objetos proyectados.

2. Generar la visualización 3D que representa/aproxima la proyección en el dispositivo físico (simulación).

3. Comparar la visualización 3D del objeto modelado con su visualización 3D aproximada.

4. Trabajar con modelos geométricos tipo: cubo/caja, cilindro elíptico, pirámides, modelo 2D con barrido y al menos un objeto definido por una función continua. 5. Probar el sistema con usuarios para asegurar una interacción amigable con el

usuario.

Este documento consta de 6 capítulos. En el primero se encuentran los objetivos tanto el general como los específicos, luego está la descripción de la problemática que guía este proyecto. A continuación, están las tecnologías que se usaron en la solución propuesta en este proyecto, posteriormente se ubica el estado del arte con proyectos relacionados a la problemática que ya han sido desarrollados. En este punto, se encuentra la metodología, el diseño, y la implementación que describen el proceso de diseño del proyecto y los detalles de implementación de la propuesta que se desarrolló. Luego, están los resultados obtenidos a través de dicha implementación, y las pruebas realizadas para evidenciar las características del desarrollo. A continuación

(7)

se habla de las conclusiones y el trabajo futuro que se consideró pertinente dado el alcance actual del proyecto. Finalmente, se describen las referencias bibliográficas que se usaron como apoyo para la construcción y el desarrollo de todo el proyecto.

(8)

2. Problemática

La visualización de la información necesita borrar los límites de las pantallas planas. Esto lo está logrando con ilusiones tridimensionales sobre pantallas de dos dimensiones. Sin embargo, este tipo de tecnología presenta ciertos limitantes atados al uso de una pantalla de dos dimensiones. Por lo tanto, es necesario hacer uso de las tecnologías de visualización tridimensional emergentes para mitigar las necesidades de los usuarios.

La interacción con la información que es mostrada a los usuarios en cualquier dispositivo ha demostrado ser uno de los motivadores tecnológicos más importantes. Los usuarios de hoy en día experimentan interacciones táctiles con una gran variedad de dispositivos. Por lo tanto, una nueva tecnología de visualización debe venir acompañada de un sistema interactivo amigable que permita a los usuarios aprovechar las posibilidades de la misma al máximo.

La tecnología de interacción tangible presenta una serie de componentes básicos como el control y representación tangible los cuales son presentados al usuario de manera física, y por otro lado la información digital y representación intangible quienes son transparentes al usuario. Un esquema de esto se puede apreciar en la Figura 1. El proyecto que se presenta en este documento propone un simulador de una interfaz tangible y poder interactuar de forma natural con su contenido. Sin embargo se centra en el desarrollo del software y simula el hardware ya que el desarrollo del hardware no está dentro del alcance del proyecto.

Teniendo en cuenta la problemática planteada es importante tener en cuenta las características del dispositivo simulado, tales como que debe estar en capacidad de proyectar objetos en tres dimensiones haciendo uso de un medio tangible, lo cual permite dejar atrás las ilusiones ópticas y abre el camino a proyecciones realmente tridimensionales. El contenido 3D que es posible proyectar se encuentra atado a las características intrínsecas del dispositivo, tales como la resolución, el tiempo de respuesta y la versatilidad del mismo. El mecanismo de interacción del usuario debe presentar de igual manera una experiencia similar a la interacción que se tendría con un objeto tangible, esto se logra a través de un mecanismo de interacción natural.

(9)

Figura 1. Esquema de Interacción Usuario/Interfaz Tangible. Fuente: Baldasarri, S. (2014). Paradigmas Avanzados:

Interacción Tangible. Recuperado de http://webdiis.unizar.es/asignaturas/DCU/wp-content/uploads/2015/02/DCU_Tangible_2014-15.pdf el 24 de Agosto de 2015.

2.1 Descripción de Tecnologías a utilizar

El dispositivo Leap Motion es un dispositivo que se encarga de seguir la posición de las manos y los dedos. Por otro lado presenta compatibilidad con diversas tecnologías que proporcionan un ambiente gráfico, tales como Unreal, Unity, y Scratch. Esta compatibilidad se hace perfectamente transparente a través del SDK de Leap Motion. De esta manera el lenguaje y la dinámica de programación son determinados por el motor gráfico a utilizar.

Las características más importantes del SDK son las facilidades para el reconocimiento de gestos ya que entre sus funciones está el reconocimiento de la gran mayoría de los gestos que requiere el software para su funcionamiento. Estas facilidades incluyen gestos para el desplazamiento, selección de objetos y distancia de las manos con respecto a algún punto específico. Por otro lado, aunque existen funciones como hacer más grande un objeto o extenderlo las cuales no están soportadas por algún gesto proporcionado por el SDK, otras funcionalidades como conocer la posición de los dedos hacen que la implementación de estos gestos sea posible.

Debido a la compatibilidad y a la experiencia de trabajo con el software Unity se hará uso del mismo como motor gráfico. Unity presenta una gran flexibilidad en cuanto a la

(10)

creación de interfaces gráficas y su dinámica desacoplada y lenguaje de programación (C#) permiten implementar diferentes módulos para verificar su funcionamiento sin necesidad de afectar otros módulos, lo cual es de vital importancia para cada iteración del proyecto. Por último, Unity se acopla muy fácilmente con los dispositivos de realidad virtual como el Oculus lo cual ayudaría a la extensibilidad del proyecto y del software si así se quiere.

(11)

3. Estado del Arte

A continuación se describen trabajos anteriores relacionados con el tema del proyecto realizado.

MisTable [2] (Sokol, 2014).

• Descripción: Un equipo en la universidad de Bristol produjo un dispositivo que

es capaz de proyectar imágenes en una cortina de vapor con interactividad táctil.

El profesor de interacción humano-computador, Sriram Subramania, lideró el proyecto MisTable junto con el doctor Diego Martínez Plasencia en la unidad de interacción y gráficos de la Universidad de Bristol (BIG) por sus siglas en inglés.

● Cómo se logra:

Este dispositivo usa una pareja de ventiladores para desplegar una serie de cortinas de humo compuestas por una mezcla de glicerina y vapor de agua, estas cortinas son usadas como pantallas.

Las pantallas reconocen gestos táctiles de tal manera que los usuarios son capaces de manipular las imágenes que son proyectadas y además dejar de ser proyectadas en la pantalla actual para ser visualizadas en otra de las pantallas de humo o en la pantalla LCD que tiene el dispositivo.

● Usos y problemas resueltos:

El equipo no apuntó a producir una imagen en 3D sino a superar las limitaciones de las pantallas existentes, sin embargo la naturaleza flotante de la imagen producida por MisTable genera un pseudo efecto 3D. Por otro lado, estas pantallas no mojan las manos al atravesarlas ya que la mezcla produce un vapor seco.

(12)

Figura 2. Dispositivo MisTable.

Fuente: Sokol, Z. (2014). MisTable Lets You Manipulate Floating Projections Made Of Mist. Recuperado de

http://thecreatorsproject.vice.com/blog/mistable-lets-you-manipulate-floating-projections-made-of-mist el 24 de Agosto de 2015.

Figura 3. Ilustración de componentes del dispositivo MisTable. Fuente: Sokol, Z. (2014). MisTable Lets You Manipulate Floating Projections Made Of Mist. Recuperado de

(13)

Figura 4. Proyección del dispositivo MisTable.

Fuente: Sokol, Z. (2014). MisTable Lets You Manipulate Floating Projections Made Of Mist. Recuperado de

http://thecreatorsproject.vice.com/blog/mistable-lets-you-manipulate-floating-projections-made-of-mist el 24 de Agosto de 2015.

Tangible CityScape [3] (Tang, Sekikawa, Leithinger, Follmer& Ishii, 2013)

● Descripción:

Proyecto desarrollado por el grupo de media tangible del MIT se propuso un sistema compuesto de una pantalla de actuadores 2.5D, un proyector de imágenes digitales, y un detector de gestos. El objetivo del proyecto es ayudar al proceso de urbanización tangibilizando la información abstracta de los planos y construcciones existentes en un mismo diagrama interactivo.

● Cómo se logra:

El dispositivo toma la información de la posición y la altura de los edificios a visualizar y la traduce a un modelo dinámico a escala emulando la altura con los actuadores y el límite de las edificaciones con la proyección. Sin embargo éste dispositivo muestra un cuadrante de un plano más grande determinado por el seguimiento gestual de las manos del usuario.

● Usos y problemas resueltos:

En el proceso de urbanización es importante determinar las medidas, proporciones y relaciones entre las diferentes edificaciones debido a las normas del ordenamiento territorial. Por otro lado el Proyecto ayuda a visualizar las dependencias y conflictos entre sistemas urbanos muy complicados. Actualmente las diversas herramientas de diseño que soportan diferentes partes del proceso, debido a la brecha existente entre la representación física y digital de la información, lo hacen ineficiente. Por el contrario Tangible CityScape permite manipular las dos representaciones y además comentar los diseños con los colaboradores en tiempo real y de manera remota.

(14)

Figura 5. Dispositivo CityScape.

Fuente: Tang, S., Sekikawa, Y., Leithinger, D., Follmer, S., Ishii, H. (2013). Tangible CityScape. Recuperado de http://tangible.media.mit.edu/project/tangible-cityscape/ el 24 de Agosto de 2015.

Figura 6. Ilustración de componentes del dispositivo Tangible CityScape. Fuente: Leithinger, D., Follmer, S., Olwal, A., Hogge, A., Ishii, H. (2013). inform. Recuperado de

http://tangible.media.mit.edu/project/inform/ el 24 de Agosto de 2015.

Aerial 3D [4] (TechnoCrazed, 2014).

● Descripción:

El proyecto tiene como objetivo superar los problemas vistos en otros dispositivos que dibujan imágenes pseudo 3D en planos 2D, tales como la

(15)

limitación del campo de visión, y la incomodidad fisiológica que produce la poca familiaridad con las imágenes virtuales. Para lograr superar estos problemas el equipo desarrolló lo que a su concepto era la verdadera pantalla en 3D. Éste dispositivo puede producir puntos de luz en el aire creando así imágenes tridimensionales en éste medio.

● Cómo se logra:

El dispositivo hace uso del fenómeno de emisión de plasma cerca del punto focal de concentración de luz de un rayo láser. Controlando las coordenadas de los puntos focales es posible formar figuras construidas a partir de arreglos de puntos.

● Usos y problemas resueltos:

El objetivo de la investigación es ayudar con las operaciones pos desastre natural, de manera tal que se puedan proyectar avisos en el aire que indiquen a la gente dónde puede encontrar refugio, alimento y centros de atención médica. Por lo tanto, es importante que las proyecciones se puedan hacer sin alterar el medio de proyección, es decir que se visualicen en el aire común.

Figura 7. Ilustración de rayos láser.

Fuente: TechnoCrazed. (2014). Aerial 3D: A Revolutionary 3D Projection System For Advertisements In The Air. Recuperado de http://www.technocrazed.com/aerial-3d-a-revolutionary-3d-projection-system-for-advertisements-in-the-air el 24 de Agosto de 2015.

(16)

Figura 8. Proyecciones del dispositivo Aerial Burton.

Fuente: TechnoCrazed. (2014). Aerial 3D: A Revolutionary 3D Projection System For Advertisements In The Air. Recuperado de http://www.technocrazed.com/aerial-3d-a-revolutionary-3d-projection-system-for-advertisements-in-the-air el 24 de Agosto de 2015.

(17)

4. Metodología, Diseño e Implementación de la Solución

Inicialmente se trabajó un diseño de componentes del sistema. Resultado del diseño se desarrollaron las componentes de software (interacción gestual y visualización tridimensional) y posterior integración con diferentes tecnologías. Además se tuvieron en cuenta pruebas de usuario para evaluar la calidad, tanto de la interacción como de la visualización. Por lo tanto se desarrolló cada componente por separado para verificar su correcto funcionamiento y el cumplimiento de los requerimientos funcionales asociados a cada uno, y evaluar su calidad desde el punto de vista del usuario. Por último se realizó el trabajo de integración de las componentes desarrolladas y las respectivas pruebas.

4.1 Diseño de funcionamiento del sistema

El diseño de funcionamiento del sistema está compuesto por cinco componentes: Interacción estática, interacción dinámica, modelo del mundo, visualización, y control de plataforma experimental. Este diseño se ilustra en la Figura 9. A continuación de describen las funciones de las componentes así como los módulos que las conforman.

Figura 9. Diseño modular de software.

Módulos de interacción dinámica

Esta componente se encarga reconocer los gestos ejecutados por el usuario a través de la interfaz natural con el fin de ejecutar una acción en el simulador. La componente está compuesta por los siguientes módulos.

Caracterización de Gestos: Este módulo debe comparar la entrada con una base de datos de los gestos que tienen sentido en la aplicación y que han sido determinados previamente. La base de datos de gestos debe tener en cuenta la estructura de datos definida para conocer qué características se almacenan allí y así mismo definir los

(18)

gestos en términos de estas características. Por último, este módulo debe reconocer si algún gesto de la base de datos ha sido ejecutado por el usuario e identificarlo. Así mismo, debe definir una nueva estructura de datos en donde se almacenaran los gestos ejecutados junto con las características interesantes del mismo. Los gestos reconocidos se describen a continuación:

Mano derecha

Figura 10. Gestos de desplazamiento

Mano Izquierda

Figura 11. Gestos de escalamiento

Mano a la izquierda Mano a la derecha

Mano hacia atrás

Mano hacia adelante

Mano hacia arriba

Mano hacia abajo

Mano a la izquierda Mano a la derecha

Mano hacia adelante

(19)

Figura 12. Gestos de rotación

Interpretación: Este módulo debe conocer cómo se estructuran los datos de los gestos ejecutados por el usuario, producto del módulo de caracterización de gestos. A partir de cada gesto reconocido y de sus características interesantes, debe ejecutar una acción en el software. Para esto, se debe conocer el significado de cada acción y sus parámetros, los cuales deberían ser equivalentes a las características interesantes de cada gesto. A continuación se menciona la equivalencia entre gestos reconocidos y las acciones ejecutadas por el simulador:

Mano derecha

• Mano hacia atrás: Mover objeto hacia atrás.

• Mano hacia adelante: Mover objeto hacia adelante. • Mano a la derecha: Mover objeto a la derecha. • Mano a la izquierda: Mover objeto a la izquierda. • Mano arriba: Pasar a vista continua.

• Mano abajo: Pasar a vista discreta.

Mano izquierda

• Mano hacia atrás: Disminuir largo del objeto. • Mano hacia adelante: Aumentar largo del objeto. • Mano a la derecha: Aumentar ancho del objeto. • Mano a la izquierda: Disminuir ancho del objeto. • Mano arriba: Aumentar alto del objeto.

• Mano abajo: Disminuir alto del objeto.

• Rotar mano con las manecillas del reloj: Rotar objeto con las manecillas del

reloj.

• Rotar mano contra las manecillas del reloj: Rotar objeto contra las manecillas

del reloj.

Módulos de interacción estática

Esta componente se encarga de modelar las características del dispositivo a simular. La componente está compuesta por el siguiente módulo. Adquisición de parámetros: Captura los datos del dispositivo a simular. Estos datos son: la resolución del dispositivo a lo ancho y a lo largo, y el radio de los chorros de agua.

Rotar mano con las manecillas del reloj

Rotar mano contra las manecillas del reloj

(20)

Módulos del mundo

Modelos continuos: Este módulo se encarga de almacenar todos modelos geométricos que maneja el software. Estos modelos son: caja (paralelepípedo), tetraedro, pirámide, cilindro, cilindro elíptico, cono, cono elíptico, paraboloide, paraboloide elíptico, toro, y automóvil. Por otro lado, debe adquirir la selección del usuario y los parámetros que son importantes para ese modelo, los cuales también son seleccionados por el usuario. Los parámetros para cada modelo siempre son largo, ancho y alto. Por último debe almacenar la selección del modelo y sus dimensiones ingresados como parámetros en una estructura de datos definida.

Interfaz tangible continua: se encarga de soportar los objetos continuos de manera que puede enviar los datos de dimensiones, posición, y rotación de un objeto. Por otro lado, tiene los parámetros dispositivo a simular para generar un acuerdo entre el dispositivo discreto y esta plataforma para objetos continuos.

Interfaz tangible discreta: Este módulo se encarga de capturar los parámetros del dispositivo a simular, los cuales son definidos por el usuario. Estos parámetros son usados para determinar la discretización del modelo continuo producto del módulo anterior. Por último, debe almacenar la discretización y las características interesantes del dispositivo a simular en una estructura de datos definida.

Módulos de visualización

Esta componente tiene como función almacenar y graficar los modelos geométricos, así como también graficar el dispositivo simulado. Por otro lado, se encarga de modificar las características de los modelos geométricos con respecto a las acciones ejecutadas por el usuario. La componente está conformada por los módulos descritos a continuación. Visualización continua: A partir de los datos del módulo de interfaz tangible continua, pinta el modelo continuo en la interfaz de usuario y se encarga de actualizar esta vista conforme cambien los parámetros pasados por este módulo.

Visualización discreta: A partir de los datos del módulo de interfaz tangible discreta, pinta el modelo discreto en la interfaz de usuario según las características del dispositivo a simular y se encarga de actualizar esta vista conforme cambien los parámetros pasados por este módulo.

Control de plataforma experimental: A partir de los datos producidos en el módulo de interfaz tangible discreta, debe capturar el estado de cada uno de los actuadores del dispositivo simulado, a partir del estado de cada uno de estos, se encarga de enviar una señal física, que interpretará cada uno de los actuadores físicos para determinar el estado que debería presentar.

(21)

Para implementar la solución de software se ha hecho uso de Unity el cual es un motor de videojuegos que tiene una versión gratuita lo suficientemente completa para cumplir los requerimientos del proyecto. Esta herramienta permite la implementación de los módulos del mundo, y visualización ya que la interfaz gráfica Unity permite crear una interfaz gráfica de forma sencilla e incorporar los scripts que modelan el comportamiento de cada objeto de la interfaz. El dispositivo Leap Motion se encarga de la adquisición de las posiciones de las manos, y contiene librerías para Unity con las cuales es posible identificar los gestos cuando son ejecutados por el usuario.

Primero se debe construir un menú inicial el cual debe obtener del usuario los datos necesarios para llevar a cabo la simulación de la geometría especificada por el usuario. Estos datos son: las medidas de ancho y de largo del dispositivo, la resolución de los actuadores de agua a lo ancho y a lo largo del dispositivo, el grosor del chorro de agua, la geometría que se quiere representar en la simulación, y las medidas iniciales de esta geometría (ancho, largo, alto). Para implementar el menú, se deben usar los objetos de interfaz que ofrece Unity de tal manera que se muestren los campos donde deben ser ingresados los datos con su respectiva descripción. Haciendo uso de un script escrito en C# se recolectan los datos de cada campo ingresados por el usuario.

Luego de conocer las especificaciones del usuario se debe cambiar de la vista del menú a una vista inicial predeterminada. En este caso se eligió la vista continua de la geometría. Para construir esta vista se creó un plano que debe tener las dimensiones especificadas por el usuario (ancho y largo del dispositivo), sobre este plano se debe visualizar la geometría descrita por el usuario, todas las geometrías deben estar prefabricadas en Unity (ya sean nativas o importadas) y con dimensiones unitarias. Por último se asignan las medidas correspondientes de la figura ingresadas por el usuario de largo ancho y alto a la primitiva que se está visualizando. Para crear la vista predeterminada, se debe crear un objeto de tipo plano y se debe crear los prototipos de cada objeto que se quiere visualizar. Unity cuenta con unos objetos predeterminados que coinciden con algunos de los objetos que se plantearon en el proyecto. Sin embargo, para aquellos que no existían previamente en los prototipos, se utilizó la herramienta Blender, la cual permite dibujar nuevos objetos y exportarlos a Unity para añadirlos a la carpeta de prototipos. Cuando se obtienen los parámetros ingresados por el usuario, se debe invocar un prototipo sobre el plano y asignarle con un script escrito en C# las dimensiones recolectadas por el script del menú inicial.

Para crear la vista discretizada de la geometría a visualizar se debe conocer el estado de cada uno de los actuadores, este estado está representado por una altura, esta altura debe ser equivalente a la altura de la geometría continua en el punto específico donde se encuentra el actuador. Para lograr esto, se debe crear un objeto de tipo plano, el cual es prototipo de Unity con las mismas características que el plano de la vista continua, sin embargo este plano va a tener un objeto que representa a un actuador de agua, en este caso se usaron cilindros, los cilindros son prototipos incluidos por defecto en Unity. Se tendrá un cilindro por cada actuador descrito por el usuario, es decir se debe implementar la instanciación de una matriz de cilindros uniformemente distribuidos con las medidas de resolución a lo ancho y a lo largo del plano. Esto se logra haciendo uso de un script escrito en C#, el cual hace un recorrido

(22)

por el plano invocando un objeto de tipo cilindro correspondiendo con la resolución que describió el usuario. Así mismo cada cilindro debe tener el grosor del chorro especificado por el usuario. El grosor es asignado por el script modificando las características de cada objeto de tipo cilindro instanciado en el plano. Ahora bien, para generar la correspondencia entre la vista continua y la especificada existen diferentes alternativas.

La primera de las alternativas consiste en hacer uso del mecanismo de raycast que ofrece Unity. Para esto se debe definir un rayo por cada uno de los cilindros que representan los actuadores. Cada rayo se genera en las coordenadas equivalentes a las del cilindro pero en el plano continuo, sin embargo no se define desde el plano sino hacia el plano, es decir que cada rayo se genera en una altura mayor que la que pueda alcanzar la geometría y se le asigna la dirección hacia el plano de tal manera que el rayo sea normal al plano en el punto del actuador. De esta manera se puede medir la altura que tiene la geometría en ese punto, haciendo uso del punto en el que colisiona el rayo con la geometría. Esta altura medida es la que se le asigna al cilindro, y debe actualizarse constantemente así como generarse el rayo para poder visualizar los cambios de la vista continua en la vista discreta. Sin embargo, esta primera alternativa resulta ser muy costosa en tiempo de ejecución debido a que se están generando rayos en todo momento y por cada actuador.

Figura 13. Mecanismo Raycast.

En la Figura 13 se ilustran los rayos que son lanzados constantemente al plano. En particular, existen dos rayos que colisionan con la figura. Al colisionar, conocen las coordenadas X, Y, y Z de la colisión y de esta manera se conoce la altura del punto de colisión y por lo tanto la altura de la figura en ese punto.

(23)

La segunda alternativa parte de la primera y optimiza el proceso de raycast. Para evitar que se generen rayos en los puntos del plano en donde existan actuadores, pero la figura no esté presente, se hace uso de esferas que reaccionan a la colisión con la geometría representada en el plano continuo. Cada esfera tiene un tamaño mínimo, y se coloca en el plano de la vista continua correspondiente a cada punto donde existe un actuador en el plano discreto. Para hacer la implementación de las esferas se hace uso de un script escrito en C#, el cual recorre el plano de la vista continua e instancia un objeto de tipo esfera prototipo de Unity y activa la cualidad de colisionador. De esta manera, cuando la geometría colisione con alguna de las esferas, este objeto ejecutará un script que activará el mecanismo de actualización de los cilindros por medio de raycaster y se mantendrá en funcionamiento sólo mientras la geometría esté en contacto con la esfera. Sin embargo, aún se puede hacer una optimización a este proceso y es fortalecer la condición de activación del raycast. Para esto, no sólo es suficiente que la geometría esté en colisión con la esfera sino que también la geometría esté siendo trasladada, rotada, o escalada. Por lo tanto el script que se ejecuta mientras la esfera esté en colisión con la geometría, debe preguntarle a la geometría si su característica de posición o dimensión está cambiando para continuar ejecutándose. De esta manera, se asegura que sólo se haga raycast cuando vaya a haber cambio de estado en la geometría y por lo tanto deba haber cambio de estado de los cilindros.

Figura 14. Mecanismo de esferas de colisión.

En la Figura 14 se ilustran las esferas que están dispersas por todo el plano. Así mismo, se observan las esferas que están en colisión con la figura, y como se encuentran en colisión, los rayos solo son lanzados a la posición de estas y no en todo el campo como la anterior alternativa.

(24)

Existe una tercera alternativa que no hace uso de raycast para la actualización del estado de los cilindros. Esta alternativa consiste en hacer uso de las funciones de superficie que pueden tener las geometrías. De esta manera teniendo la función, sólo se debe proporcionar el punto de coordenadas x, y donde se encuentra el actuador y la función devuelve el valor de la altura que tiene la geometría en ese punto, y este es el valor que se usará para actualizar la altura del cilindro. Sin embargo, para poder implementar esta alternativa es necesario que los comandos que modifican el estado de la geometría, modifiquen la función de la misma, de tal manera que la función efectivamente represente el estado del objeto en este momento. Por otro lado, existe un problema con esta alternativa y es cuando los objetos a representar no tengan una ecuación de superficie que los represente o esta sea muy complicada, ya que debería crearse la ecuación a partir del mapeo de la geometría, lo cual no es trivial. Por esta razón, se usó la segunda alternativa para la implementación de la solución.

Para ilustrar esta alternativa, se considera la semiesfera cuya figura se muestra a continuación:

Figura 15. Mecanismo de funciones de superficie.

La ecuación general que modela una esfera se muestra a continuación:

(𝑥−𝑎)!+(𝑦𝑏)!+(𝑧𝑐)! =𝑟!

Donde r es el radio de la esfera y a, b, y c son las coordenadas del centro de la misma (conocidos). Cada uno de los actuadores tiene una posición sobre el plano definida por unas coordenadas x, y. De esta manera, para conocer la altura de la esfera se insertan los valores mencionados anteriormente y se haya el valor de z.

(25)

El siguiente paso de implementación tiene que ver con los gestos que controlan las geometrías. Para lograr el reconocimiento de gestos se hizo uso del dispositivo Leap Motion el cual es capaz de reconocer las posiciones de las manos y los dedos y distinguir entre mano derecha y mano izquierda. Por otro lado, tiene una librería que ofrece compatibilidad con Unity. Así que el primer paso es descargar la librería con los recursos que permite usar el Leap Motion junto con Unity. Luego de esto, se van a definir los gestos que controlan cada una de las tareas propuestas de traslación rotación y escalamiento. En este caso se definió que la mano derecha controlara la traslación, y que la mano izquierda contralara el escalamiento y la rotación. Para lograr esto, la librería permite conocer la posición de la mano en tres dimensiones, así que se hizo uso de cada una de las dimensiones para controlar un eje de transformación diferente. Primero se pregunta si la mano es izquierda o derecha. Si es derecha, se especifica que si la mano tiene una posición en el eje x mayor a cierto número, la geometría debería moverse hacia la derecha de la pantalla, y si la mano tiene una posición en x menor a cierto número, la geometría debería moverse hacia la derecha de la pantalla. Por otro lado, si la mano tiene una posición en el eje y mayor a cierto número de unidades, la geometría debería moverse hacia atrás en el espacio 3D, y si es mayor a cierto número debería moverse hacia adelante. Además de esto, si es la mano izquierda, se define que si la posición de la mano tiene una posición en el eje x mayor a cierto número, la figura aumente su dimensión a lo ancho y si es menor a cierto número disminuya su dimensión de ancho. Por otro lado, si tiene una posición en el eje y mayor a cierto número, aumente su dimensión de largo, y si es menor a cierto número, disminuya su dimensión de largo. Además de esto, se define que si la mano tiene una posición en el eje z mayor a cierto número, aumente la dimensión de la figura en el alto, y si fuere menor a cierto número, disminuya la dimensión a lo alto. Por último, haciendo uso de la lista de gestos que reconoce el Leap Motion junto con la librería se define que al reconocer el gesto de rotación de dedo en el sentido de las manecillas del reloj, la geometría rote en ese sentido, y si la geometría es en contra de las manecillas del reloj, la geometría rote de esa manera. Cabe aclarar que es importante dejar un espacio entre las posiciones de las manos que hacen que el software reaccione, de tal manera que exista una zona neutra en donde la mano esté siendo reconocida por el Leap Motion pero que no se esté ejecutando ningún comando sobre la geometría, esto se hace para darle mayor control al usuario. El dispositivo Leap Motion tiene una compatibilidad de “Plug and play” con Unity. Por esta razón, después de tener las librerías incorporadas al proyecto, en el script escrito en C# que se quiere implementar el reconocimiento de gestos, se invoca un objeto LeapMotion y se pregunta la posición de la mano izquierda y la mano derecha. Esta invocación retorna una posición con coordenadas de tipo double en X, Y, y Z. Luego de esto se compara cada coordenada con una serie de coordenadas obtenidas empíricamente para conocer si la mano se encuentra en un octante determinado y por lo tanto estaría realizando un gesto. A partir de esto, dentro de cada condicional se invoca la característica de la geometría que debe manipular ese gesto y se ejecuta el cambio correspondiente. El procedimiento para reconocer la rotación de la mano es similar, sin embargo en vez de preguntar por las coordenadas de la mano se pregunta al objeto LeapMotion si se está realizando el gesto de rotación o no y si se está ejecutando con el sentido de las manecillas del reloj o contra el sentido de las

(26)

manecillas del reloj, se procede a invocar la característica de rotación de la geometría para ejecutar el cambio en su rotación dependiendo del sentido del gesto.

El último paso es definir las transiciones entre escenarios. Para esto se requiere que tanto el plano que corresponde a la vista continua como al plano que corresponde a la vista discreta tengan una cámara independiente que se encargue de mostrar el contenido de cada una de las vistas de manera que se pueda apreciar el proceso de las transformaciones, o en su defecto colocar varias cámaras orientadas al mismo plano para mostrar las diferentes perspectivas. Por otro lado, debe definirse el comando para la transición entre una vista y otra, este comando se encargará de activar todas las cámaras correspondientes a una vista, y desactivar todas las cámaras correspondientes a la otra vista. En este caso, se hizo uso del eje libre de la mano derecha (eje z) y se definió que si la mano derecha tenía una posición en el eje z mayor a cierto número, la vista debería ser la vista continua, y si era menor a cierto número, la vista debería ser la vista discreta. Por último, es importante dejar un comando para reiniciar la simulación y volver al menú principal, en este caso debido a la falta de gestos disponibles se usó alguna tecla del teclado.

(27)

5. Resultados del proyecto y pruebas

A continuación un pantallazo de la interfaz gráfica inicial del simulador (donde se muestran los modelos geométricos posibles y los parámetros del dispositivo físico).

Figura 16. Menú inicial.

A continuación se pueden observar los modelos continuos y de simulación discreta generados por el software. Para cada una de las figuras a continuación se definen como parámetros por el usuario un ancho, un largo, y un alto; estas aparecen inicialmente en origen del plano. Los modelos discretizados, por otra parte, son una simulación de un dispositivo físico que tiene como parámetros: las dimensiones del dispositivo (tamaño en X y tamaño en Y) estas dimensiones tienen una relación de 10 a 1 con respecto a las unidades del objeto. La resolución del mismo (resolución en X y resolución en Y), lo que significa la cantidad de actuadores en cada fila del eje X así como los del eje Y del plano. El radio de cada uno de los chorros de agua (grosor), el cual tiene unidades equivalentes a las del objeto.

(28)

Figura 18. Caja (Paralelepípedo) discreto (Ancho: 1, Largo: 1, Alto: 1)

(29)

Figura 20. Ortoedro discreto (Ancho: 2, Largo: 1, Alto: 1).

(30)

Figura 22. Tetraedro discreto (Ancho: 2, Largo: 2, Alto: 2).

(31)

Figura 24. Pirámide discreta (Ancho: 2, Largo: 2, Alto: 2).

(32)

Figura 26. Cilindro discreto (Ancho: 2, Largo: 2, Alto: 1).

(33)

Figura 28. Cilindro elíptico discreto (Ancho: 2, Largo: 4, Alto: 1).

(34)

Figura 30. Cono discreto (Ancho: 2, Largo: 2, Alto: 1).

(35)

Figura 32. Cono elíptico discreto (Ancho: 1, Largo: 2, Alto: 1).

(36)

Figura 34. Paraboloide discreto (Ancho: 2, Largo: 2, Alto: 1).

(37)

Figura 36. Paraboloide elíptico discreto (Ancho: 1, Largo: 2, Alto: 1).

(38)

Figura 38. Toro discreto (Ancho: 2.5, Largo: 2.5, Alto: 1).

(39)

Figura 40. Automóvil a partir de modelos geométricos discretos (Ancho: 2, Largo: 2, Alto: 1).

Como resultado del mapeo de los gestos que controlan la rotación, traslación y escalamiento de las geometrías, se generó la siguiente ilustración que no sólo muestra los resultados de los comandos que tienen sentido dentro de la solución de software sino que también busca ser un instructivo para que el usuario conozca cómo usar estos comandos para controlar la simulación.

Mano derecha

Figura 41. Gestos de cambio de vista Vista modelo continuo

(40)

Figura 42. Gestos de desplazamiento en el eje X, y Y

Mano izquierda

Figura 43. Gestos de escalamiento en el eje X, y Y

Figura 44. Gestos de escalamiento en el eje Z

Figura 45. Gesto de rotación con las manecillas del reloj

Disminuir ancho del objeto Aumentar ancho del objeto Aumentar largo del objeto

Disminuir largo del objeto

Disminuir ancho del objeto Aumentar ancho del objeto Aumentar largo del objeto

Disminuir largo del objeto

Aumentar alto del objeto

Disminuir alto del objeto

Rotar objeto con las manecillas del reloj

(41)

Figura 46. Gesto de rotación contra las manecillas del reloj

5.1 Pruebas de usuario

A continuación se puede apreciar el formato que apoyó las pruebas de usuario para validar el prototipo:

Figura 47. Formato de pruebas de usuario.

A partir de diez pruebas con usuarios se logró evaluar cada uno de los anteriores aspectos de 1 a 5 siendo 1 la peor calificación y 5 la mejor. Los resultados se muestran a continuación.

Rotar objeto contra las manecillas del reloj

(42)

Figura 48. Resultados pruebas de usuario.

Como se puede observar en el gráfico, los cuatro aspectos con menor calificación tienen que ver con la creación del dispositivo y la rotación del modelo. Esto puede deberse a que los parámetros que definen al dispositivo deben tener una relación apropiada que es dificil de ver si no se tiene un dispositivo contruido, por ejemplo el grosor de los chorritos debe ser lo suficientemente pequeño para que quepan en el dispositivo con la resolución determinada. Por otro lado, la rotación es un gesto que el Leap Motion tiene problemas en reconocer ya sea por el tiempo que se demora en hacerlo o la precisión al hacerlo.

Así mismo se puede apreciar que los mejores puntajes los obtuvo la calidad de la transformación con modelo de complejidad alta, la comprensión de la transformación del modelo continuo a discreto y el escalamiento. Primero, es interesante notar que los modelos de complejidad alta tienen formas que hacen que el modelo discreto reaccione de una manera más dinámica. Por otro lado, el hecho de discretizar un objeto parece ser bastante intuitivo y no genera mayor dificultad para los usuarios darse cuenta de cómo ocurre esto. Por ultimo, la operación de escalamiento en los modelos continuos es casi como moldear el objeto como el usuario quiera y esto parecía atractivo para la mayoría de los usuarios que realizaron la prueba.

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

(43)

6. Conclusiones y Trabajos Futuros

El desarrollo principal logrado en el proyecto cumple con los objetivos planteados en el mismo. El dispositivo simulado se integró con el dispositivo Leap Motion para obtener una interacción natural entre el dispositivo y el usuario a través de los gestos de las manos. Con la mano derecha se controla la posición del objeto, y con la mano izquierda se controla el cambio de dimensiones y la rotación del mismo. Es posible definir los parámetros del dispositivo de ancho, largo, y su resolución en estas dos dimensiones así como el grosor de los chorros de agua para simular correctamente el dispositivo real. Por otro lado, el desarrollo está en capacidad de mostrar la vista 3D del objeto modelado así como su visualización 3D aproximada. Los modelos geométricos que maneja el desarrollo incluyen las figuras de tipo cubo/caja, cilindro elíptico, pirámides, un modelo 2D de un automóvil con barrido y la figura de tipo toro el cual está definido por una función continua. Por último, se probó el sistema con diferentes usuarios, los cuales aseguraron que existen interacciones tales como el movimiento y escalamiento del objeto que son muy amigables, así como interacciones que necesitan mejorar tales como la parametrización del dispositivo y la rotación del objeto.

A partir de la solución de software generada se pueden observar las limitaciones que existen entre la interacción natural y la tecnología usada, las cuales son uno de los problemas más importantes trabajados en el campo de la investigación humano computador. Estas limitantes tienen que ver con la cantidad de gestos que se pueden reconocer a partir de los datos de un dispositivo de reconocimiento. En primer lugar se encuentra que la precisión del dispositivo así como la capacidad de diferenciar diferentes parámetros de una misma interacción, en específico a este caso, la capacidad de diferenciar cada dedo y de seguir su movimiento con exactitud, son las capacidades más importantes que se deben buscar a la hora de seleccionar un dispositivo de adquisición. Esto debido a que entre más diferencias se puedan encontrar entre alguna posición específica de la mano y alguna otra posición haciendo uso de cada vez más parámetros es lo que abre la posibilidad de ampliar el abanico de gestos a que se pueden usar como comandos que tienen sentido para el software.

En segundo lugar, es importante tener en cuenta las librerías que acompañan a los dispositivos de adquisición ya que una librería siempre es una buena opción para hacer más liviana la carga que el desarrollo o la implementación pueda conllevar. Por otro lado, las librerías siempre abren los ojos a nuevas posibilidades de interacción ya que los desarrolladores de estas ayudas tienden a conocer mejor las capacidades del dispositivo para el cual están desarrollando y son capaces de generar en mayor o menor medida la cantidad de gestos que se pueden reconocer y por lo tanto la cantidad de funciones diferentes que puede ejecutar el usuario de manera natural. Sin embargo, es importante notar que existan no sólo funciones interesantes en la librería sino que también estas funciones se desempeñen de manera adecuada ya que si se ofrecen funciones con mala calidad, no sólo hablan mal del dispositivo de adquisición, sino también de todos los desarrollos que hagan uso de esas funciones. En particular para este desarrollo, hubo una función que no se desempeñó de manera adecuada y

(44)

fue una características más notadas por los usuarios, esta función fue la que se encargaba de la rotación del objeto a partir de un gesto de rotación. Este gesto se encontraba contenido dentro de la librería como uno de los gestos que era capaz de reconocer el dispositivo Leap Motion, y su implementación era completamente transparente para el programador, sin embargo no era un gesto que fuera fácilmente reconocido y por lo tanto la tarea de rotar un objeto se hacía difícil para el usuario.

En tercer lugar se debe apreciar que la capacidad de reconocer una gran cantidad de gestos implica, además, saberlos usar de una manera adecuada. Esto quiere decir que se debe tener en cuenta que aquellos gestos que sean muy parecidos van a afectar en mayor o menor medida la curva de aprendizaje del usuario ya que puede existir cierta ambigüedad entre gestos cuando se está iniciando el proceso de aprendizaje de un usuario. En este caso particular se puede ver que al inicio el usuario tuvo problemas para diferenciar las tareas que se hacían con la mano derecha de aquellas que se hacían con la mano izquierda y viceversa, ya que en algunas ocasiones intentaban ejecutar los comandos correspondientes a la mano contraria y de esta manera no obtenían el resultado que ellos esperaban.

En cuanto al desempeño del software es importante proceder con cautela a la hora de manejar las operaciones que tienen que ver con gráficos cuando la cantidad de objetos gráficos influye de manera importante en la cantidad de operaciones que deben realizarse. Es por esto que en el desarrollo del proyecto debió mejorarse la forma con la cual se estaba actualizando el modelo discreto a partir del modelo continuo, ya que por sí mismo el proceso de raycast es costoso y además tuvo una relación directa con la resolución del dispositivo que se estaba simulado. De esta manera debió hacerse una optimización de los recursos para que el raycast se hiciera sólo cuando fuera necesario teniendo en cuenta que de todas maneras era una buena opción para hacer el mapeo de las alturas de la figura geométrica. Por otro lado, en este tipo de desarrollos vale la pena intentar utilizar métodos analíticos para poder realizar acciones sobre los gráficos que sean necesarias, ya que estas permiten tener bajo tiempo computacional lo que se requiere cuando la cantidad de gráficos aumenta de manera importante. Sin embargo, estos métodos conllevan algunas limitantes que pueden ser determinantes a la hora de decidir si sí el método se utiliza o no, en este proyecto esa limitante no permitió que se realizara el desarrollo a través de este método debido a que no todas las figuras tenían una forma analítica o era demasiado complicada para poder trabajar con ella.

Como trabajo futuro se prodría usar esta aproximación a la interacción con interfaces tangibles para apoyar el funcionamiento de las pantallas tridimensionales que están en construcción en este momento. Por otro lado, se espera que los hallazgos en este trabajo sean tenidos en cuenta a la hora de seguir la investigación sobre estas tecnologías ya es importante evidenciar las falencias y limitantes de los dispositivos de captura gestual y las aproximaciones a las pantallas tridimensionales de hoy en día.

En segundo lugar se espera extender este desarrollo para que soporte interacciones multimodales ya que de esta manera se puede enriquecer los comandos que son

(45)

ejecutados por el usuario con el objetivo de que no haya ningún tipo de ambigüedad y que la curva de aprendizaje del usuario disminuya.

En tercer lugar, el proyecto platea las bases y propone la construcción de un hardware que se aproxime a una pantalla tridimensional pero sin los latos costos que esto acarrea. De esta manera, con una inversión mínima y los conocimientos necesarios en el área de la ingeniería se proyecta hacer realidad el dispositivo que se quiso simular con este proyecto. Por otro lado, el desarrollo serviría como modelo para el software que se encargue de controlar esa pieza de hardware aún no manufacturada.

(46)

Bibliografía

[1] Baldasarri, S. (2014). Paradigmas Avanzados:

Interacción Tangible. Recuperado de http://webdiis.unizar.es/asignaturas/DCU/wp-content/uploads/2015/02/DCU_Tangible_2014-15.pdf el 24 de Agosto de 2015.

[2] Sokol, Z. (2014). MisTable Lets You Manipulate Floating Projections Made Of Mist. Recuperado de http://thecreatorsproject.vice.com/blog/mistable-lets-you-manipulate-floating-projections-made-of-mist el 24 de Agosto de 2015.

[3] Tang, S., Sekikawa, Y., Leithinger, D., Follmer, S., Ishii, H. (2013). Tangible CityScape.

Recuperado de http://tangible.media.mit.edu/project/tangible-cityscape/ el 24 de Agosto de 2015.

[4] TechnoCrazed. (2014). Aerial 3D: A Revolutionary 3D Projection System For

Advertisements In The Air. Recuperado de http://www.technocrazed.com/aerial-3d-a-revolutionary-3d-projection-system-for-advertisements-in-the-air el 24 de Agosto de 2015.

Referencias

Documento similar