sábado, 8 de junio de 2019

Nuestra primera aplicación con Unity y Magic Leap

Llevo unas semanas probando estas gafas de realidad aumentada y explorando sus posibilidades para emplearlas en entornos industriales. Realmente estoy muy sorprendido con su calidad: son muy cómodas de llevar, su campo visual es excelente (mejor que el de las Microsoft Hololens) y tienen una calidad de visualización extraordinaria.
No voy a detallar completamente las características de las gafas pero si os diré que, al igual que las Hololens, disponen de Spatial Mapping (reconocimiento del entorno) lo que nos permitirá posicionar objetos virtuales en una habitación real y que recuerde su posición entre ejecuciones.
Vamos a comenzar una serie de artículos para explicar el proceso de desarrollo con este dispositivo que, como veréis, es relativamente sencillo. Lógicamente para comprender estos tutoriales a fondo, necesitaremos tener una base desarrollando con Unity y algunos conceptos claros de realidad virtual y aumentada. Si tenemos este perfil, ya podemos comenzar. ¡Empezamos!

Instalando el entorno

Lo primero que necesitamos será Unity 2019. A partir de esa versión cuenta con el soporte para Lumin OS, que es el sistema operativo de las gafas, aunque casi todos los tutoriales oficiales cuentan con explicaciones para Unity 2018. Además, necesitamos incluir en la instalación de Unity 2019 el soporte para Lumin OS, paso que veremos más adelante pero que podemos llevar a cabo ahora si tenemos que instalar Unity desde cero.
A continuación necesitamos una cuenta en el portal del creador de Magic Leap. Este paso es necesario ya que para desplegar las aplicaciones al dispositivo necesitaremos un certificado que obtenemos de su página.
El sistema de autenticación es curioso: indicamos nuestra cuenta de correo y nos enviará un código que tendremos que introducir en el paso siguiente. No cuenta con el típico nombre de usuario / contraseña.
Una vez autenticados ya podemos empezar a descargar las herramientas. Concretamente tenemos que bajar el Package Manager que será la aplicación desde la que descargaremos aquellos módulos que vayamos a necesitar.
Descargamos el Package Manager y lo instalamos. Abrimos la aplicación e indicamos el email con el que nos registramos en la página. Pulsamos el botón Continue.
Una vez abierta la aplicación necesitamos descargar los siguiente módulos: Lumin SDK (lógicamente, es el núcleo del sistema) y el Magic Leap Unity Package. Yo, a mayores, instalé también la Unity API Documentation pero no es estrictamente necesaria. Al escribir este artículo la versión disponible del SDK era la 0.21.0.
Es importante saber dónde se van a instalar los paquetes que estamos descargando. Por defecto se guardan en la ruta c:\users\xxxx\MagicLeap, donde xxxx es el nombre del usuario de Windows.
Ya tenemos instaladas las herramientas de desarrollo. Ahora es necesario preparar el dispositivo. Para ello nos ponemos las gafas, entramos en su configuración y dentro del apartado Creator activamos las opciones Creator ModeAllow untrusted sources? y Enable MLDB Access.
Es ahora cuando tenemos que obtener nuestro certificado. Dentro del Creator Portal vamos al apartado Publish -> Certificates y pulsamos el botón Add New.
Una vez creado el certificado lo descargamos, lo descomprimimos (es un fichero zip) y lo guardamos ya que lo necesitaremos luego desde Unity para generar nuestra aplicación. Si queremos más información al respecto la podemos obtener de aquí:
Aun quedaría una cosa para tener nuestro entorno perfectamente instalado: añadir a Unity el soporte para Lumin OS al igual que haríamos si queremos desarrollar para Android, WebGL, etc. Abrimos el Unity Hub y marcamos la casilla de Lumin OS. Esperamos a que descargue y ¡listo!.
Select Lumin OS for Unity and click Install

Preparando un proyecto

Lo primero que tenemos que hacer es abrir Unity y crear un proyecto 3D como hacemos habitualmente.
Una vez creado, vamos a la opción Window del menú y abrimos el Package Manager de Unity. Desde ahí tenemos que instalar un paquete llamado XR Legacy Input Helpers.
Ahora nos aseguramos de indicar a Unity dónde está el SDK de Lumin. Vamos a la opción Edit -> Preferences, dentro del apartado External Tools hacemos click en Browse e indicamos la carpeta del SDK que generalmente será /Users/xxxx/MagicLeap/mlsdk/v0.xx.0. Donde xxxx es el nombre del usuario de Windows.
Al igual que hacemos cuando desarrollamos para Android tenemos que cambiar la plataforma de destino. Vamos a la opción File -> Build Settings seleccionamos Lumin y pulsamos el botón Switch Platform.
Ahora tenemos que modificar algunos parámetros del proyecto. Vamos a la opción Edit -> Project Settings, seleccionamos Player y pulsamos en la pestaña con el logo de Magic Leap.
  • Dentro del apartado Other Settings cambiamos la propiedad Color Space a Linear.
  • En el apartado XR Settings seleccionamos la casilla Virtual Reality Supported.
  • En el apartado XR Settings cambiamos el Stereo Rendering Mode a Single Pass instanced.
