Android XR admite apps compiladas con OpenXR a través de su compatibilidad con la especificación de OpenXR 1.1 y algunas extensiones de proveedores. OpenXR es un estándar abierto que te permite crear experiencias inmersivas e interactivas con un conjunto común de APIs en una amplia variedad de dispositivos de RE.
Funciones
Android XR admite funciones que te permiten compilar apps que aprovechan al máximo las capacidades únicas de los dispositivos de RE con OpenXR. Estas funciones incluyen lo siguiente.
- Framework de Spatial Entity
- Una base unificada para la comprensión de escenas y el razonamiento espacial. Permite que las aplicaciones descubran, consulten y hagan un seguimiento de las entidades espaciales físicas en el entorno (incluidos planos, mallas 3D, cuadros delimitadores, imágenes, marcadores y anotaciones), filtren el descubrimiento con límites espaciales, consulten arquetipos de entidades, creen anclajes espaciales adjuntos a entidades, realicen trazados de rayos de mallas y entidades espaciales, y conserven las entidades espaciales en las sesiones de la aplicación.
- Contenedores espaciales
- Una API de ventanas espaciales multiplataforma (
XR_EXT_spatial_containeryXR_EXT_spatial_container_self_rendering) que permite que las aplicaciones creen y rendericen contenedores espaciales en 3D que se puedan mostrar (tanto limitados como envolventes) con cadenas de intercambio y capas de composición de OpenXR, lo que permite que los usuarios experimenten varios contenedores espaciales de forma simultánea. - Anclas geoespaciales y de Geospatial
- Permite que las aplicaciones realicen un seguimiento de las poses relativas a la Tierra con el Servicio de posicionamiento visual (VPS) y el GPS de Google, se autentiquen con los servicios de Google Cloud y coloquen anclas geoespaciales y de superficie en latitudes, longitudes y altitudes específicas.
- Elementos rastreables
- Admite la detección de planos, que es la capacidad de identificar y hacer un seguimiento de las superficies planas dentro del entorno, lo que permite colocar objetos virtuales en relación con el mundo real y anclajes, que son puntos de referencia virtuales que se pueden adjuntar a objetos o ubicaciones del mundo real, de modo que el contenido virtual permanezca posicionado y orientado con precisión incluso cuando el usuario se mueve.
- Raycasting
- Es una técnica que se usa para determinar el punto de intersección entre un rayo virtual y los objetos o las mallas del mundo en la escena, lo que facilita interacciones como seleccionar y manipular elementos virtuales.
- Persistencia de las anclas
- La capacidad de guardar y restablecer anclas en varias sesiones, lo que permite una ubicación persistente y coherente del contenido virtual dentro del entorno.
- Seguimiento de objetos
- La capacidad de hacer un seguimiento del mouse, el teclado y otros objetos físicos en el mundo real.
- Seguimiento de imágenes y marcadores
- La capacidad de detectar y hacer un seguimiento de las imágenes de referencia planas y los marcadores físicos (como AprilTags y ArUco) en el entorno.
- Seguimiento de códigos QR
- La capacidad de hacer un seguimiento de los códigos QR en el entorno físico y decodificar sus datos.
- Texturas de profundidad
- La generación de mapas de profundidad que proporcionan información sobre la distancia entre la cámara y los objetos de la escena, lo que permite efectos de oclusión e interacción más realistas.
- Transferencia
- Es la capacidad de combinar imágenes de la cámara del mundo real con contenido virtual, lo que crea una experiencia de realidad mixta que combina a la perfección los mundos físico y digital.
- Atenuación de la transferencia global
- Permite que las aplicaciones establezcan y consulten el nivel de atenuación de la transferencia global para combinar el contenido virtual con el entorno físico y recibir eventos cuando cambie el nivel de atenuación.
- Suavizado de bordes del viewport
- Expone el área perimetral difuminada que aplica el entorno de ejecución para que las aplicaciones puedan disponer los elementos de la IU dentro del área segura sin que se vean afectados por el difuminado periférico.
- Malla de la escena
- La capacidad de adquirir una malla 3D del entorno, que se puede usar para la física, la oclusión y otras interacciones que reconocen el mundo.
- Transferencia de capas de composición
- Permite un recorte de capa de composición de transferencia poligonal, que se puede usar para incorporar objetos del mundo real a una escena.
- Seguimiento de rostros
- La capacidad de hacer un seguimiento de los rasgos del rostro del usuario a partir de fuentes de datos visuales y de audio, lo que permite crear avatares y personajes virtuales más realistas y expresivos.
- Seguimiento de ojos
- Proporciona la posición y la orientación del ojo del usuario, lo que está diseñado para que la pose de los ojos de los avatares sea más realista.
- Monitoreo de manos
- La capacidad de hacer un seguimiento de la posición y el movimiento de las manos del usuario.
- Malla de mano
- Proporciona una representación precisa de las manos del usuario como una malla de polígonos baja. Se optimizó para la entrega de plataforma a aplicación para garantizar que obtengas el mejor rendimiento posible. Esta es una alternativa a otras extensiones que usan una pose de vinculación y pesos de combinación.
- Seguir cuerpo
- Estima las posiciones y proporciones de las articulaciones del cuerpo del usuario con las entradas de seguimiento de la cabeza y las manos.
- Estimación de luz
- Se usa para modelos de iluminación (incluidos los armónicos direccionales, ambientales, esféricos y la iluminación de mapas de cubos) para que coincidan con las condiciones de iluminación del mundo real del usuario.
Dispositivos de entrada compatibles
Android XR también admite los siguientes dispositivos de entrada.
- Interacción con las manos
- El reconocimiento de gestos con la mano específicos, como pellizcar, deslizar y señalar, lo que permite a los usuarios interactuar con objetos virtuales a través de gestos y movimientos de las manos.
- Interacción con la mirada
- La capacidad de seguir los movimientos oculares del usuario, lo que le permite seleccionar objetos virtuales e interactuar con ellos con la mirada.
- Controles de movimiento de 6DoF
- La capacidad de hacer un seguimiento de la posición y el movimiento de los controles, junto con las vinculaciones de botones y pad direccional para activar acciones o eventos de desplazamiento dentro de la app.
- Interacción con el mouse
- La capacidad de los usuarios de interactuar con objetos a través de un puntero del mouse en un espacio 3D
Funciones de rendimiento compatibles
Android XR admite las siguientes funciones relacionadas con el rendimiento.
- Foveación con seguimiento de ojos
- Permite que una app renderice contenido de mayor resolución solo en el punto focal de los ojos.
- Deformación espacial
- Usa vectores de velocidad y la información de textura de profundidad para generar fotogramas intermedios, lo que aumenta de forma eficaz la velocidad de fotogramas necesaria para mantener a los usuarios inmersos en tus experiencias.
- Síntesis de fotogramas
- Usa vectores de movimiento y datos de fotogramas proporcionados por la aplicación para sintetizar fotogramas intermedios, lo que mejora la fluidez visual y las velocidades de fotogramas.
- Métricas de rendimiento
- Proporciona métricas de rendimiento de Android XR durante el tiempo de ejecución del dispositivo de RE, el compositor y la app de RE actuales. Esto incluye la latencia de fotogramas de la CPU, la latencia de fotogramas de la GPU, el uso de la GPU, la frecuencia de la CPU, los fotogramas por segundo y mucho más.
Consulta la descripción general de las funciones de OpenXR para obtener una lista completa de las funciones y extensiones compatibles.
Motores compatibles
Los siguientes motores son compatibles con el desarrollo de OpenXR con Android XR.
Unity
La compatibilidad de Android XR con Unity, que se basa en OpenXR, permite que los desarrolladores creen experiencias con Unity 6. Obtén más información para crear apps de RE con Unity en la descripción general de Unity.
Unreal Engine
Unreal Engine admite Android XR a través del estándar OpenXR, lo que te permite usar las herramientas y los flujos de trabajo estándar en Unreal Engine 5. Obtén más información para compilar apps de XR con Unreal Engine en la descripción general de Unreal Engine.
Godot
Godot admite Android XR a través de su integración con OpenXR, lo que te permite compilar y exportar apps de RE para Android con el flujo de trabajo estándar de Godot. Obtén más información para crear apps de RE con Godot en la descripción general de Godot.
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.