← Índice ← Introducción Meta Quest →

Desarrollando la App en Unity

Instalación

  1. Crear proyecto Universal Render Pipeline 3D.
  2. Cambiar a plataforma Android en File / Build Profiles.
  3. Instalar Google ARCore XR Plugin desde Window / Package Manager (se instalan varios paquetes automáticamente, incluyendo XR Plugin Management y AR Foundation).

Configuración

  1. En Edit / Project Settings / XR Plugin Management:
    1. Activar ARCore para Android.
    2. Activar XR Simulation para PC (para poder usar el simulador).
  2. En Player Settings (Edit / Project Settings / Player):
    1. En Resolution & Presentation, quitar portrait / portrait upside down.
    2. Cambiar el nombre de compañía y de aplicación por algo significativo.
    3. En Other Settings, quitar Auto Graphics API y eliminar Vulkan.
    4. En Identification, cambiar el nombre del paquete por algo significativo: com.nombre_alumn@.nombre_juego
    5. Cambiar Minimum API Level a 7.1 (API level 25) o superior.
    6. Cambiar Scripting Backend a IL2CPP y Target Architectures a ARM64.
  3. Algunas de estas se resuelven solas desde el apartado «Project Validation» de Edit / Project Settings / XR Plugin Management.
  4. 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.
  5. Abrir el simulador desde Window / XR / AR Foundation / XR Environment.
    1. Para instalar el resto de entornos, clicar en DefaultSimulationEnvironment / Import Sample Environments. Hacer clic y esperar: tarda un poco en iniciar la importación.

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 XR / XR Origin a la escena. Los scripts de AR irán dentro de este GameObject.

Detección de imágenes

  1. Crear la librería de imágenes:
    1. Clic derecho en la ventana del proyecto → Create / XR / Reference Image Library.
    2. Rellenarla con imágenes (máx. 1000).
    3. Opcionalmente, indicar el tamaño que tendrán en el mundo real y si se quiere mantener la imagen virtual sobre la imagen que se detecta.
  2. Comprobar si las imágenes se van a detectar bien con arcoreimg, una herramienta de línea de comandos que viene con el paquete de ARCore de Unity. Puntúa cada imagen de 0 a 100 (Google recomienda al menos 75) y solo admite PNG y JPEG.
    1. Navegar hasta la carpeta de la herramienta, dentro del proyecto de Unity: C:\Users\[tu_usuario]\[ruta_proyecto_unity]\Library\PackageCache\com.unity.xr.arcore@[versión]\Tools~\Windows
    2. Clic derecho dentro de la carpeta → Abrir en Terminal.
    3. Escribir el comando con la ruta de la imagen: .\arcoreimg.exe eval-img --input_image_path="C:\ruta\a\imagen.png"
  3. Para detectar imágenes, añadir AR Tracked Image Manager al XR Origin.
    1. Añadir la librería que acabamos de crear.
    2. Si tenemos imágenes móviles, cambiar el número máximo de marcadores (imágenes) a detectar.
    3. Podemos usar un prefab por defecto para todos los marcadores, o dejarlo en blanco y añadir un script propio que nos permita asociar un prefab diferente a cada imagen.

Detección de planos

  1. Si queremos detectar la nube de puntos, añadir el componente AR Point Cloud Manager al XR Origin (podemos personalizar la nube de puntos con un prefab).
    1. Para crear un prefab, clic derecho sobre la ventana Hierarchy → XR / AR Default Point Cloud. Arrastrarlo al proyecto para convertirlo en prefab.
  2. Para detectar planos, 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);

Detección de rostros

  1. En la cámara de la escena (XR Origin / Camera Offset / Main Camera), cambiar en AR Camera Manager → Facing Direction: User, para activar la cámara frontal.
  2. Añadir el componente AR Face Manager al XR Origin (podemos personalizar la cara por defecto con un prefab).
    1. Para crear un prefab de cara, clic derecho sobre la ventana Hierarchy → XR / AR Default Face. Se le puede cambiar el material y convertirlo en prefab.
    2. Para crear máscaras o elementos que se ajusten a la cara, ARCore ofrece en su GitHub dos plantillas: el modelo canonical_face_mesh.fbx (la malla de la cara con sus zonas) y la textura canonical_face_texture.psd (para ver cómo encaja un dibujo con los ojos, la nariz y la boca).
    3. Maximum Face Count = 1 (limitación de ARCore).