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, dado que la compatibilidad de Unity con Android XR se basa 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 la RE en Unity
    • Desarrolla y publica 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 e 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 las versiones más recientes de Unity 6. Esto incluye plantillas de realidad mixta que usan XR Interaction Toolkit, AR Foundation y OpenXR Plugin para ayudarte a comenzar rápidamente. Cuando compiles apps con Unity para Android XR, te recomendamos que uses la canalización de renderización universal (URP) como tu canalización de renderización y Vulkan como tu API de Graphics. Estas funciones te permiten aprovechar algunas de las funciones de gráficos 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 RE en Unity

Si no conoces Unity ni el desarrollo de 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:

Desarrolla y publica apps para Android

Unity proporciona documentación detallada para desarrollar, compilar y publicar contenido para Android, que abarca temas como los permisos de Android en Unity, la configuración de compilación de Android, la compilación de tu app para Android y la publicación en Google Play.

Paquetes de Unity para Android XR

Existen dos paquetes que brindan compatibilidad para compilar apps de Unity para Android XR. Ambos paquetes son complementos de proveedores de XR que se pueden habilitar a través del paquete XR Plug-in Management de Unity. El administrador de complementos de XR agrega la opción Project Settings para administrar y ofrecer ayuda con la carga, la inicialización, la configuración y la compatibilidad de compilación para los complementos de XR. Para permitir que tu app ejecute funciones de OpenXR en 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 del complemento de XR de Unity

Unity OpenXR Android XR

El paquete de Unity OpenXR Android XR es un complemento de XR que agrega compatibilidad con Android XR a Unity. Este complemento de XR proporciona la mayor parte 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 los desarrolladores que desean crear experiencias de RA o de realidad mixta. Proporciona la interfaz para las funciones de RA, pero no implementa ninguna función por sí misma. El paquete de Unity OpenXR Android XR proporciona la implementación. Para comenzar a usar este paquete, consulta el manual del paquete, 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 Unity OpenXR Android XR y, además, incluyen funciones adicionales para ayudarte a compilar experiencias inmersivas. Se puede usar solo o junto con el paquete de Unity OpenXR Android XR.

Para comenzar a usar este paquete, sigue nuestra guía de configuración del proyecto o la guía de inicio rápido para importar las 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 de Unity OpenXR: Android XR y el paquete de Android XR Extensions for Unity. 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 función de las extensiones de Android XR para Unity

Casos de uso y comportamiento esperado

Sesión de RA

Android XR: AR Session

  • La configuración de funciones incluye la opción 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 AR Session para ese paquete. Puedes habilitar ambos conjuntos de funciones al mismo tiempo. Las funciones individuales controlarán los conflictos según corresponda.

Rastreo de dispositivos

N/A

N/A

El seguimiento del dispositivo 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 del dispositivo y transforma los objetos rastreables en el sistema de coordenadas de Unity con su componente XROrigin y la jerarquía de GameObject con una cámara y un TrackedPoseDriver.

Cámara

Android XR: Cámara de RA

N/A

Esta función proporciona compatibilidad con la estimación de luz y la visualización a través de pantalla completa.

Detección de planos

Android XR: AR Plane

Android XR (extensiones): Plano

Estas dos funciones son idénticas. Usa una u otra. Android XR (extensiones): Se incluye el plano para que los desarrolladores puedan usar las funciones de Android XR (extensiones): Seguimiento de objetos y anclajes persistentes sin tener que depender del paquete de Unity OpenXR Android XR. En el futuro, se quitará Android XR (Extensions): Plane y se reemplazará por Android XR: AR Anchor.

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, y se usa en combinación con una biblioteca de objetos de referencia.

Seguimiento de rostro

Android XR: AR Face

  • Solo XR_ANDROID_eye_tracking
  • No hay seguimiento facial

Android XR: Seguimiento de rostros

  • XR_ANDROID_face_tracking

La compatibilidad con los ojos del avatar se proporciona a través de la función Android XR: AR Face. Acceder a las expresiones faciales de un usuario a través de la función Android XR: Face Tracking Estas dos funciones se pueden usar juntas.

Ray casts

Android XR: AR Raycast

  • Ancla de avión
  • Anclaje de profundidad

N/A

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

Anclajes

Android XR: Ancla de RA

Android XR (extensiones): Anchor

  • La configuración de funciones incluye la persistencia.

Ambas funciones incluyen compatibilidad con anclajes espaciales y anclajes de plano. Usa una u otra. Para los anclajes persistentes, usa Android XR (extensiones): Anchor. En el futuro, se quitará Android XR (Extensions): 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 oscurecido detrás de los objetos del 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 capas 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., cuadrilátero, 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 se lee desde el GameObject de Unity.

Renderización foveal

