Guía de Arranque para VR con Oculus y Leap Motion Orion

Publicado en

Desde sus inicios, la realidad virtual ha sido una gran promesa de interacción con los sistemas digitales. Actualmente esta promesa ya es una realidad gracias a plataformas y dispositivos como Oculus Rift y Leap Motion.

Para poder lograr una sensación de inmersión completa, la realidad virtual incorpora dos elementos clave en su parte visual: primeramente la estereoscopía, que significa proyectar dos imágenes diferentes para cada ojo, de manera que logremos la sensación de profundidad, el tracking de la posición y orientación de la cabeza.

El segundo elemento es la interacción. La reacción inmediata al entrar a un entorno de VR, es extender las manos y tratar de tocar o alcanzar las cosas que están en el mismo. Aunque existe la posibilidad de usar controladores físicos, como gamepads, joysticks y sistemas de tracking de posición 3D, no hay nada como la idea de usar las propias extremidades para interactuar. Justamente esta es la idea detrás de innovaciones como Kinect de Microsoft o Leap Motion, un sensor que detecta movimientos y gestos hechos con las manos, lo cual permite interacciones más libres e intuitivas.

En este recorrido vamos a explorar todos los pasos necesarios para desarrollar un entorno de VR basado en Oculus y Unity, soluciones disponibles y accesibles en México. También revisaremos algunos ejemplos con Orion, la versión más reciente de software para Leap Motion.

Prerrequisitos e instalación básica

Para poder realizar este tutorial se necesita lo siguiente:

  • Computadora con requerimientos mínimos para Oculus y sistema operativo Windows
  • Unity 5.3.5
  • Oculus Runtime 1.3
  • Leap Motion Orion Software

En este tutorial utilizamos una computadora Alienware X51 R2, con tarjeta gráfica AMD Radeon R9 370 de 4GB y sistema operativo Windows 10 Home.

Aunque Oculus nos señalaba que nuestro equipo era una computadora no soportada, no experimentamos ningún problema de rendimiento con la versión Developer Kit 2 (DK2). Lamentablemente Oculus dejó de soportar hardware de Apple, por lo que no es posible reproducir este tipo de experiencias en sus equipos, al menos con el soporte y versiones más recientes al momento de escribir el presente artículo.

Nota: Para configurar el hardware hay que seguir las guías de producto de Oculus y de Leap Motion respectivamente. La instalación de Unity puede ser la versión Personal Edition sin costo.

Esta ya contiene las librerías básicas de compatibilidad, así que es necesario descargar de la página de Oculus los drivers más recientes para evitar inconvenientes.

Leap Motion Orion en Unity

Una vez instalado todo el hardware necesario, es momento de configurar Unity para desarrollo con Leap Motion Orion. Aunque se trata de una versión Beta, tiene enormes mejoras en la reducción de ruido y detección de gestos con las manos.

1. Para configurarlo dirígete a la página de desarrollo de Leap Motion Orion. Visita la sección de Unity: https://developer.leapmotion.com/unity, y da click en Download Core Assets. Además podrás descargar todos los add-on modules; funciones que no son parte de los core assets, pero que contienen metáforas de interacción interesantes y son soluciones a la medida de frecuente uso. Todos estos elementos se presentan como .unitypackage, formato comprimido de Unity para almacenar activos que puedes integrar en un proyecto.

2. El segundo paso es abrir Unity y crear un proyecto nuevo (o usar un proyecto previo si se cuenta con él). Ya dentro del proyecto dirígete a la ruta: Asset/Import Package/Custom Package… para instalar los paquetes.

3. Ahora selecciona cada paquete; automáticamente se almacenarán assets, scripts, scenes y otros elementos en la librería (ver figura 1).

Figura 1. Árbol de carpetas.

Las escenas de ejemplo están disponibles en las carpetas LeapMotion y LeapMotionModules; puedes probar algunas de las más interesantes. Describo algunos a continuación:

