Cómo desarrollar con Unity para Android XR

En esta guía, se proporciona una descripción general del desarrollo con Unity para Android XR. Android XR funciona con las herramientas y funciones conocidas que esperas de Unity. Además, como la compatibilidad de Unity con Android XR se compiló en OpenXR, muchas de las funciones que se describen en la descripción general de OpenXR también son compatibles con Unity.

Sigue esta guía para obtener información sobre lo siguiente:

  • Compatibilidad de Unity con Android XR
    • Conceptos básicos de Unity XR
    • Cómo desarrollar y publicar apps para Android XR
    • Paquetes de Unity para Android XR
      • Unity OpenXR: Paquete de Android XR
      • Extensiones de Android XR para Unity
      • Consideraciones sobre las funciones y la compatibilidad
  • Entrada y interacción

Compatibilidad de Unity con Android XR

Cuando compilas apps de Unity para Android XR, puedes aprovechar las herramientas y capacidades de realidad mixta en Unity 6. Esto incluye plantillas de realidad mixta que usan el kit de herramientas de interacción de XR, AR Foundation y el complemento OpenXR para ayudarte a comenzar rápidamente. Cuando compilas apps con Unity para Android XR, te recomendamos la canalización universal de renderizaciones (URP) como canalización de renderización y Vulkan como API de gráficos. Estas funciones te permiten aprovechar algunas de las funciones gráficas más recientes de Unity, que solo son compatibles con Vulkan. Revisa la guía de configuración del proyecto para obtener más información sobre cómo configurar estos parámetros.

Conceptos básicos de XR de Unity

Si es la primera vez que desarrollas contenido para Unity o XR, puedes consultar el Manual de XR de Unity para comprender los conceptos y flujos de trabajo básicos de XR. El manual de XR contiene información sobre lo siguiente:

Desarrollo y publicación de apps para Android

Unity proporciona documentación detallada para desarrollar, compilar y publicar apps para Android, que abarca temas como Permisos de Android en Unity, Configuración de compilación de Android, Cómo compilar tu app para Android y Cómo publicar en Google Play.

Paquetes de Unity para Android XR

Existen dos paquetes que proporcionan compatibilidad para compilar apps de Unity para Android VR. Ambos paquetes son complementos de proveedores de XR, que se pueden habilitar a través del paquete de administración de complementos de XR de Unity. El administrador de complementos de XR agrega la Configuración del proyecto para administrar y ofrecer ayuda con la carga, la inicialización, la configuración y la compatibilidad de compilación para complementos de XR. Para permitir que tu app ejecute funciones de OpenXR durante el tiempo de ejecución, el proyecto debe tener estas funciones habilitadas a través del administrador de complementos.

En esta imagen, se muestra un ejemplo de dónde puedes habilitar estos grupos de funciones a través del editor de Unity.

Ejemplo de la pantalla de administración de complementos de Unity XR

Unity OpenXR Android XR

El paquete de XR de Android OpenXR para Unity es un complemento de XR para agregar compatibilidad con XR de Android a Unity. Este complemento de XR proporciona la mayoría de la compatibilidad con Android XR para Unity y habilita la compatibilidad con dispositivos Android XR para proyectos de AR Foundation. AR Foundation está diseñado para desarrolladores que desean crear experiencias de RA o realidad mixta. Proporciona la interfaz para las funciones de RA, pero no implementa ninguna función. El paquete de Android XR de OpenXR de Unity proporciona la implementación. Para comenzar a usar este paquete, consulta el manual, que contiene una guía de introducción.

Extensiones de Android XR para Unity

Las Extensiones de Android XR para Unity complementan el paquete de Android XR de OpenXR de Unity y, además, incluyen funciones adicionales para ayudarte a crear experiencias envolventes. Se puede usar solo o junto con el paquete de XR de Android de OpenXR de Unity.

Para comenzar a usar este paquete, sigue nuestra guía de configuración de proyectos o la guía de inicio rápido para importar extensiones de Android XR para Unity.

Consideraciones sobre las funciones y la compatibilidad

En la siguiente tabla, se describen las funciones compatibles con el paquete Unity OpenXR: Android XR y el paquete de extensiones de Android XR para Unity, y se puede usar para determinar qué paquete contiene las funciones que necesitas y las consideraciones de compatibilidad.

Función

Unity OpenXR: Cadena de funciones de Android XR

Cadena de funciones de Extensiones de Android XR para Unity

Casos de uso y comportamiento esperado

Sesión de RA

Android XR: Sesión de RA

  • La configuración de funciones incluye Optimize Buffer Discards (Vulkan)

Android XR (Extensiones): Administración de sesiones

  • La configuración de funciones incluye Subsampling (Vulkan) y URP SpaceWarp (Vulkan).

Para usar las funciones de cualquiera de los paquetes, debes habilitar la función de sesión de RA para ese paquete. Puedes habilitar ambos conjuntos de atributos al mismo tiempo. Los atributos individuales controlarán los conflictos según corresponda.

Seguimiento de dispositivos

N/A

N/A

