← Índice ← Unity Finalizar →

Desarrollando para Meta Quest

Instalación

  1. Crear proyecto Universal Render Pipeline 3D.
  2. Cambiar a plataforma Android en File / Build Profiles.
  3. Instalar Unity OpenXR Meta desde Window / Package Manager (se instalan varios paquetes automáticamente, incluyendo XR Plugin Management y AR Foundation).
  4. Instalar XR Interaction Toolkit.
    1. Instalar Starter Assets.
    2. Opcionalmente, instalar también XR Device Simulator.

Configuración

  1. En Edit / Project Settings / XR Plugin Management:
    1. Activar OpenXR en Android, para compilar en las Quest.
    2. Activar XR Simulation en PC, para ver el simulador de XR.
  2. En Edit / Project Settings / XR Plugin Management / OpenXR:
    1. Añadir Oculus Touch Controller Profile a los perfiles.
    2. Activar todos los Meta Quest Support. Entre ellos está Meta Quest: Camera (Passthrough), que permite ver la habitación real a través de las gafas.
  3. En Edit / Project Settings / XR Plugin Management / Project Validation, Fix All para quitar todos los warnings y errores.
  4. En Edit / Project Settings / Quality, buscar el Render Pipeline Asset para móvil (por ejemplo, Mobile_RPAsset). Abrirlo y deshabilitar HDR en Quality. De lo contrario, puede no salir la imagen de la cámara en las gafas.
  5. En Player Settings (Edit / Project Settings / Player):
    1. Cambiar el nombre de compañía y de aplicación por algo significativo.
    2. En Identification, cambiar el nombre del paquete por algo significativo: com.nombre_alumn@.nombre_juego
  6. Para que la AR funcione correctamente en un proyecto URP: dentro de la ventana del proyecto, buscar los Renderers y añadirles a todos AR Background Renderer Feature.

Elementos AR generales

  1. En una escena URP, borrar todo excepto Directional Light.
  2. Añadir XR / AR Session a la escena (clic derecho en Hierarchy → XR / AR Session).
  3. Añadir el prefab XR Origin (XR Rig) a la escena, arrastrándolo desde la carpeta del proyecto Samples / XR Interaction Toolkit / [versión_instalada] / Starter Assets / Prefabs. Los scripts de AR irán dentro de este GameObject.
  4. En la cámara (XR Origin (XR Rig) / Camera Offset / Main Camera):
    1. En Environment, poner Background Type: Solid Color y bajar el alfa del color de fondo a 0. Si no, en las gafas se ve un fondo negro (o el cielo) en vez de la habitación.
    2. Añadir el componente AR Camera Manager (para que funcione el passthrough de las gafas).
    3. Añadir el componente AR Camera Background (para que funcione en el simulador).

Detección de planos

  1. En las Quest los planos no se detectan en directo: salen del escaneo de la habitación que se hace en las propias gafas (Configuración del espacio / Space Setup). Hay que hacerlo antes de probar la app, y la app necesita permiso para usar esos datos (ver «Permiso de escena», al final).
  2. Para utilizar los planos del entorno, añadir el componente AR Plane Manager al XR Origin (podemos personalizar el plano con un prefab).
    1. Para crear un prefab de plano, clic derecho sobre la ventana Hierarchy → XR / AR Default Plane. A ese plano, cambiarle el material (está dentro del componente Renderer) por el que queramos y convertirlo en prefab.
  3. Para anclar objetos en el mundo real o en planos detectados, añadir AR Anchor Manager al XR Origin. Después accedemos a él desde un script.
    1. Para crear un ancla en un objeto: anchorObj.AddComponent<ARAnchor>();
    2. Para crearla en un plano: arAnchorManager.AttachAnchor(plane, hitPose);
  4. Para hacer un raycast sobre los planos AR detectados, añadir AR Raycast Manager al XR Origin. Después accedemos a él desde un script.
    1. Para usarlo: arRaycastManager.Raycast(position, hits, TrackableType.PlaneWithinPolygon);
  5. Utilizar los inputs de los controladores para colocar los objetos virtuales en el mundo real.

Permiso de escena

  1. Para colocar elementos en el entorno (planos, anclas, raycast…), la app necesita el permiso com.oculus.permission.USE_SCENE, que da acceso a los datos de la habitación. Sin él, los managers de AR no hacen nada.
  2. En la escena, dejar desactivados AR Plane Manager y los demás managers que usen el entorno.
  3. Al arrancar la aplicación, pedir el permiso desde un script y, cuando el usuario lo conceda, activar los managers.
    1. Comprobar si ya está concedido: Permission.HasUserAuthorizedPermission("com.oculus.permission.USE_SCENE")
    2. Si no, pedirlo: Permission.RequestUserPermission("com.oculus.permission.USE_SCENE", callbacks); (con PermissionCallbacks para saber si se ha concedido o denegado).
    3. Ejemplo completo en la documentación de Unity OpenXR: Meta.