Leap_Hands_Demo_VR. Encontrarás este demo bajo LeapMotion/Scenes. La escena muestra un entorno VR básico en el que se utiliza Oculus y Leap Motion para mostrar las manos del usuario. La sensación de inmersión, aun con un fondo en gris, es increíble. Además se puede constatar la precisión de seguimiento y registro, es decir, la coincidencia entre la imagen virtual y nuestra sensación de dónde están nuestras manos (ver figura 2).

Figura 2. Demo de registro de manos.

ExampleUIScene. Esta escena se encuentra dentro de la carpeta LeapMotionModules/UIInput/Scenes y contiene ejemplos de interfaces de usuario 2D insertadas en un entorno de VR. La interacción es realmente fluida y los botones de ejemplo (tipo click, toggle y slider) reaccionan muy bien.

Figura 3. Interacción con componentes 2D.

PinchDrawDemo. Es otro ejemplo muy interesante. Con un poco de práctica es posible escribir y dibujar en un espacio 3D (ver figura 4). La encontrarás en LeapMotionModules/DetectionExamples/Scenes.

Figura 4. PinchDrawDemo.

Integrando Leap Motion a tu escena

Para integrar Leap Motion a una escena hay que crear algunos objetos desde la carpeta de prefabs de Leap Motion. Estos objetos contienen una cámara configurada para ser el punto de vista en VR y que el visor de Oculus lo pueda controlar, también están disponibles los objetos que representan las manos derecha e izquierda.

La escena utilizada para este tutorial es muy básica, un par de cubos animados que se desplazan relativamente (ver figura 5).

Figura 5. Escena básica

Figura 6. Configuración de Hand Pool

Para realizar dicho recorrido:

  1. Ir a LeapMotion/Prefabs en la ventana de assets y arrastrar el prefab LMHeadMountedRig a la escena.
  2. En la jerarquía de LMHeadMountedRig, hay un objeto llamado LeapHandController.
  3. Desde el folder LeapMotion/Prefabs/HandModelsNonhuman, arrastrar los prefabs CapsuleHand_L y CapsuleHand_R a la ventana de la jerarquía y meter bajo LeapHandController.
  4. Desde el folder LeapMotion/Prefabs/HandModelsPhysical, arrastrar el prefab RigidRoundHand_L y RigidRoundHand_R a la ventana de la jerarquía y meterlos igualmente bajo LeapHandController.
  5. En la ventana del inspector, ubicar el objeto HandPool que está dentro de LeapHandController.
  6. Debes crear un array en Model Pool; para hacerlo, escribe en Size el valor 2.
  7. Arrastrar cuatro objetos en la escena (manos derecha e izquierda respectivamente), para que el controlador los pueda referir. Como se muestra a continuación, esto corresponde a dos manos gráficas y dos manos físicas.
  8. Una vez creado este array de dos elementos, marcar los checkboxes IsEnabled y CanDuplicate de cada set de manos.
  9. Hay que asegurarse de que esté habilitado el soporte a VR; ubicar el checkbox en Edit/Project Settings/PlayerSettings/OtherSettings/Virtual Reality Supported.
  10. Para la interacción con objetos es importante que se trate de objetos rígidos (agregando un componente rigidBody a los mismos).

Figura 7. Interacción con objetos rígidos.

Conclusiones

Con estos sencillos pasos, puedes crear tu propio entorno en VR. Además tienes la oportunidad de verificar el gran avance que hay en cuanto a estas dos tecnologías; combinadas permiten realizar grandes cosas como escenas VR con interacción a través de las manos y no de dispositivos de apoyo.

Lo mejor es que cualquiera puede revisar y analizar estas herramientas y escenas demo, para integrarlas en sus propios desarrollos. Espero que este tutorial haya sido de tu interés, y que te anime a desarrollar tus propias ideas en un entorno de realidad virtual

Bio

Ernesto Riestra es cofundador y líder de investigación y desarrollo en Metagraphos, firma dedicada a la creación de experiencias digitales para transformar la productividad y el conocimiento de personas y organizaciones. Es Ingeniero Mecánico Electricista egresado de la UNAM y tiene una Maestría en Mecatrónica por la Universidad Técnica de Hamburgo.