Desenvolver com o Unity para Android XR

Este guia apresenta uma visão geral do desenvolvimento com o Unity para Android XR. O Android XR funciona com as ferramentas e os recursos conhecidos do Unity. Como o suporte do Unity para Android XR é baseado no OpenXR, muitos dos recursos descritos na Visão geral do OpenXR também são compatíveis com o Unity.

Siga este guia para saber mais sobre:

  • Suporte do Unity para Android XR
    • Noções básicas de XR do Unity
    • Como desenvolver e publicar apps para Android XR
    • Pacotes do Unity para Android XR
      • Unity OpenXR: pacote Android XR
      • Extensões do Android XR para Unity
      • Recursos e considerações sobre compatibilidade
  • Entrada e interação

Suporte do Unity para Android XR

Ao criar apps do Unity para o Android XR, você pode aproveitar as ferramentas e os recursos de realidade mista no Unity 6. Isso inclui modelos de realidade mista que usam o XR Interaction Toolkit, a AR Foundation e o OpenXR Plugin para ajudar você a começar rapidamente. Ao criar apps com o Unity para Android XR, recomendamos o pipeline de renderização universal (URP) como seu pipeline de renderização e o Vulkan como API de gráficos. Esses recursos permitem aproveitar alguns dos recursos gráficos mais recentes do Unity, que têm suporte apenas para Vulkan. Consulte o guia de configuração do projeto para mais informações sobre como configurar essas opções.

Noções básicas de XR do Unity

Se você é novo no desenvolvimento de XR ou do Unity, consulte o Manual de XR do Unity (em inglês) para entender os conceitos e fluxos de trabalho básicos de XR. O Manual de XR contém informações sobre:

Desenvolver e publicar apps para Android

O Unity oferece documentação detalhada para desenvolvimento, criação e publicação para Android, cobrindo tópicos como Permissões do Android no Unity, Configurações de build do Android, Criação do app para Android e Envio para o Google Play.

Pacotes do Unity para Android XR

Há dois pacotes que oferecem suporte para a criação de apps Unity para Android XR. Ambos os pacotes são plug-ins de provedor de XR, que podem ser ativados pelo pacote de gerenciamento de plug-ins de XR do Unity. O gerenciador de plug-ins XR adiciona as configurações do projeto para gerenciar e oferecer ajuda com o carregamento, a inicialização, as configurações e o suporte ao build para plug-ins XR. Para permitir que o app execute recursos do OpenXR no momento da execução, o projeto precisa ter esses recursos ativados pelo gerenciador de plug-ins.

Esta imagem mostra um exemplo de onde você pode ativar esses grupos de recursos no editor do Unity.

Exemplo da tela de gerenciamento do plug-in Unity XR

Unity OpenXR Android XR

O pacote Unity OpenXR Android XR é um plug-in XR para adicionar suporte ao Android XR ao Unity. Esse plug-in de XR oferece a maioria do suporte do Android XR para Unity e ativa o suporte a dispositivos Android XR para projetos da AR Foundation. A AR Foundation foi projetada para desenvolvedores que querem criar experiências de RA ou realidade mista. Ele fornece a interface para recursos de RA, mas não implementa nenhum recurso por si só. O pacote Unity OpenXR Android XR fornece a implementação. Para começar a usar esse pacote, consulte o manual, que contém um guia de início.

Extensões do Android XR para Unity

As extensões do Android XR para Unity complementam o pacote Unity OpenXR Android XR e incluem outros recursos para ajudar a criar experiências imersivas. Ele pode ser usado sozinho ou com o pacote Unity OpenXR Android XR.

Para começar a usar esse pacote, siga nosso guia de configuração do projeto ou início rápido para importar extensões do Android XR para Unity.

Recursos e considerações sobre compatibilidade

A tabela a seguir descreve os recursos com suporte do Unity OpenXR: pacote Android XR e pacote Android XR Extensions for Unity. Ela pode ser usada para determinar qual pacote contém os recursos necessários e quaisquer considerações de compatibilidade.

Recurso

Unity OpenXR: string de recursos do Android XR

String de recursos das extensões do Android XR para Unity

Casos de uso e comportamento esperado

Sessão de RA

Android XR: sessão de RA

  • As configurações de recursos incluem a otimização de descartes de buffer (Vulkan)

Android XR (extensões): gerenciamento de sessões

  • As configurações de recursos incluem subamostragem (Vulkan) e URP SpaceWarp (Vulkan).

Para usar os recursos de qualquer um dos pacotes, é necessário ativar o recurso de sessão de RA para esse pacote. Você pode ativar os dois conjuntos de recursos ao mesmo tempo. Os recursos individuais vão lidar com os conflitos de acordo.

Rastreamento de dispositivos

N/A

N/A

O rastreamento de dispositivo é usado para rastrear a posição e a rotação do dispositivo no espaço físico. O GameObject de origem de XR processa automaticamente o rastreamento de dispositivos e a transformação de rastreáveis no sistema de coordenadas do Unity usando o componente XROrigin e a hierarquia GameObject com uma câmera e o TrackedPoseDriver.