El siguiente paso es incluir en Unity el package de Magic Leap. Para ello vamos a Assets -> Import Package y elegimos Custom Package.
Tenemos que buscar el package en el diálogo que se abre. Generalmente está en 
Users/xxxx/MagicLeap/tools/unity/v0.xx.0 donde xxxx es el nombre del usuario de Windows.
En el siguiente diálogo pulsamos el botón Import. Cuando finalice ya tenemos en nuestro proyecto las librería necesarias para desarrollar aplicaciones para las Magic Leap.
El siguiente paso es empezar a preparar nuestra escena. Para ello eliminamos la cámara que trae una escena de Unity por defecto y arrastramos a la ventana Hierarchy la que se encuentra en Assets -> MagicLeap -> Core -> Prefabs y que se llama Main Camera.
Aun es necesario cambiar una cosa más: para darle permisos a la aplicación se utiliza un fichero llamado manifest.xml. Para que nuestra aplicación funcione tenemos que copiar este fichero desde la ruta Assets -> MagicLeap -> Examples -> Plugins -> Lumin a Assets -> Plugins -> Lumin.
Si queremos aprender más sobre los permisos y los ficheros Manifest en Unity podemos ir a la documentación oficial aunque para estos ejemplos no será necesario.

Creando nuestra primera aplicación

Ya tenemos nuestras herramientas instaladas y nuestro proyecto preparado. Ahora podemos empezar a crear nuestra simulación que simplemente mostrará un cubo dentro de nuestro entorno real.
Creamos un cubo en Unity mediante el menú GameObject -> 3D Object -> Cube
Seleccionamos el cubo en nuestra jerarquía y colocamos su posición X = 0 | Y = 2 | Z = 3, su rotaciónX = 0 | Y = 65 | Z = 0 y su escala 0.25.
unity-cube-transform
¡Ya está!. Ya tenemos nuestra primera escena en Magic Leap. Es muy sencilla y simplemente muestra un cubo delante de nosotros pero ahora nos surge una pregunta ¿cómo pruebo la aplicación? Lógicamente podemos desplegar la aplicación a las gafas (que veremos más adelante) pero será muy tedioso tener que estar haciéndolo cada vez que hagamos un pequeño cambio. Para evitar esto Magic Leap nos proporciona un simulador que nos será muy útil para no perder tiempo con pruebas rápidas.

Desplegando la aplicación en el simulador

Para utilizarlo lo primero que tenemos que hacer es hacer algunos cambios dentro de las opciones del proyecto. Vamos a Edit -> Project Settings, pulsamos Player y seleccionamos la pestaña de PC, Mac & Linux Standalone Settings.
Hacemos los siguientes cambios:
  • Desmarcamos la casilla Auto Graphics API for Windows.
  • Dentro del cuadro Graphics API for Windows pulsamos el botón y de la lista que se abre seleccionamos la opción OpenGLCore y la arrastramos hasta que quede encima de Direct3D11, como se muestra en la imagen superior.
Al hacer este cambio Unity nos pedirá reiniciar el editor, o sea, habrá que cerrarlo y abrirlo de nuevo. Ahora nos vamos al menú superior y en opción Magic Leap -> ML Remote seleccionamos Import Support Libraries.
Y luego nuevamente Magic Leap -> ML Remote y seleccionamos Launch MLRemote
Se abre una nueva ventana con el Magic Leap Remote. Pulsamos el botón Start Simulator.
Nos debería de aparecer el simulador de Magic Leap.
Desde aquí vamos a poder hacer todo lo que podamos hacer con las gafas: moverlas por el espacio, detectar gestos de las manos, simular el controlador, etc.
Para movernos por el simulador utilizaremos los siguientes controles como indica en la página de Magic Leap:
mlremote keybinding movement
Si ahora volvemos a Unity y pulsamos el botón Play se conectará automáticamente con el simulador y veremos nuestra aplicación, en este caso nuestro cubo, en el mismo.
Ahora si que está lista nuestra simulación. Realmente es importante que os familiaricéis con el simulador ya que estar continuamente desplegando la aplicación en el dispositivo es una pérdida de tiempo importante por no hablar de que las Magic Leap van a consumir batería. Para hacer aplicaciones complejas va a ser nuestro mayor aliado.

Desplegando la aplicación en el dispositivo

Si ya hemos testeado nuestra aplicación suficientemente en el simulador, es probable que queramos probarla directamente en las gafas. Para ello tenemos que cambiar el campo Product Name dentro de File -> Build Settings -> Player Settings aunque por defecto ya nos pondrá el nombre de nuestro proyecto.
Un último paso será ir al apartado Publishing Settings y dentro del campo ML Certificate elegir el certificado que hemos descargado y descomprimido anteriormente.
Ahora ya podemos pasar la aplicación a las gafas. Para ello nos tenemos que asegurar de:
  • El mando está encendido.
  • Las gafas están encendidas y desbloqueadas.
  • Estamos viendo el lanzador de aplicaciones (o sea, el menú principal).
Conectamos las gafas al ordenador mediante un cable USB – USB C (que no vieneincluido con las gafas), ejecutamos la opción File -> Build and Run, guardamos el archivo MPK en el ordenador y esperamos.
¡Listo! ¡Ya deberíamos estar viendo nuestra aplicación en las Magic Leap!

0 comentarios :

Publicar un comentario