Cardboard en Android con Unity 5.5 (parte 1)

Introducción

Hace algunas semanas un cliente nos pidió una aplicación para usar en las gafas de cartón de Google, las Google Cardboard. Como hacía varios meses que no desarrollábamos nada para ellas y teniendo en cuenta que los SDK’s sufren continuas modificaciones, tocó hacer de nuevo una investigación puesto que lo utilizado en las aplicaciones que tenía desarrolladas seguramente estaría obsoleto.

Lo primero que me llamó la atención es que para la versión 5.6 de Unity el soporte para Cardboard es nativo; es decir, simplemente con marcar la casilla Virtual Reality Supported en  los Player Settings e indicar que nuestro dispositivo son las Cardboard ya tendremos el tracking de la cabeza implementado. Sin embargo decidí descartar esta posibilidad por dos motivos: el primero es que Unity 5.6 aun está en fase beta y no quería tener que lidiar con posibles bugs en una aplicación de producción. El segundo, que si queremos hacer cosas más avanzadas como seleccionar objetos con un puntero en el centro de la pantalla, necesitamos igual el Google VR SDK. Por estos motivos decidí atacar el desarrollo con Unity 5.5.

Requisitos

Lo primero, es fundamental que ya se tenga cierto conocimiento de cómo generar aplicaciones en Unity para Android así que voy a saltar este paso aunque tengo pensado hacer un tutorial básico más adelante. Suponemos entonces que tenemos Unity 5.5 instalado y configurado para la generación de aplicaciones para Android.

Lo segundo que necesitamos es el Google VR SDK for Unity. Este último viene en forma de package para unity que podemos descargar de aquí (el botón que pone DOWNLOAD SDK).

Un vez descargado ya podemos empezar nuestra app.

Instrucciones

El primer paso es crear un proyecto nuevo de Unity. Una vez creado, abrimos la ventana Build Settings (Menú File -> BuildSettings) y cambiamos nuestra plataforma a Android pulsando sobre Android y el botón Switch Platform.

El siguiente paso es importar el package de Google VR SDK for Unity. Lo importamos como todos los paquetes de Unity que descargamos: sobre la carpeta Assets de la ventana Project pulsamos con el botón derecho del ratón y elegimos Import Package -> Custom Package y seleccionamos el fichero descargado (GoogleVRForUnity.unitypackage.) en la ventana de selección.

Importación de Google VR SDK

A continuación se abrirá una ventana donde seleccionaremos qué partes del SDK queremos importar; en este caso desmarcaremos, dentro de la carpeta Plugins, las opciones iOS y x86 y pulsamos el botón Import.

Importación de Google VR SDK

Tras la importación nos aparecerá un mensaje indicando que son necesarias librerías adicionales. Pulsamos sobre Import Package para que las incluya.

Importación librereías adicionales de Google VR SDK

Al finalizar se abrirá una nueva ventana en la que sólo tenemos que pulsar el botón Import.

Ya tenemos nuestro entorno preparado para el desarrollo con Google Cardboard. Ahora necesitamos crear un escena: para no complicarnos mucho la vida, comenzaremos añadiendo un cubo 3D a nuestra simulación. Hasta ahora, la escena creada es normal de Unity; no tiene nada de realidad virtual.

Para que la escena funcione en unas Cardboard, simplemente basta con añadir el prefab GvrViewerMain que nos ofrece la librería de Google y que se encuentra en Assets / GoogleVR / Prefabs en nuestra ventana del proyecto:

Creación de una escena para Cardboard

Simplemente con esto ya tenemos nuestra aplicación preparada para visualizarse en las gafas de cartón de Google. No hay que hacer nada más. Si ahora pulsamos Play ya veremos el renderizado de los dos ojos, vista que podemos mover manteniendo pulsada la tecla Alt (girar la cabeza izquierda-derecha y arriba-abajo) o Control (girar la cabeza hacia los lados). El prefab GvrViewerMain se encarga de buscar nuestra cámara principal y añadirle la visualización esteroscópica.

Si ahora exportamos esta aplicación, podemos colocar nuestro móvil en unas Google Cardboard y disfrutar de cualquier escena creada en Unity en realidad virtual.

En futuras entradas del blog explicaré como utilizar un puntero para seleccionar objetos y realizar movimientos automáticos de cámara.