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:
- Complementos de proveedores de XR, incluidos Unity OpenXR: Android XR y las extensiones de Android XR para Unity
- Paquetes de compatibilidad con 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 foveada, las regiones de renderización multivista y el tiempo de fotogramas de RV
- Guía de audio para XR, incluida la compatibilidad con espacializadores de audio
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.
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 |
---|---|---|---|
Android XR: Sesión de RA
|
Android XR (Extensiones): Administración de sesiones
|
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. |
|
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. |
|
Android XR: Cámara de RA |
N/A |
Esta función admite la estimación de luz y la transferencia de pantalla completa. |
|
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. |
|
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. |
|
Android XR: Cara de RA
|
Android XR: Seguimiento de rostros
|
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. |
|
Android XR: Raycast de RA
|
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. |
|
Android XR: Anclaje de RA |
Android XR (Extensiones): Anclaje
|
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. |
|
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 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. |
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
|
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 (se requiere el complemento OpenXR)
|
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. |
|
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. |
|
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:
- Abre la ventana Project Settings (menú: Edit > Project Settings).
- 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 manual
El complemento OpenXR proporciona la interacción con la mano (XR_EXT_hand_interaction
) y puedes exponer el
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.
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.