O Android XR é compatível com apps criados com o OpenXR, graças à compatibilidade com a especificação do OpenXR 1.1 e algumas extensões de fornecedores. O OpenXR é um padrão aberto que permite criar experiências imersivas e interativas usando um conjunto comum de APIs em uma ampla variedade de dispositivos XR.
Recursos
O Android XR oferece suporte a recursos que permitem criar apps que aproveitam ao máximo as capacidades exclusivas dos dispositivos XR, usando o OpenXR. Esses recursos incluem o seguinte.
- Framework de entidade espacial
- Uma base unificada para compreensão de cenas e raciocínio espacial. Permite que os aplicativos descubram, consultem e rastreiem entidades espaciais físicas no ambiente (incluindo planos, malhas 3D, caixas delimitadoras, imagens, marcadores e anotações), filtrem a descoberta usando limites espaciais, consultem arquétipos de entidade, criem âncoras espaciais anexadas a entidades, realizem raycasting de entidade espacial e malha e mantenham entidades espaciais em sessões de aplicativos.
- Contêineres espaciais
- Uma API multiplataforma de janelas espaciais (
XR_EXT_spatial_containereXR_EXT_spatial_container_self_rendering) que permite que os aplicativos criem e renderizem contêineres espaciais 3D exibíveis (limitados e imersivos) usando swapchains e camadas de composição do OpenXR, permitindo que os usuários interajam com vários contêineres espaciais simultaneamente. - Âncoras geoespaciais e geoespaciais
- Permite que os aplicativos rastreiem poses relativas à Terra usando o Serviço de Posicionamento Visual (VPS) e o GPS do Google, autentiquem-se com os serviços do Google Cloud e coloquem âncoras geoespaciais e de superfície em latitudes, longitudes e altitudes específicas.
- Rastreáveis
- Oferece suporte à detecção de planos, que é a capacidade de identificar e rastrear superfícies planas no ambiente, permitindo a colocação de objetos virtuais em relação ao mundo real, e às âncoras, que são pontos de referência virtuais que podem ser anexados a objetos ou locais do mundo real, para que o conteúdo virtual permaneça posicionado e orientado com precisão, mesmo quando o usuário se move.
- Raycasting
- Uma técnica usada para determinar o ponto de interseção entre um raio virtual e objetos ou malhas do mundo na cena, facilitando interações como selecionar e manipular elementos virtuais.
- Persistência de âncoras
- A capacidade de salvar e restaurar âncoras em várias sessões, permitindo o posicionamento persistente e consistente de conteúdo virtual no ambiente.
- Rastreamento de objetos
- A capacidade de rastrear mouse, teclado e outros objetos físicos no mundo real.
- Rastreamento de imagens e marcadores
- A capacidade de detectar e rastrear imagens de referência planas e marcadores físicos (como AprilTags e marcadores ArUco) no ambiente.
- Rastreamento de QR code
- A capacidade de rastrear QR codes no ambiente físico e decodificar os dados deles.
- Texturas de profundidade
- A geração de mapas de profundidade que fornecem informações sobre a distância entre a câmera e os objetos na cena, permitindo efeitos de oclusão e interação mais realistas.
- Passagem
- A capacidade de combinar imagens de câmera do mundo real com conteúdo virtual, criando uma experiência de realidade mista que combina perfeitamente os mundos físico e digital.
- Escurecimento global do passthrough
- Permite que os aplicativos definam e consultem o nível de escurecimento global do passthrough para combinar conteúdo virtual com o ambiente físico e receber eventos quando o nível de escurecimento mudar.
- Suavização da janela de visualização
- Expõe a área do perímetro de suavização aplicada pelo ambiente de execução para que os aplicativos possam organizar os elementos da interface na área segura sem serem afetados pela suavização periférica.
- Malha de cena
- A capacidade de adquirir uma malha 3D do ambiente, que pode ser usada para física, oclusão e outras interações que reconhecem o mundo.
- Passagem de camada de composição
- Permite um recorte de camada de composição de passagem de polígono, que pode ser usado para trazer objetos do mundo real para uma cena.
- Rastreamento de rostos
- A capacidade de rastrear as características do rosto do usuário com base em fontes de dados visuais e de áudio, permitindo a criação de avatares e personagens virtuais mais realistas e expressivos.
- Rastreamento ocular
- Fornece a posição e a orientação do olho do usuário, o que foi projetado para tornar a pose dos olhos dos avatares mais realista.
- Rastreamento de mãos
- A capacidade de rastrear a posição e o movimento das mãos do usuário.
- Malha de mão
- Fornece uma representação precisa das mãos do usuário como uma malha de polígonos reduzida. Otimizado para entrega de plataforma para aplicativo para garantir que você tenha o melhor desempenho possível. Essa é uma alternativa a outras extensões que usam uma pose de vinculação e pesos de mesclagem.
- Rastreamento corporal
- Estima as posições e proporções das articulações do corpo do usuário usando entradas de rastreamento de cabeça e mãos.
- Estimativa de luz
- Usado para modelos de iluminação (incluindo iluminação direcional, ambiente, harmônicos esféricos e de mapa de cubo) para corresponder às condições de iluminação do usuário no mundo real.
Dispositivos de entrada compatíveis
O Android XR também é compatível com os seguintes dispositivos de entrada.
- Interação com as mãos
- O reconhecimento de gestos específicos com as mãos, como pinça, deslizar e apontar, permitindo que os usuários interajam com objetos virtuais usando gestos e movimentos das mãos.
- Interação com o olhar
- A capacidade de rastrear os movimentos dos olhos do usuário, permitindo que ele selecione e interaja com objetos virtuais usando o olhar.
- Controles de movimento 6DoF
- A capacidade de rastrear a posição e o movimento dos controles, além de vinculações de botões direcionais e botões para acionar ações ou eventos de passagem do cursor no app.
- Interação com o mouse
- A capacidade de os usuários interagirem com objetos usando um ponteiro do mouse no espaço 3D
Recursos de performance compatíveis
O Android XR é compatível com os seguintes recursos relacionados ao desempenho.
- Foveação com acompanhamento ocular
- Permite que um app renderize conteúdo de alta resolução apenas no ponto focal dos olhos.
- Dobra espacial
- Usa vetores de velocidade e informações de textura de profundidade para gerar frames de interpolação, o que aumenta o frame rate necessário para manter os usuários imersos nas suas experiências
- Síntese de frames
- Usa vetores de movimento e dados de frame fornecidos pelo aplicativo para sintetizar frames intermediários, melhorando a suavidade visual e as taxas de frames.
- Métricas de desempenho
- Fornece métricas de performance do Android XR no ambiente de execução do dispositivo XR, do compositor e do app XR atuais. Isso inclui o tempo para a renderização do frame da CPU, o tempo para a renderização do frame da GPU, o uso da GPU, a frequência da CPU, os quadros por segundo e muito mais.
Consulte a Visão geral dos recursos do OpenXR para ver uma lista completa de recursos e extensões compatíveis.
Mecanismos compatíveis
Os seguintes mecanismos são compatíveis com o desenvolvimento do OpenXR com o Android XR.
Unity
O suporte do Android XR ao Unity, criado com base no OpenXR, permite que os desenvolvedores criem experiências usando o Unity 6. Saiba mais sobre como criar apps de XR com o Unity na visão geral do Unity.
Unreal Engine
O Unreal Engine é compatível com o Android XR pelo padrão OpenXR, permitindo que você use as ferramentas e os fluxos de trabalho padrão no Unreal Engine 5. Saiba mais sobre como criar apps de XR com o Unreal Engine na visão geral do Unreal Engine.
Godot
O Godot é compatível com o Android XR pela integração com o OpenXR, permitindo que você crie e exporte apps de XR para Android usando o fluxo de trabalho padrão do Godot. Saiba mais sobre como criar apps de XR com o Godot na visão geral do Godot.
OpenXR™ e o logotipo do OpenXR são marcas registradas do The Khronos Group Inc. e são registradas como marcas na China, na União Europeia, no Japão e no Reino Unido.