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, y como 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 Unity XR
- Desarrollo y publicación de apps para Android XR
- Paquetes de Unity para Android XR
- Unity OpenXR: Paquete de Android XR
- Extensiones de Android XR para Unity
- Consideraciones sobre funciones y 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 el XR Interaction Toolkit, AR Foundation y el OpenXR Plugin para ayudarte a comenzar rápidamente. Cuando compiles apps con Unity para Android XR, te recomendamos que uses Universal Render Pipeline (URP) como tu canalización de renderización y Vulkan como tu API de gráficos. Estas funciones te permiten aprovechar algunas de las funciones de gráficos de Unity, que solo son compatibles con Vulkan. Consulta 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 Unity XR
Si eres nuevo en Unity o en 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 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 Unity XR y los subsistemas de XR
- Configuración del proyecto de XR
- Compilación y ejecución de apps de XR
- Guía de gráficos de XR, que incluye Universal Render Pipeline, renderización estereoscópica, renderización foveada, regiones de renderización de varias vistas y sincronización de fotogramas de RV
- Guía de audio de XR, que incluye compatibilidad con espacializadores de audio
Desarrolla y publica apps para Android
Unity proporciona documentación detallada para desarrollar, compilar y publicar 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 entrega a Google Play.
Paquetes de Unity para Android XR
Hay 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 de administración de complementos de XR de Unity package. 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 los complementos de XR. Para permitir que tu app ejecute funciones de OpenXR en el tiempo de ejecución, el proyecto debe tener habilitadas estas funciones 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 Unity OpenXR Android XR es un complemento de XR para agregar 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 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 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 Unity OpenXR Android XR e incluyen funciones adicionales para ayudarte a crear experiencias envolventes. Se puede usar solo o junto con el paquete 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 extensiones de Android XR para Unity.
Consideraciones sobre funciones y 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. Se puede usar para determinar qué paquete contiene las funciones que necesitas y cualquier consideración de compatibilidad.
Función |
String de función de Unity OpenXR: Android XR |
String de función 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 funciones de cualquiera de los paquetes, debes habilitar la función de sesión de RA para ese paquete. Puedes habilitar ambos conjuntos de funciones al mismo tiempo. Las funciones individuales manejarán los conflictos en consecuencia. |
|
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 objeto GameObject de origen de XR controla automáticamente el seguimiento del dispositivo y la transformación de los elementos rastreables en el sistema de coordenadas de Unity con su componente XROrigin y la jerarquía GameObject con una cámara y TrackedPoseDriver. |
|
Android XR: Cámara de RA |
N/A |
Esta función proporciona compatibilidad con la estimación de luz y el paso directo de pantalla completa. |
|
Android XR: Plano de RA |
Android XR (Extensiones): Plano |
Estas dos funciones son idénticas. Usa una o la otra. Se incluye Android XR (Extensiones): 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 Unity OpenXR Android XR. 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: Rostro 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: Rostro de RA. Accede a las expresiones faciales de un usuario a través de la función Android XR: Seguimiento de rostros. Estas dos funciones se pueden usar juntas. |
|
Android XR: Lanzamiento de rayos de RA
|
N/A |
Esta función te permite lanzar un rayo y calcular la intersección entre ese rayo y los elementos rastreables de plano o los elementos rastreables de profundidad que se detectan en el entorno físico. |
|
Android XR: Anclaje de RA |
Android XR (Extensiones): Anclaje
|
Ambas funciones incluyen compatibilidad con anclajes espaciales y anclajes de plano. Usa una o la otra. Para los anclajes persistentes, usa Android XR (Extensiones): Anclaje. En el futuro, se quitará Android XR (Extensiones): Anclaje y todas las funciones de anclaje estarán en Android XR: Anclaje de RA. |
|
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 capas de composición (se requieren el complemento de OpenXR y la capa de composición de XR) |
Android XR: Capa de composición de paso directo
|
Usa la compatibilidad con capas de composición de Unity para crear capas de composición básicas composition layers (p.ej., cuadrángulo, cilindro, proyección). Se puede usar Android XR: Capa de composición de paso directo para crear una capa de paso directo con una malla personalizada, que se lee desde el objeto GameObject de Unity. |
|
Renderización foveada (se requiere el complemento de OpenXR)
|
Foveation (heredado) |
La renderización foveada permite acelerar la renderización disminuyendo 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 las apps que usan URP y Vulkan. La función Foveation (heredado) en las extensiones de Android XR para Unity también admite el canal de renderización integrado y OpenGL ES. Te recomendamos que uses la función de renderización foveada de Unity cuando sea posible y ten en cuenta que se recomiendan URP y Vulkan cuando compilas 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. Unbounded indica que XRInputSubsystem rastrea 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 XR, que controla cómo se combina la imagen virtual con el entorno del mundo real cuando se habilita el paso directo. |
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 vendrán con controles.
Perfiles de interacción
Unity usa el perfil de interacción para administrar cómo se comunica tu aplicación de XR 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, haz lo siguiente:
- Abre la ventana Configuración del proyecto (menú: Edit > Project Settings).
- Haz clic en Administración de complementos de XR para expandir la sección de complementos (si es necesario).
- Selecciona OpenXR en la lista de complementos de XR.
- En la sección Perfiles de interacción, selecciona el botón + para agregar un perfil.
- Selecciona el perfil que deseas agregar de la lista.
Interacción con las manos
La interacción con las manos (XR_EXT_hand_interaction) la proporciona
el complemento de OpenXR, y puedes exponer el diseño del dispositivo <HandInteraction>
en el sistema de entrada de Unity si habilitas el perfil de interacción con las manos. Usa este perfil de interacción para la entrada de manos admitida por las cuatro poses de acción definidas por OpenXR: "pinch", "poke", "aim" y "grip". Si necesitas interacción con las manos o funcionalidad de monitoreo de manos adicional, consulta Manos de XR 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 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 con el control
Android XR admite el perfil de control táctil de Oculus para controles 6DoF. El complemento de OpenXR proporciona ambos perfiles.
Interacción con el mouse
El perfil de interacción con el mouse de Android XR (XR_ANDROID_mouse_interaction)
lo proporcionan las extensiones de Android XR para Unity. Expone un
<AndroidXRMouse> diseño de dispositivo en el sistema de entrada de Unity.
Interacción con la pose de la palma
El complemento de OpenXR proporciona compatibilidad con la pose de la palma
interacción (XR_EXT_palm_pose), que
expone el diseño <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 monitoreo 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 avatar. La pose de la palma consta de la posición y la orientación de la palma.
Manos de XR
El paquete de manos de XR 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 de manos de XR, 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
cuando necesitas trabajar con gestos personalizados.
Para obtener más detalles, consulta la documentación de Unity para configurar las manos de XR en tu proyecto
Regiones de confianza del seguimiento de rostros
La extensión XR_ANDROID_face_tracking proporciona valores de confianza para tres regiones faciales: superior izquierda, superior derecha y rostro inferior. Estos valores, que van de 0 (sin confianza) a 1 (confianza más alta), indican la precisión del seguimiento facial para cada región.
Puedes usar estos valores de confianza para inhabilitar progresivamente las formas de combinación o aplicar filtros visuales (como el desenfoque) a la región facial correspondiente. Para una forma básica de desactivar las formas de combinación en la región facial correspondiente.
El área "rostro inferior" representa todo lo que está debajo de los ojos, incluidos la boca, el mentón, la mejilla y la nariz. Las dos regiones superiores incluyen los ojos y el área de las cejas en los lados izquierdo y derecho del rostro.
En el siguiente fragmento de código C#, se muestra cómo acceder a los datos de confianza y usarlos en una secuencia de comandos de Unity:
using UnityEngine;
using Google.XR.Extensions;
public class FaceTrackingConfidence : MonoBehaviour
{
void Update()
{
if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.HasValue)
{
DebugTextTopCenter.text = "XrInstance hasn't been initialized.";
return;
}
else if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.Value)
{
DebugTextTopCenter.text = "XR_ANDROID_face_tracking is not enabled.";
return;
}
for (int x = 0; x < _faceManager.Face.ConfidenceRegions.Length; x++)
{
switch (x)
{
case (int)XRFaceConfidenceRegion.Lower:
regionText = "Bottom";
break;
case (int)XRFaceConfidenceRegion.LeftUpper:
regionText = DebugTextConfidenceLeft;
break;
case (int)XRFaceConfidenceRegion.RightUpper:
regionText = DebugTextConfidenceRight;
break;
}
}
}
Para obtener más información, consulta la documentación de las extensiones de Android XR para Unity.
Elige una forma de renderizar las manos
Android XR admite dos formas de renderizar las manos: una malla de manos y un visualizador de objetos prefabricados.
Malla de manos
El paquete de Unity de Android XR contiene una función de malla de manos que proporciona
acceso a la XR_ANDROID_hand_mesh extension. La función de malla de manos proporciona mallas para las manos del usuario. La malla de manos contiene vértices de triángulos que representan la geometría de una mano. Esta función está diseñada para proporcionar una malla personalizada que represente la geometría real de las manos del usuario para la visualización.
Objeto prefabricado de manos de XR
El paquete de manos de XR contiene una muestra llamada visualizador de manos, que contiene 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ú para que los usuarios vuelvan atrás, abran el selector o obtengan una descripción general de las apps en ejecución. 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 responde a los eventos de seguimiento de la cabeza. El paquete de manos de XR puede detectar cuando un usuario realiza acciones específicas, como interactuar con este menú de navegación del sistema. Si verificas AimFlags, SystemGesture y DominantHand, sabrás 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 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 3D y de IU estén disponibles desde los eventos de entrada de Unity. Admite tareas de interacción, como la respuesta háptica, la respuesta visual y la locomoción.
OpenXR™ y el logotipo de OpenXR son marcas comerciales de The Khronos Group Inc. y están registradas como marcas comerciales en China, la Unión Europea, Japón y el Reino Unido.