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:
- Complementos del proveedor de XR, incluidos Unity OpenXR: Android XR y las extensiones de Android XR para Unity
- Paquetes de asistencia de XR para agregar funciones adicionales a nivel de la aplicación
- Una guía de arquitectura de XR que describe la pila de tecnología de XR de Unity y los subsistemas de XR
- Configuración del proyecto de XR
- Cómo compilar y ejecutar apps de XR
- Orientación sobre gráficos de XR, incluida la canalización de renderización universal, la renderización estereoscópica, la renderización foveal, las regiones de renderización multivista y la sincronización de fotogramas de RV
- Orientación de audio XR, incluida la compatibilidad con espacializadores de audio
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.
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 |
---|---|---|---|
Android XR: AR Session
|
Android XR (Extensiones): Administración de sesiones
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Android XR: AR Face
|
Android XR: Seguimiento de rostros
|
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. |
|
Android XR: AR Raycast
|
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. |
|
Android XR: Ancla de RA |
Android XR (extensiones): Anchor
|
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. |
|
Android XR: Oclusión de RA
|
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. |
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
|
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 (se requiere el complemento de OpenXR)
|
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. |
|
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. |
|
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:
- Abre la ventana Configuración del proyecto (menú: Editar > Configuración del proyecto).
- Haz clic en XR Plug-in Management para expandir la sección de complementos (si es necesario).
- Selecciona OpenXR en la lista de complementos de XR.
- En la sección Interaction Profiles, selecciona el botón + para agregar un perfil.
- 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.
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.