Renderización foveal (se requiere el complemento de OpenXR)

  • Admite la renderización foveal basada en el seguimiento ocular: El área de mayor resolución se centra en el lugar donde mira el usuario, lo que la hace menos evidente para él.

Foveation (heredado)

El renderizado foveal permite acelerar el renderizado disminuyendo la resolución de las áreas de la visión periférica del usuario. La función de renderización foveal de Unity solo es compatible con las apps que usan URP y Vulkan. La función Foveation (Legacy) en las extensiones de XR de Android para Unity también admite la canalización de renderización integrada y OpenGL ES. Te recomendamos que uses la función de renderización foveal de Unity cuando sea posible y ten en cuenta que se recomiendan URP y Vulkan cuando compiles para Android XR.

Unbounded Reference Space

N/A

Android XR: Espacio de referencia no delimitado

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

Modo de combinación del entorno

N/A

Modo de combinación del entorno

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

Entrada e interacción

Android XR admite la entrada natural multimodal.

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

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 promueve 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 específicas de XR. Para establecer un perfil de interacción, sigue estos pasos:

  1. Abre la ventana Configuración del proyecto (menú: Editar > Configuración del proyecto).
  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 con la mano

La interacción con las manos (XR_EXT_hand_interaction) se proporciona a través del complemento de OpenXR, y puedes exponer el diseño del dispositivo <HandInteraction> en el sistema de entrada de Unity habilitando el perfil de interacción con las manos. Usa este perfil de interacción para la entrada manual compatible con las cuatro poses de acción definidas por OpenXR: "pellizcar", "tocar", "apuntar" y "agarre". Si necesitas más funciones de interacción o seguimiento de manos, consulta XR Hands en esta página.

Interacción con la mirada

El complemento de OpenXR proporciona la interacción con la mirada (XR_EXT_eye_gaze_interaction), y puedes usar este diseño para recuperar los datos de la pose de los ojos (posición y rotación) que devuelve 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 con el controlador

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

Interacción del mouse

El Perfil de interacción del mouse de Android XR (XR_ANDROID_mouse_interaction) se proporciona a través de las extensiones de Android XR para Unity. Expone un diseño de dispositivo <AndroidXRMouse> en el Sistema de entrada de Unity.

Interacción de la postura de la palma

El complemento de OpenXR proporciona compatibilidad con la interacción de la pose de la palma (XR_EXT_palm_pose), que expone el diseño de <PalmPose> dentro del sistema de entrada de Unity. La pose de la palma no está diseñada para ser una alternativa a las extensiones o los paquetes que realizan el seguimiento de manos 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 postura de la palma consta de la posición y la orientación de la palma.

Manos en RE

El paquete XR Hands te permite acceder a los datos de monitoreo de manos (con XR_EXT_hand_tracking y XR_FB_hand_tracking_aim) y proporciona un wrapper para convertir los datos de las articulaciones de las manos del monitoreo de manos en poses de entrada. Para usar las funciones que proporciona el paquete XR Hands, habilita las funciones Hand Tracking Subsystem 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 sobre la pose o las articulaciones de las manos, o bien 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 las manos: una malla de mano y un visualizador de elementos prefabricados.

Malla de la mano

El paquete de Unity de Android XR contiene una función de malla de mano que proporciona acceso a XR_ANDROID_hand_mesh extension. La función Hand Mesh 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. Esta función se diseñó para proporcionar una malla personalizada que represente la geometría real de las manos del usuario para la visualización.

Prefab de manos para RE

El paquete XR Hands contiene un ejemplo llamado Visualizador de manos, que incluye manos izquierda y derecha completamente equipadas para renderizar una representación adecuada para el contexto de las manos del usuario.

Gestos del sistema

Android XR incluye un gesto del sistema para abrir un menú en el que los usuarios pueden volver, abrir el selector o ver un resumen de las apps en ejecución. El usuario puede activar este menú del sistema con un pellizco con 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 cuando un usuario realiza acciones específicas, como interactuar con este menú de navegación del sistema. Verificar AimFlags, SystemGesture y DominantHand te permite saber cuándo se realiza esta acción del sistema. Para obtener más información sobre AimFlags, consulta la documentación de Enum MetaAimFlags de Unity.

XR Interaction Toolkit

El paquete de XR Interaction Toolkit es un sistema de interacción de alto nivel basado en componentes para crear experiencias de RV y RA. Proporciona un framework que hace que las interacciones en 3D y de IU estén disponibles a partir de los eventos de entrada de Unity. Admite tareas de interacción, como respuesta táctil, respuesta visual y locomoción.


OpenXR™ y el logotipo de OpenXR son marcas comerciales propiedad de The Khronos Group Inc. y están registradas como marcas comerciales en China, la Unión Europea, Japón y el Reino Unido.