Oculus Quest

Nuestra primera aplicación con Unity y Oculus Quest

En este tutorial veremos como desarrollar nuestra primera aplicación para Oculus Quest usando, como no, Unity.

Estas gafas de R.V. se han convertido en unas de mis favoritas porque a pesar de tener un coste contenido la calidad y versatilidad que ofrecen es impresionante. No hace falta colocar sensores en la habitación como ocurre con las HTC Vive. Simplemente sacamos las gafas de la caja, cogemos los mandos y ¡a disfrutar!

Configurando las gafas

Lo primero que tenemos que hacer es preparar nuestro entorno para desarrollar. Lo primero será descargarnos en nuestro smartphone la aplicación de Oculus desde aquí, nos creamos nuestra cuenta y seguimos las instrucciones para configurar las gafas por primera vez (que no es el objetivo de este tutorial). Este segundo paso lo haremos siguiendo esta guía.

Una vez tengamos la aplicación instalada, la cuenta creada y nuestro dispositivo asociado en la misma, dentro de la configuración, nos aparecerá nuestro visor como conectado. Pulsamos en su nombre y elegimos la opción Más opciones de configuración. En el menú que se abre buscamos la opción Modo de desarrollador y lo activamos. Ya estamos preparados para empezar a programar.

Preparando el entorno

Este tutorial está hecho con la versión 2019.3.9f1 así que Lo primero que tenemos que hacer si no lo tenemos aun será instalar Unity fijándonos en añadir el soporte para Android y las Android SDK & NDK Tools y el OpenJDK.

Una vez instalado creamos nuestro primer proyecto. Le ponemos un nombre y pulsamos el botón Create.

Yo lo primero que suelo hacer es cambiar la plataforma de desarrollo así que vamos a File -> Build Settings y en la ventana que se abre seleccionamos Android como plataforma y cambiamos la compresión de texturas a ASTC. Finalmente pulsamos el botón Switch Platform.

Ahora tenemos que añadir el soporte para realidad virtual. Para ello antes nos íbamos a una opción de la sección Player Settings pero ahora se hace de la siguiente manera:

Nos vamos a Edit -> Project Settings y en la ventana que se abre seleccionamos XR Plugin Management y pulsamos el botón Install XR Plugin Management.

Esperamos a que termine el proceso y aparecerán, justo debajo de ese botón que acabamos de pulsar, una serie de pestañas. En ellas seleccionamos la de Android y marcamos la casilla Oculus.

Ahora tenemos que cambiar una serie de propiedades de nuestro proyecto para que funcione correctamente. Lo primero será ir al menú de Unity Edit -> Project Settings -> Player y cambiar las propiedades de Company Name, Product Name y Version.

Dentro de la misma ventana de Player desplegamos Other Settings y dentro de la sección Identification ponemos un identificador de paquete, un número de versión y seleccionamos el Minimum API Level que tiene que ser Android 6.0 ‘Marshmallow’ (API Level 23). También ponemos el Target API Level en Automatic.

Seguimos en esta misma ventana de Player y dentro del mismo apartado Other Settings pero en esta ocasión dentro de la sección Rendering, cambiamos la propiedad Color Space a Linear, desmarcamos (si no lo está ya) la casilla Auto Graphics API y marcamos Multithreaded Rendering.

¡Pues ya está listo! (o casi). Si ahora cargamos cualquier escena ya podríamos visualizarla en el Oculus Quest.

Por ejemplo podemos situar nuestra cámara en la posición 0,0,-10 y un cubo en la posición 0,0,0.

Ahora lo primero que tenemos que hacer es conectar nuestro Oculus Quest al PC mediante un cable USB tipo C. Si todo va correctamente lo deberíamos de ver como un dispositivo de Windows.

Volvemos a Unity y si accedemos al menú File -> Build Settings dentro de la opción Run Device debería aparecer en el desplegable nuestro Oculus Quest. Si esto no ocurre deberemos repasar los pasos iniciales de este tutorial y asegurarnos de que esté en modo desarrollador y sea detectado correctamente por Windows.

Si ahora pulsamos Build And Run nos pedirá un nombre para generar el apk (no olvidemos que es una aplicación Android) y la instalará directamente en las gafas.

Si ahora nos las ponemos veremos el cubo delante de nosotros pero si movemos la cabeza ese cubo se moverá con ella con lo que realmente no estamos ante un sistema inmersivo.

Para ello aun tenemos que hacer alguna cosilla más. Lo primero es instalarnos el Oculus Integration Package. Desde Unity vamos a la Asset Store y buscamos Oculus. Seleccionamos el asset Oculus Integration, lo descargamos y lo importamos en nuestro proyecto.

Una vez descomprimido se abrirá la ventana siguiente y pulsamos el botón Import.

Este proceso puede tardar un buen rato así que esperamos a que termine. Al finalizar es probable que nos pregunte si queremos actualizar las Oculus Utilities Plugin, respondemos que si.

Luego nos pregunta si queremos reiniciar el editor de Unity. Pulsamos en Restart.

Una nueva pregunta, si queremos actualizar el Spatializer Plugin. Pulsamos el botón Upgrade.

Y por último nuevamente si queremos reiniciar Unity. Pulsamos el botón Restart.

Es posible que en este punto nos pregunte si queremos guardar la escena. Si aun no lo hemos hecho respondemos que Si. Unity se cerrará y se abrirá de nuevo y ahora si ya tendremos la utilidades de Oculus añadidas a nuestro proyecto.

Veremos que en la ventana del proyecto se ha añadido una nueva carpeta Oculus con varias subcarpetas, una de las cuales se llama VR. Dentro de esta una carpeta Scenes, con escenas de ejemplo y otra llamada Prefabs.

Arrastramos el prefab llamado OVRCameraRig a nuestra escena y lo situamos en la misma posición que la cámara. Ahora como tenemos 2 cámaras en la escena eliminamos la primera de ellas, la llamada Main Camera.

Nuestra escena quedará como en la siguiente imagen.

Si ahora volvemos a File -> Build Settings y pulsamos el botón Build and Run nuestra aplicación se compilará y se instalará en el Oculus y, ahora sí, tendremos una aplicación inmersiva donde se reflejarán los movimientos de nuestra cabeza.