Câmera

Android XR: câmera de RA

N/A

Esse recurso oferece suporte para estimativa de luz e transmissão em tela cheia.

Detecção de plano

Android XR: avião de RA

Android XR (extensões): plano

Esses dois recursos são idênticos. Use um ou outro. Android XR (Extensions): o plano foi incluído para que os desenvolvedores possam usar os recursos de rastreamento de objetos e âncoras persistentes do Android XR (Extensions) sem depender do pacote Unity OpenXR Android XR. No futuro, o Android XR (Extensions): Plane será removido em favor do Android XR: AR Anchor.

Rastreamento de objetos

N/A

Android XR (extensões): rastreamento de objetos

Esse recurso oferece suporte para detectar e rastrear objetos no ambiente físico, usado em combinação com uma biblioteca de objetos de referência.

Rastreamento facial

Android XR: AR Face

  • Somente XR_ANDROID_avatar_eyes
  • Sem rastreamento de rosto

Android XR: rastreamento facial

  • XR_ANDROID_face_tracking

O suporte para olhos de avatar é fornecido pelo recurso Android XR: AR Face. Acesse as expressões faciais de um usuário pelo recurso "Rastreamento facial" do Android XR. Esses dois recursos podem ser usados juntos, se necessário.

Ray casts

Android XR: Raycast de RA

  • Âncora de avião
  • Âncora de profundidade

N/A

Esse recurso permite emitir um raio e calcular a interseção entre esse raio e os elementos rastreáveis de plano ou de profundidade que são detectados no ambiente físico.

Fixos

Android XR: âncora de RA

Android XR (extensões): âncora

  • As configurações de recursos incluem persistência.

Ambos os recursos incluem suporte para âncoras espaciais e âncoras de plano. Use um recurso ou outro. Para âncoras permanentes, use o Android XR (extensões): âncora. No futuro, o Android XR (extensões): Anchor será removido, e todos os recursos de âncora estarão no Android XR: AR Anchor.

Oclusão

Android XR: Occlusion de RA

  • Profundidade do ambiente

N/A

A oclusão permite que o conteúdo de realidade mista no app apareça oculto ou parcialmente obscurecido por objetos no ambiente físico.

Métricas de performance

Métricas de desempenho do Android XR

N/A

Use esse recurso para acessar as métricas de desempenho dos dispositivos Android XR.

Camadas de composição

Suporte à camada de composição (o plug-in OpenXR e a camada de composição XR são obrigatórios)

Android XR: camada de composição de passagem

  • XR_ANDROID_composition_layer_passthrough_mesh

Use o suporte a camadas de composição do Unity para criar camadas de composição básicas (por exemplo, quad, cilindro, projeção). Android XR: a camada de composição de passagem pode ser usada para criar uma camada de passagem com uma malha personalizada, lendo o GameObject do Unity.

Renderização com fóvea

Renderização foveada (é necessário o plug-in OpenXR)

  • Suporte à renderização foveada com rastreamento ocular: a área de resolução mais alta é centralizada onde o usuário está olhando, tornando-a menos aparente para o usuário.

Foveação (legado)

A renderização foveada permite acelerar a renderização diminuindo a resolução de áreas na visão periférica do usuário. O recurso de renderização com fovea do Unity só tem suporte para apps que usam URP e Vulkan. O recurso de foveamento (legado) nas extensões do Android XR para Unity também oferece suporte a BiRP e GLES. Recomendamos usar o recurso de renderização com foco do Unity sempre que possível. Além disso, o URP e o Vulkan são recomendados ao criar para o Android XR.

Espaço de referência ilimitado

N/A

Android XR: espaço de referência sem limites

Esse recurso define o modo de origem de rastreamento do XRInputSubsystem como Unbounded. "Unbounded" indica que o XRInputSubsystem rastreia todos os InputDevices em relação a uma âncora do mundo, que pode mudar.

Modo de mesclagem do ambiente

N/A

Modo de mesclagem do ambiente

Esse recurso permite definir o modo de mesclagem de ambiente de RA, que controla como as imagens virtuais se misturam ao ambiente real quando o modo de transferência direta está ativado.

Entrada e interação

O Android XR oferece suporte à entrada natural multimodal.

Além do rastreamento de mãos e olhos, periféricos como controladores 6DoF, mouse e teclado físico também são compatíveis. Isso significa que os apps para Android XR precisam oferecer suporte à interação manual, e não é possível presumir que todos os dispositivos vêm com controles.

Perfis de interação