El seguimiento de dispositivos se usa para hacer un seguimiento de la posición y la rotación del dispositivo en el espacio físico. El GameObject de XR Origin controla automáticamente el seguimiento de dispositivos y transforma los elementos rastreables en el sistema de coordenadas de Unity a través de su componente XROrigin y la jerarquía de GameObject con una cámara y TrackedPoseDriver.

Cámara

Android XR: Cámara de RA

N/A

Esta función admite la estimación de luz y la transferencia de pantalla completa.

Detección de planos

Android XR: Plano de RA

Android XR (Extensiones): Plano

Estas dos funciones son idénticas, así que usa una o la otra. Android XR (Extensiones): Se incluye el plano para que los desarrolladores puedan usar las funciones de seguimiento de objetos y anclas persistentes de Android XR (Extensiones) sin tener que depender del paquete de Android XR de OpenXR de Unity. En el futuro, se quitará Android XR (Extensiones): Plano en favor de Android XR: Anclaje de RA.

Seguimiento de objetos

N/A

Android XR (Extensiones): Seguimiento de objetos

Esta función proporciona compatibilidad para detectar y hacer un seguimiento de objetos en el entorno físico, que se usa en combinación con una biblioteca de objetos de referencia.

Rastreo facial

Android XR: Cara de RA

  • Solo XR_ANDROID_avatar_eyes
  • Sin seguimiento de rostros

Android XR: Seguimiento de rostros

  • XR_ANDROID_face_tracking

La compatibilidad con los ojos de avatar se proporciona a través de la función Android XR: AR Face. Accede a las expresiones faciales de un usuario a través de la función de seguimiento facial de Android XR. Si lo deseas, puedes usar estas dos funciones en conjunto.

Ray casts

Android XR: Raycast de RA

  • Anclaje de plano
  • Anclaje de profundidad

N/A

Esta función te permite proyectar un rayo y calcular la intersección entre ese rayo y los elementos rastreables de plano o de profundidad que se detectan en el entorno físico.

Anclajes

Android XR: Anclaje de RA

Android XR (Extensiones): Anclaje

  • La configuración de funciones incluye la persistencia.

Ambas funciones incluyen compatibilidad con anclas espaciales y anclas de plano. Usa una función o la otra. Para anclas persistentes, usa Android XR (Extensiones): Anchor. En el futuro, se quitará Android XR (Extensiones): Anchor y todas las funciones de Anchor estarán en Android XR: AR Anchor.

Oclusión

Android XR: Oclusión de RA

  • Profundidad del entorno

N/A

La oclusión permite que el contenido de realidad mixta de tu app aparezca oculto o parcialmente oculto detrás de objetos en el entorno físico.

Métricas de rendimiento

Métricas de rendimiento de Android XR

N/A

Usa esta función para acceder a las métricas de rendimiento de los dispositivos Android XR.

Capas de composición

Compatibilidad con la capa de composición (se requieren el complemento OpenXR y la capa de composición de XR)

Android XR: Capa de composición de transferencia

  • XR_ANDROID_composition_layer_passthrough_mesh

Usa la compatibilidad con capas de composición de Unity para crear capas de composición básicas (p.ej., cuadrángulo, cilindro, proyección). Android XR: La capa de composición de transferencia se puede usar para crear una capa de transferencia con una malla personalizada que lee desde el GameObject de Unity.

Renderización foveada

Renderización foveada (se requiere el complemento OpenXR)

  • Admite renderización foveada con seguimiento ocular: el área de mayor resolución se centra donde el usuario está mirando, lo que lo hace menos evidente para el usuario.

Foveación (heredada)

La renderización foveada permite acelerar la renderización reduciendo la resolución de las áreas en la visión periférica del usuario. La función de renderización foveada de Unity solo es compatible con apps que usan URP y Vulkan. La función Foveation (heredada) en las Extensiones de Android XR para Unity también admite BiRP y GLES. Te recomendamos que uses la función de renderización foveada de Unity siempre que sea posible. Ten en cuenta que se recomiendan la URP y Vulkan cuando se compila para Android XR.

Espacio de referencia ilimitado

N/A

Android XR: Espacio de referencia sin límites

Esta función establece el modo de origen de seguimiento de XRInputSubsystem en Sin límites. Sin límites indica que XRInputSubsystem realiza un seguimiento de todos los InputDevices en relación con un ancla mundial, que puede cambiar.

Modo de combinación de entornos

N/A

Modo de combinación de entorno

Esta función te permite configurar el modo de combinación de entornos de XR, que controla cómo se combinan las imágenes virtuales con el entorno del mundo real cuando se habilita la transferencia.

Entrada y interacción

Android XR admite la entrada natural multimodal.

Además del seguimiento de ojos y manos, también se admiten periféricos, como controles de 6DoF, mouse y teclado físico. Esto significa que se espera que las apps para Android XR admitan la interacción manual y no se puede suponer que todos los dispositivos vendrán con controles.

Perfiles de interacción

