II.3 Modified Uncovered Interest Rate Parity
II.3.2 Modification of UIP
DiscoveryController utiliza el transformador isPlayerOnPixel implementado en KinectController, el cual fue explicado en la sección 3.1.1 (Code snippet 3.23).
public override void update()
{
myModel.setPlayersOnPixels(isPlayerOnPixel()); myModel.update();
}
73
El resultado obtenido logró mostrar la imagen de fondo sólo en aquellos lugares en donde se encuentren las personas. El siguiente paso involucra mantener en memoria todos aquellos píxeles que alguna vez fueron tocados.
3.2.3.2 Descubrimiento con memoria
Como se puede ver en el Code snippet 3.21, el método update del modelo, en cada momento del tiempo se inicializan todos los píxeles. Aquellos que tienen un jugador en transparente, y aquellos que no, con un color predeterminado. La solución tomada en esta segunda etapa fue inicializar el arreglo discoveryArray desde un principio todo de un sólo color. Luego, cuando update es llamado por el controlador, sólo se consulta por los píxeles en donde hay jugadores, en ese caso poniendo el color transparente (Figura 3.38).
Figura 3.38 - Establecimiento de transparencias con respecto a la existencia de los jugadores. Esta solución simplifica el método de actualización, pasando un poco de funcionalidad a la inicialización. En el gráfico anterior se puede ver que una vez que la posición del arreglo tuvo un ‘true’, es decir, que fue tocado por un jugador, sin importar los valores futuros, el arreglo de colores sigue manteniendo „Transparente’ en esa posición.
El resultado obtenido en esta segunda etapa logra despintar la imagen en su totalidad. Llega un punto en donde la imagen está completamente descubierta y no hay más por hacer. El siguiente paso es volver a tapar la imagen de alguna manera para mantener al público en movimiento constante.
74
3.2.3.3 Recubrimiento de la imagen
Para la funcionalidad de volver a pintar, se aprovechó el cuarto componente del tipo Color, Alpha, que indica el nivel de transparencia[37]. Este componente brinda la posibilidad, no sólo de tapar con un fade in, sino que también se puede jugar con un efecto fade out al despintar. El efecto se logra manipulando de distinta manera los niveles de transparencia que pueden ir del 0 a 255, siendo 255 un color sólido sin transparencia.
Entonces ahora el método update del modelo, realiza una acción sobre el arreglo de retorno dependiendo de si existe o no un jugador en esa posición. En el caso de que pertenezca a un jugador, se hace más transparente ese color, es decir, disminuye el valor alpha. En el caso de que no haya ningún jugador asociado, el nivel de transparencia disminuye, tapando así la imagen. Esta lógica se ve en la Figura 3.39.
Figura 3.39 - Establecimiento de niveles transparencias con respecto a la existencia de los jugadores.
Es importante que estos factores sean modificables. Para ello, como en el Reproductor de Video, se utiliza el archivo configuration.xml que es levantado al Singleton Configuration. En este caso, el Singleton sólo es utilizado por el modelo.
Para un mejor control de la transparencia, se decidió mantener un arreglo de valores punto flotante. Luego se transforma ese valor en un entero para ser fijado en el cuarto componente del color, alpha. De esta manera, el factor para descubrir la imagen en los casos de prueba fue de 50/255, y para que se vuelva a tapar pudo ser de 0,1/255.
75
Esto permitió que recién al pasar 10 frames sin movimientos, la transparencia disminuya en 1/255.
[ ] ⌊ [ ]⌋
Esta tercera aplicación demuestra la simplicidad de incorporar nueva funcionalidad sin necesidad de modificar mucho el código. Como se puede ver, los métodos de DiscoveryController que hereda de KinectController son muy similares a la aplicación anterior. En la inicialización, se da comienzo al flujo de datos del dispositivo Kinect, y como en la „Hinchada‟, también se utilizan los flujos de esqueletos y profundidad. También es necesario inicializar el gestor de colores, que es de utilidad para establecer un color al modelo. Luego, en la actualización, este modelo en particular sólo requiere un arreglo que va a utilizar para crear un objeto.
El modelo implementa a IModel, y su método update también es similar al de la „Hinchada‟. En este caso se recorre un arreglo de booleanos y se modifica el cuarto componente de los colores. Cuando la vista ejecuta el getData, el modelo sólo devuelve el objeto creado en su actualización.
A la hora de crear una nueva aplicación, se debe tener en claro cuáles son los datos necesarios a incorporar en el modelo, y cuál es el objeto necesario para la vista. El controlador debe establecer todos los atributos del modelo, y luego ejecutar update. Es aquí en donde el modelo crea el objeto para la vista específico a la aplicación en cuestión. La vista, además de inicializarse con todas las propiedades necesarias, debe actualizar el controlador y recuperar los datos del modelo para mostrar una imagen por pantalla.
76
Capítulo
4
Capítulo 4
Pruebas
Este capítulo se basa en las pruebas realizadas sobre las aplicaciones que fueron explicadas en el capítulo 3, Diseño e Implementación. Se comienza explicando el contexto de las pruebas, los elementos utilizados y la cantidad de personas que asistieron. Luego se pasa a describir los resultados de las pruebas aplicación a aplicación, indicando aquellos aspectos positivos, y también aquellos que deben corregirse.
4.1 Contexto
Las pruebas se realizaron en un contexto controlado, intentando simular de la mejor manera una situación en cualquier museo o paseo. El lugar elegido fue un aula de la Biblioteca Central de la UNICEN Tandil, que cuenta con el equipamiento necesario para realizar proyecciones. A pesar de que el aula contiene sillas, se creó un espacio suficiente para que las personas puedan moverse con tranquilidad (Figura 4.1).
77
Como se mencionó en los capítulos anteriores, el dispositivo Kinect no detecta más de seis personas. Sin embargo, para las pruebas fue necesario incluir una mayor cantidad. Es imposible controlar que, a la hora de usar las aplicaciones, sólo haya una cantidad determinada de personas. Las pruebas se hicieron con ocho personas activas.
A continuación se muestran los resultados de las pruebas realizadas.
4.2 Aplicaciones
Una vez que el ambiente estuvo preparado y las personas presentes, se comenzó con una explicación. Se aclaró a los participantes que las aplicaciones que iban a probar iban a estar en un museo o paseo relacionado al tenis. Durante las pruebas se midieron sus reacciones y luego se tomaron sus opiniones.
4.2.1 Reproductor de video
La reproducción del video está pensada para ser controlada sólo por un usuario. Además de imposible, va en contra de la interactividad controlar que sólo una persona lo use por vez. La idea es que una persona que visite el museo sea libre, y se pueda divertir junto a los otros. Por eso, se llevó a probar la reproducción del video con muchas personas. Es correcto que sólo responda a una, pero el objetivo es que siga funcionando aunque haya más de una persona.
Los resultados obtenidos al realizar pruebas con una sola persona son ideales. La serie de imágenes de la Figura 4.2 muestran la evidencia de las pruebas realizadas con una sola persona que se mueve hacia la derecha. Los movimientos hacia la derecha, como se explica en el capítulo anterior 3.2.1, hace que el video avance, es decir, se reproduzca de manera normal, pero a una velocidad variante.
78
Esta prueba fue un éxito. Se notó a las personas entretenidas, y con ganas de probarlo. Además, como también se ve en la Figura 3.2, intentaban copiar los movimientos de la persona que se estaba proyectando.
Las mismas personas decidieron realizar una prueba como si caminaran en un pasillo del museo en fila (Figura 4.3). En este caso el movimiento es hacia la izquierda. Como se explica en la sección 3.2.1, este tipo de movimiento genera una reproducción hacia atrás, es decir, backwards. Esta prueba en cuestión generó una confusión.
Como las personas caminan hacia la izquierda, esperaron que la persona del video se mueva también hacia la izquierda. En este caso en particular, utilizando este video, la persona se mueve hacia la izquierda en reproducción normal, por lo tanto al reproducirse hacia atrás, se mueve hacia la derecha. La funcionalidad es correcta, pero el video elegido hizo confundir a los usuarios.
Como resultado de esta prueba se puede concluir que hay que tener en cuenta los movimientos de las personas que se reproducen en el video proyectado. Para aumentar el efecto en la gente, es ideal que las personas hagan movimientos hacia la derecha en una reproducción normal.
79
4.2.2 Hinchada
Figura 4.4 - Pruebas realizadas sobre la ‘Hinchada’ con todas las personas a la vez. La aplicación de la hinchada inicialmente fue pensada para interactuar con muchas personas. Durante las pruebas realizadas no se generaron inconvenientes con el audio. A mayor cantidad de personas, los audios respondieron de manera correcta. Cuando los jugadores se mantienen quietos, se reproducen sonidos leves, y cuando comienzan a saltar y mover los brazos, los audios crecen en intensidad.
A lo largo de esta prueba, se nota una reacción muy divertida de parte de los participantes. Inmediatamente se pusieron a saltar y mover los brazos, y jugaban a quedarse quietos para ver cómo respondía la aplicación. La prueba fue acompañada con muchas risas (Figura 4.4).
Se encontró un leve problema al dibujar las siluetas en pantalla. Hubo algunas ocasiones en las que se repitió un color, es decir, dos siluetas pintadas del mismo color. El problema está en que el dispositivo Kinect está detectando dos siluetas con el mismo id de jugador. La aplicación no es capaz de darse cuenta y corregirlo. Este defecto no fue detectado por las personas que la probaron y se puede ver en la Figura 4.5.
80
Figura 4.5 - Dos personas detectadas como una sola cuando sus esqueletos se tocan. Luego de realizar las pruebas sobre esta aplicación, se concluyó que es muy importante la elección de los sonidos. Recordando, si hay 6 personas quietas en frente al sensor, se van a reproducir los primeros 6 sonidos. Si estas 6 personas se mueven, se van a reproducir 12 sonidos. Hay que tener en cuenta que los primeros sonidos sean leves, para que las personas tengan la necesidad de moverse para sentir la hinchada.
4.2.3 Descubrir la imagen
La última aplicación probada fue Descubrir la imagen. Las pruebas realizadas cuando se desarrolló, se basaron en una o dos personas. Los valores de aparición y desaparición de la imagen fueron acomodados a ese contexto. Pero el objetivo es que pueda ser usada por muchas personas a la vez sin inconvenientes.
Estando la imagen totalmente tapada, una persona pasó en frente al Kinect, y se dio cuenta que con su cuerpo podía descubrirla, momento retratado en la Figura 4.6). En este primer paso se logró el objetivo, que incentiva a las personas a moverse por el espacio horizontal, como también en el vertical, para descubrir la imagen.
Cuando el resto de las personas vieron cómo funcionaba la aplicación, se fueron sumando al área de juego. Inmediatamente comenzaron a moverse en el espacio saltando y levantando los brazos para lograr descubrir la imagen completa. La aplicación respondió correctamente a estos movimientos y las personas se encontraron divertidas.
81
Pasados unos segundos se encontró un inconveniente. Al haber tantas personas, la imagen se descubrió muy rápido, y además, el factor de volver a pintar quedó demasiado bajo, por lo que la imagen se veía por demasiado tiempo. El efecto provocado se puede apreciar en las imágenes de la Figura 4.7.
De esta manera, las personas que estaban jugando, simplemente se quedaban mirando la imagen, y no tenían la necesidad de moverse mucho. La solución es disminuir el valor que se utiliza para destapar la imagen, esto obliga a que se tenga que „despintar‟ varias veces en un mismo lugar para lograr ver la imagen en un 100%. También se puede aumentar el valor utilizado para volver a pintar la imagen, así se vuelve a tapar más rápido. Estos valores son fácilmente modificables, por lo que este factor no genera un grave problema.
Figura 4.6 - Proceso inicial de ‘Descubrir la imagen’ con una sola persona.
82
La prueba en general, a pesar de los índices mal establecidos, fue exitosa. Las personas esperaban a que se vuelva a tapar para ir pasando de a uno y jugar a hacer poses. También jugaban con las partes de la imagen que destapaban y las que dejaban escondidas (Figura 4.8).
83
Capítulo
5
Capítulo 5
Conclusiones
En este capítulo se presentan las conclusiones encontradas luego de realizar el proyecto en cuestión. El mismo se encuentra dividido en dos secciones. En primer lugar se detallan los resultados obtenidos respecto a los objetivos propuestos; luego, se proponen trabajos futuros sobre la plataforma y las aplicaciones desarrolladas.
5.1 Resultados obtenidos
A lo largo de todo el informe se presentó una plataforma para la implementación de aplicaciones interactivas. Esta plataforma ofrece a los desarrolladores la posibilidad de utilizar los datos brindados por el dispositivo Kinect y utilizarlos en aplicaciones que se enfoquen en la interacción y la multimedia, permitiendo incorporar dichos datos para que afecten o modifiquen imágenes, videos y audios. El desarrollador es capaz de elegir aquellos datos que considere necesarios para llegar a su fin.
Para probar la plataforma se crearon tres aplicaciones base que son detalladas en la sección 2 del capítulo „Diseño e Implementación‟. El primer punto de los objetivos que se buscó cumplir es que estas aplicaciones sean reutilizables, es decir, sin importar para qué contexto fueron pensadas, pueden adaptarse fácilmente a cualquier otro. Esto fue posible gracias al diseño de las aplicaciones y el correcto uso de archivos de configuración.
Como se mostró a lo largo de los capítulos anteriores, las aplicaciones creadas se basaron en el tenis. Sin embargo, aquellos videos o imágenes utilizadas, pueden ser sustituidos por otros completamente distintos, generando diferentes efectos en las personas.
Otro punto de los objetivos planteados a la hora de desarrollar aplicaciones de prueba, fue el de la usabilidad. En el capítulo 4, „Pruebas‟, se muestra la evidencia del uso de las tres aplicaciones desarrolladas. Este punto fue exitoso en lo que respecta a la
84
interactividad entre las personas y el sistema. Se encontraron leves problemas en dos de las aplicaciones donde el usuario quedó confundido. Sin embargo, estos problemas son solucionados desde archivos de configuración que se pueden ir adaptando sin problemas, en caso de ser necesario, a un público en particular. Si el público no se ve atraído por una imagen o un video, o los sonidos no los satisfacen, éstos se pueden adaptar.
Un punto muy importante que se planteó como objetivo, es el de la facilidad de crear una nueva aplicación basándose en la arquitectura propuesta y en las aplicaciones ya desarrolladas. La tercera aplicación, que se encuentra en la sección 3.2.3 „Descubrir la imagen‟ fue creada de esta manera. Se tomó como base el desarrollo de „Hinchada‟ (Sección 3.2.2) y, teniendo en cuenta la arquitectura propuesta, se realizaron pequeñas modificaciones que resultaron en una aplicación totalmente diferente.
Gracias a esta arquitectura, la incorporación de nuevos recursos es muy sencilla. A lo largo del desarrollo sólo se utilizaron gestores para abstraer el manejo de colores y audios. Es probable que alguna persona necesite de un gestor diferente a la hora de crear una aplicación, sin embargo, su incorporación al sistema no aumenta la complejidad.
Basándose en los objetivos propuestos, se puede concluir que el desarrollo fue un éxito. La arquitectura propuesta permite la incorporación de nuevos componentes, lo que da flexibilidad a las diferentes posibles creaciones. Las aplicaciones existentes que se encuentran en la sección 3.2 abarcan una importante cantidad de tecnologías y recursos, que luego un desarrollador puede tomar de base sin necesidad de comenzar de cero. Por último, y más importante, los usuarios aseguran haberse divertido probándolas, lo que da un cierre positivo a este proyecto.
5.2 Trabajos futuros
Esta sección contiene aquellas características que se pueden incorporar en un futuro. El proyecto es limitado, y la capacidad para crecer es muy grande. A continuación se mencionan sólo algunas mejoras posibles.
Como se mencionó en el capítulo 2, las aplicaciones que se desarrollaron dependen de los datos brindados por el dispositivo Kinect. Las tres aplicaciones en cuestión tratan con imágenes, videos y audios, sin embargo, sería ideal seguir construyendo más aplicaciones que abarquen más tecnologías. De esta manera se brinda al desarrollador más opciones a la hora de pensar en una aplicación sencilla de crear.
85
Como una continuación al proyecto, se podría pensar en una cuarta aplicación que interactúe con el usuario incorporando acciones que utilicen las reglas de la física. La imaginación de los creadores puede ir más allá todavía teniendo como base una aplicación de este estilo, en donde pueden entrar en acción diversos objetos que interactúan con el cuerpo, manteniendo un efecto similar al real.
Se puede crear, también, un nuevo punto de vista proyectado sobre las personas. Este tipo de aplicaciones requiere un mayor esfuerzo en la instalación del ambiente. El efecto provocado pretende ser totalmente diferente a las aplicaciones que se tuvieron en cuenta hasta el momento. Generalmente, al proyectar sobre personas, quién controla la aplicación no es el espectador.
Con respecto a las aplicaciones existentes, también se pueden realizar mejoras con respecto a la funcionalidad. Se podría incorporar dinamismo en las imágenes y videos que se muestran de fondo. Tomandocomo ejemplo „Descubrir la imagen‟, después de un determinado tiempo, se podría cambiar la imagen de fondo para mantener motivados a los usuarios.
En la aplicación „Hinchada‟ se puede incorporar una lógica más compleja para manejar los audios reproducidos. Por ejemplo, reproducir sonidos suaves por cada persona quieta, y reproducir sonidos fuertes adicionales por cada persona que se mueve. Hasta el momento, sólo importa un número referido a la suma de personas independientemente de si están quietas o en movimiento, como tampoco se encuentra distinción entre los sonidos reproducidos.
Durante el desarrollo del proyecto, se tuvieron en cuenta requerimientos no funcionales, sin embargo, no se fijó suficiente atención a todos. Las aplicaciones no aplican concurrencia. Un paso muy importante sería poder incorporarla para que cada componente de la arquitectura pueda manejar sus datos de una manera ordenada sin depender de la funcionalidad pendiente del otro.
Es probable, también, que la eficiencia relacionada a la creación de objetos para ser mostrados por la vista pueda ser mejorada. Aunque se intentó, desde un comienzo, sólo realizar la mínima cantidad de tareas sin dejar de lado la reusabilidad, nunca hubo un control explícito.
Estas mejoras mencionadas, respecto a la plataforma y a las aplicaciones desarrolladas, son sólo una porción de la cantidad de posibilidades de crecimiento y sus incorporaciones aumentarían más aún el éxito en los objetivos propuestos.
86