← Índice
← Introducción
Meta Quest →
Instalación
- Crear proyecto Universal Render Pipeline 3D.
- Cambiar a plataforma Android en File / Build Profiles.
- Instalar Google ARCore XR Plugin desde Window / Package Manager (se instalan varios paquetes automáticamente, incluyendo XR Plugin Management y AR Foundation).
Configuración
- En Edit / Project Settings / XR Plugin Management:
- Activar ARCore para Android.
- Activar XR Simulation para PC (para poder usar el simulador).
- En Player Settings (Edit / Project Settings / Player):
- En Resolution & Presentation, quitar portrait / portrait upside down.
- Cambiar el nombre de compañía y de aplicación por algo significativo.
- En Other Settings, quitar Auto Graphics API y eliminar Vulkan.
- En Identification, cambiar el nombre del paquete por algo significativo:
com.nombre_alumn@.nombre_juego
- Cambiar Minimum API Level a 7.1 (API level 25) o superior.
- Cambiar Scripting Backend a IL2CPP y Target Architectures a ARM64.
- Algunas de estas se resuelven solas desde el apartado «Project Validation» de Edit / Project Settings / XR Plugin Management.
- 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.
- Abrir el simulador desde Window / XR / AR Foundation / XR Environment.
- 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
- En una escena URP, borrar todo excepto Directional Light.
- Añadir XR / AR Session a la escena (clic derecho en Hierarchy → XR / AR Session).
- Añadir XR / XR Origin a la escena. Los scripts de AR irán dentro de este GameObject.
Detección de imágenes
- Crear la librería de imágenes:
- Clic derecho en la ventana del proyecto → Create / XR / Reference Image Library.
- Rellenarla con imágenes (máx. 1000).
- 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.
- 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.
- 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
- Clic derecho dentro de la carpeta → Abrir en Terminal.
- Escribir el comando con la ruta de la imagen:
.\arcoreimg.exe eval-img --input_image_path="C:\ruta\a\imagen.png"
- Para detectar imágenes, añadir AR Tracked Image Manager al XR Origin.
- Añadir la librería que acabamos de crear.
- Si tenemos imágenes móviles, cambiar el número máximo de marcadores (imágenes) a detectar.
- 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
- 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).
- Para crear un prefab, clic derecho sobre la ventana Hierarchy → XR / AR Default Point Cloud. Arrastrarlo al proyecto para convertirlo en prefab.
- Para detectar planos, añadir el componente AR Plane Manager al XR Origin (podemos personalizar el plano con un prefab).
- 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.
- 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.
- Para crear un ancla en un objeto:
anchorObj.AddComponent<ARAnchor>();
- Para crearla en un plano:
arAnchorManager.AttachAnchor(plane, hitPose);
- 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.
- Para usarlo:
arRaycastManager.Raycast(position, hits, TrackableType.PlaneWithinPolygon);
Detección de rostros
- 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.
- Añadir el componente AR Face Manager al XR Origin (podemos personalizar la cara por defecto con un prefab).
- 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.
- 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).
- Maximum Face Count = 1 (limitación de ARCore).