O Unity usa o perfil de interação para gerenciar como o aplicativo de XR se comunica com vários dispositivos e plataformas de XR. Esses perfis estabelecem as entradas e saídas esperadas para diferentes configurações de hardware, garantindo compatibilidade e funcionalidade consistente em várias plataformas. Ao ativar os perfis de interação, você garante que o aplicativo de XR funcione corretamente com diferentes dispositivos, mantenha o mapeamento de entrada consistente e tenha acesso a recursos específicos de XR. Para definir um perfil de interação:

  1. Abra a janela Project Settings (menu: Edit > Project Settings).
  2. Clique em XR Plug-in Management para abrir a seção do plug-in (se necessário).
  3. Selecione OpenXR na lista de plug-ins de XR.
  4. Na seção Perfis de interação, selecione o botão + para adicionar um perfil.
  5. Selecione o perfil a ser adicionado na lista.

Interação com a mão

A interação com a mão (XR_EXT_hand_interaction) é fornecida pelo plug-in OpenXR, e você pode expor o layout do dispositivo no Unity Input System ativando o perfil de interação com a mão. Use esse perfil de interação para entrada de mão com suporte às quatro poses de ação definidas pelo OpenXR: "pinçar", "cutucar", "mirar" e "segurar". Se você precisar de mais recursos de interação ou rastreamento de mãos, consulte XR Hands nesta página.

Interação de contato visual

A interação do olhar (XR_EXT_eye_gaze_interaction) é fornecida pelo plug-in do OpenXR, e você pode usar esse layout para extrair os dados de pose dos olhos (posição e rotação) que a extensão retorna. Leia mais sobre a interação de rastreamento ocular no guia de entrada do OpenXR.

Interação do controle

O Android XR oferece suporte ao perfil de controle Oculus Touch para controladores 6DoF. Ambos os perfis são fornecidos pelo plug-in do OpenXR.

Interação com o mouse

O Perfil de interação com o mouse do Android XR (XR_ANDROID_mouse_interaction) é fornecido pelas extensões do Android XR para Unity. Ele expõe um layout de dispositivo <AndroidXRMouse> no sistema de entrada do Unity.

Interação com a palma da mão

O plug-in OpenXR oferece suporte à Interação de postura da palma da mão (XR_EXT_palm_pose), que expõe o layout <PalmPose> no sistema de entrada do Unity. A pose de palma não é uma alternativa para extensões ou pacotes que fazem o rastreamento de mãos para casos de uso mais complexos. Em vez disso, ela pode ser usada para colocar conteúdo visual específico do app, como avatares. A pose da palma da mão consiste na posição e na orientação da palma.

Mãos de XR

O pacote XR Hands permite acessar dados de rastreamento de mãos (XR_EXT_hand_tracking e XR_FB_hand_tracking_aim) e oferece um wrapper para converter dados de juntas de mãos do rastreamento de mãos em poses de entrada. Para usar os recursos fornecidos pelo pacote XR Hands, ative os recursos Subsistema de rastreamento de mãos e Meta Hand Tracking Aim OpenXR.

Exemplo mostrando como ativar o rastreamento de mãos

O pacote de mãos de RV pode ser útil se você precisar de dados mais granulares de pose ou articulação de mãos ou quando precisar trabalhar com gestos personalizados.

Para mais detalhes, consulte a documentação do Unity para configurar as mãos de RV no seu projeto.

Escolher uma forma de renderizar as mãos

O Android XR oferece suporte a duas maneiras de renderizar mãos: uma malha de mão e um visualizador prefab.

Mão em malha

O pacote do Android XR Unity contém um recurso de malha de mão que oferece acesso ao XR_ANDROID_hand_mesh extension. O recurso de malha de mão fornece malhas para as mãos do usuário. A malha da mão contém vértices de triângulos que representam a geometria de uma mão. Esse recurso é usado para fornecer uma malha personalizada que representa a geometria real das mãos do usuário para visualização.

Prefab de mãos de XR

O pacote XR Hands contém um exemplo chamado Hands visualizer, que contém mãos esquerda e direita totalmente montadas para renderizar a representação adequada ao contexto das mãos do usuário.

Gestos do sistema

O Android XR inclui um gesto do sistema para abrir um menu que permite que os usuários voltem, abram o iniciador ou tenham uma visão geral dos aplicativos em execução. O usuário pode ativar esse menu do sistema usando um gesto de pinça com a mão dominante.

Quando o usuário interage com o menu de navegação do sistema, o aplicativo responde apenas a eventos de rastreamento de cabeça. O pacote XR Hands pode detectar quando um usuário realiza ações específicas, como interagir com esse menu de navegação do sistema. A verificação de AimFlags SystemGesture e DominantHand informa quando essa ação do sistema é realizada. Para mais informações sobre AimFlags, consulte a documentação de MetaAimFlags do Unity.

XR Interaction Toolkit

O pacote do XR Interaction Toolkit é um sistema de interação de alto nível baseado em componentes para criar experiências de RV e RA. Ele oferece uma estrutura que disponibiliza interações 3D e de interface por meio de eventos de entrada do Unity. Ele oferece suporte a tarefas de interação, incluindo retorno tátil, visual e locomoção.