Cuando Google introdujo las gafas de cartón para realidad virtual conocidas como Cardboard VR, abrió la realidad virtual a millones de posibles usuarios que, con su teléfono inteligente y esas sencillas y baratas gafas, podían experimentar nuevos mundos virtuales de una forma inmersiva. Google, sin embargo, abandonó el proyecto dejándolo en manos de la comunidad como software abierto. Con ello, se abrió la puerta a que cualquiera pudiera modificar y mejorar la app Cardboard, que sirve para ajustar la experiencia de realidad virtual en el móvil a las características de las gafas escaneando un código QR que el fabricante de las gafas suele suministrar. Uno de los parámetros que se suele definir con ese código QR es la distancia entre los centros de las lentes, que se usa para calcular la disparidad de las imágenes estereoscópicas que se dibujan en la pantalla. El problema es que esa distancia la fija entonces el QR, pero no debería depender tanto de las lentes de las gafas como de la distancia interpupilar (IPD) del usuario. Si esa distancia no se ajusta correctamente a los ojos del usuario, éste podría llegar incluso a ver doble. Este trabajo tiene por objeto el análisis de las fuentes de código abierto del software Cardboard, y la introducción de mejoras en el mismo, especialmente el ajuste manual de la distancia entre lentes para hacerla coincidir con el IPD del usuario. Como subobjetivos, se plantea proponer distintas formas de realizar ese ajuste, desde una introducción manual de la distancia, un mando deslizante e incluso el cálculo automático del IPD del usuario haciendo uso de la cámara del dispositivo móvil. Todo ello sería completado con una aplicación que sirva de demostrador de las funciones añadidas y su correspondiente evaluación.
Dada la naturaleza de este trabajo, se propone seguir una metodología exploratoria, como el ciclo “Inventor’s Lifecicle” descrito en el libro de R. Rucker, o el modelo en espiral explicado por G. Kim.
Este proyecto ayudaría a cumplir competencias de diferentes ramas específicas, como por ejemplo:
[IS1] Capacidad para desarrollar, mantener y evaluar servicios y sistemas software que satisfagan todos los requisitos del usuario y se comporten de forma fiable y eficiente, sean asequibles de desarrollar y mantener y cumplan normas de calidad, aplicando las teorías, principios, métodos y prácticas de la Ingeniería del Software.
[IS4] Capacidad de identificar y analizar problemas y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, modelos y técnicas actuales.
[TI2] Capacidad para seleccionar, diseñar, desplegar, integrar, evaluar, construir, gestionar, explotar y mantener las tecnologías de hardware, software y redes, dentro de los parámetros de coste y calidad adecuados.
[TI3] Capacidad para emplear metodologías centradas en el usuario y la organización para el desarrollo, evaluación y gestión de aplicaciones y sistemas basados en tecnologías de la información que aseguren la accesibilidad, ergonomía y usabilidad de los sistemas.
[CM3] Capacidad para evaluar la complejidad computacional de un problema, conocer estrategias algorítmicas que puedan conducir a su resolución y recomendar, desarrollar e implementar aquella que garantice el mejor rendimiento de acuerdo con los requisitos establecidos.
[CM6] Capacidad para desarrollar y evaluar sistemas interactivos y de presentación de información compleja y su aplicación a la resolución de problemas de diseño de interacción persona computadora.
Rucker, R., “Software Engineering and Computer Games”, Addison- Wesley, 2002. URL: http://www.rudyrucker.com/computergames/
Kim, G., “Designing Virtual Reality Systems: The Structured Approach”, Springer, 2005.
Open Source Cardboard SDK: https://developers.google.com/cardboard