Unity usa el perfil de interacción para administrar la forma en que tu aplicación de XR se comunica con varios dispositivos y plataformas de XR. Estos perfiles establecen las entradas y salidas esperadas para diferentes configuraciones de hardware, lo que garantiza la compatibilidad y la funcionalidad coherente en una variedad de plataformas. Si habilitas los perfiles de interacción, puedes asegurarte de que tu aplicación de XR funcione correctamente con diferentes dispositivos, mantenga una asignación de entrada coherente y tenga acceso a funciones de XR específicas. Para configurar un perfil de interacción, sigue estos pasos:

  1. Abre la ventana Project Settings (menú: Edit > Project Settings).
  2. Haz clic en XR Plug-in Management para expandir la sección de complementos (si es necesario).
  3. Selecciona OpenXR en la lista de complementos de XR.
  4. En la sección Interaction Profiles, selecciona el botón + para agregar un perfil.
  5. Selecciona el perfil que deseas agregar de la lista.

Interacción manual

El complemento OpenXR proporciona la interacción con la mano (XR_EXT_hand_interaction) y puedes exponer el diseño del dispositivo en el sistema de entrada de Unity habilitando el perfil de interacción con la mano. Usa este perfil de interacción para la entrada de mano compatible con las cuatro posiciones de acción definidas por OpenXR: "pellizco", "tocar", "apuntar" y "agarrar". Si necesitas funciones adicionales de interacción o seguimiento de manos, consulta XR Hands en esta página.

Interacción con la mirada

El complemento OpenXR proporciona la interacción con la mirada (XR_EXT_eye_gaze_interaction) y puedes usar este diseño para recuperar los datos de posición de los ojos (posición y rotación) que muestra la extensión. Obtén más información sobre la interacción con la mirada en la guía de entrada de OpenXR.

Interacción del controlador

Android XR admite el perfil de controlador de Oculus Touch para controladores de 6DoF. El complemento OpenXR proporciona ambos perfiles.

Interacción del mouse

Las extensiones de Android XR para Unity proporcionan el perfil de interacción del mouse de Android XR (XR_ANDROID_mouse_interaction). Expone un diseño de dispositivo <AndroidXRMouse> en el sistema de entrada de Unity.

Interacción con la pose de la palma

El complemento OpenXR admite la interacción con la posición de la palma (XR_EXT_palm_pose), que expone el diseño <PalmPose> dentro del sistema de entrada de Unity. La posición de la palma no está diseñada para ser una alternativa a las extensiones o paquetes que realizan el seguimiento de la mano para casos de uso más complejos. En cambio, se puede usar para colocar contenido visual específico de la app, como imágenes de avatares. La posición de la palma consta de la posición y la orientación de la palma.

Manos de XR

El paquete XR Hands te permite acceder a los datos de seguimiento de manos (XR_EXT_hand_tracking y XR_FB_hand_tracking_aim) y proporciona un wrapper para convertir los datos de las articulaciones de la mano del seguimiento de manos en poses de entrada. Para usar las funciones que proporciona el paquete XR Hands, habilita las funciones Subsistema de seguimiento de manos y Meta Hand Tracking Aim OpenXR.

Ejemplo que muestra cómo habilitar el seguimiento de manos

El paquete de manos de XR puede ser útil si necesitas datos más detallados de la posición o las articulaciones de la mano, o cuando necesitas trabajar con gestos personalizados.

Para obtener más detalles, consulta la documentación de Unity para configurar XR Hands en tu proyecto.

Elige una forma de renderizar las manos

Android XR admite dos formas de renderizar manos: una malla de mano y un visualizador de prefab.

Malla manual

El paquete de Unity para Android XR contiene una función de malla de mano que proporciona acceso a XR_ANDROID_hand_mesh extension. La función de malla de mano proporciona mallas para las manos del usuario. La malla de la mano contiene vértices de triángulos que representan la geometría de una mano. El objetivo de esta función es proporcionar una malla personalizada que represente la geometría real de las manos del usuario para la visualización.

Prefabricado de manos de XR

El paquete XR Hands contiene una muestra llamada Visualizador de manos, que contiene manos izquierda y derecha completamente ajustadas para renderizar una representación adecuada al contexto de las manos del usuario.

Gestos del sistema

Android XR incluye un gesto del sistema para abrir un menú que permite a los usuarios volver, abrir el selector o obtener una descripción general de las aplicaciones que se están ejecutando. El usuario puede activar este menú del sistema con un pellizco de la mano dominante.

Cuando el usuario interactúa con el menú de navegación del sistema, la aplicación solo responderá a los eventos de seguimiento de la cabeza. El paquete XR Hands puede detectar cuándo un usuario realiza acciones específicas, como interactuar con este menú de navegación del sistema. Si verificas AimFlags SystemGesture y DominantHand, te informará cuando se realice esta acción del sistema. Para obtener más información sobre AimFlags, consulta la documentación de Enum MetaAimFlags de Unity.

Kit de herramientas de interacción de XR

El paquete de kit de herramientas de interacción XR es un sistema de interacción de alto nivel basado en componentes para crear experiencias de RV y RA. Proporciona un framework que pone a disposición las interacciones 3D y de la IU desde los eventos de entrada de Unity. Admite tareas de interacción, como respuestas táctiles, respuestas visuales y locomoción.