Desenvolver com o Unity para Android XR

Este guia oferece uma visão geral do desenvolvimento com Unity para Android XR. O Android XR funciona com as ferramentas e os recursos conhecidos que você já espera do Unity. Como o suporte do Unity para Android XR é criado com base 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
    • Princípios básicos do Unity XR
    • Desenvolver e publicar apps para o Android XR
    • Pacotes do Unity para Android XR
      • Unity OpenXR: pacote Android XR
      • Extensões do Android XR para Unity
      • Considerações sobre recursos e compatibilidade
  • Entrada e interação

Suporte do Unity para Android XR

Ao criar apps Unity para Android XR, você pode aproveitar as ferramentas e os recursos de realidade mista nas versões mais recentes do Unity 6. Isso inclui modelos de realidade mista que usam o XR Interaction Toolkit, o AR Foundation e o OpenXR Plugin para ajudar você a começar rapidamente. Ao criar apps com Unity para Android XR, recomendamos o Pipeline de Renderização Universal (URP) como seu pipeline de renderização e o Vulkan como sua API de gráficos. Com esses recursos, você pode aproveitar alguns dos recursos gráficos do Unity, que só são compatíveis com o 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ê não conhece o Unity ou o desenvolvimento de XR, consulte o Manual de XR do Unity (link 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 desenvolver, criar e publicar para Android, abordando temas como permissões do Android no Unity, configurações de build do Android, criação do app para Android e entrega ao Google Play.

Pacotes do Unity para Android XR

Há dois pacotes que oferecem suporte à criação de apps Unity para Android XR. Os dois 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 configurações de projeto para gerenciar e oferecer ajuda com carregamento, inicialização, configurações e suporte de build para plug-ins XR. Para permitir que seu app execute recursos do OpenXR durante a 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 da Unity.

Exemplo da tela de gerenciamento de plug-ins do Unity XR

Unity OpenXR Android XR

O pacote Unity OpenXR Android XR é um plug-in XR para adicionar suporte ao Android XR no Unity. Esse plug-in XR oferece a maior parte do suporte do Android XR para Unity e permite o suporte a dispositivos Android XR para projetos da AR Foundation. O AR Foundation foi criado para desenvolvedores que querem criar experiências de RA ou realidade mista. Ela 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 rápido.

Extensões do Android XR para Unity

As extensões do Android XR para Unity complementam o pacote Android XR do Unity OpenXR e incluem recursos adicionais para ajudar você 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 o início rápido para importar extensões Android XR para Unity.

Considerações sobre recursos e compatibilidade

A tabela a seguir descreve os recursos compatíveis com o Unity OpenXR: pacote Android XR e o pacote Android XR Extensions para Unity. Ela pode ser usada para determinar qual pacote contém os recursos necessários e as 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 AR

Android XR: sessão de RA

  • As configurações de recursos incluem "Otimizar descartes de buffer (Vulkan)".

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

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

Para usar recursos de qualquer um dos pacotes, é necessário ativar o recurso de sessão de RA para esse pacote. É possível ativar os dois conjuntos de recursos ao mesmo tempo. Os recursos individuais vão processar os conflitos de acordo com a situação.

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 da RV 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 do GameObject com uma câmera e um TrackedPoseDriver.

Câmera

Android XR: câmera de RA

N/A

Esse recurso oferece suporte à estimativa de iluminação e à transmissão em tela cheia.

Detecção de planos

Android XR: plano de RA

Android XR (extensões): Plane

Esses dois recursos são idênticos. Use um ou outro. Android XR (extensões): o plano está incluído para que os desenvolvedores possam usar os recursos de rastreamento de objetos e âncoras persistentes do Android XR (extensões) sem precisar ter uma dependência do pacote Android XR do Unity OpenXR. No futuro, o Android XR (extensões): plano será removido em favor do Android XR: âncora de RA.

Rastreamento de objetos

N/A

Android XR (extensões): rastreamento de objetos

Esse recurso oferece suporte à detecção e ao rastreamento de 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_eye_tracking
  • Sem rastreamento de rosto

Android XR: rastreamento facial

  • XR_ANDROID_face_tracking

O suporte para olhos de avatar é fornecido pelo recurso Rosto de RA do Android XR. Acessar as expressões faciais de um usuário com o recurso Android XR: rastreamento facial. Esses dois recursos podem ser usados juntos.

Ray casts

Android XR: AR Raycast

  • Âncora de avião
  • Ancoragem de profundidade

N/A

Com esse recurso, é possível projetar um raio e calcular a interseção entre ele e os rastreáveis de plano ou profundidade detectados no ambiente físico.

Fixos

Android XR: âncora de RA

Android XR (extensões): âncora

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

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

Oclusão

Android XR: oclusão de RA

  • Profundidade do ambiente

N/A

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

Métricas de performance

Métricas de performance do Android XR

N/A

Use esse recurso para acessar métricas de performance de dispositivos Android XR.

Camadas de composição

Suporte à camada de composição (é necessário o plug-in OpenXR e a camada de composição XR)

Android XR: camada de composição de transmissão direta

  • 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 transferência pode ser usada para criar uma camada de transferência com uma malha personalizada, lendo do GameObject do Unity.

Renderização foveada

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

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

Foveação (legado)

A renderização foveada permite acelerar a renderização diminuindo a resolução das áreas na visão periférica do usuário. O recurso de renderização foveada da Unity só é compatível com apps que usam URP e Vulkan. O recurso Foveation (legado) nas extensões Android XR para Unity também é compatível com o pipeline de renderização integrado e o OpenGL ES. Recomendamos usar o recurso de renderização foveada do Unity sempre que possível. Além disso, o URP e o Vulkan são recomendados ao criar para Android XR.

Espaço de referência sem limites

N/A

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

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

Modo de fusão do ambiente

N/A

Modo de mesclagem de ambiente

Com esse recurso, é possível definir o Modo de fusão do ambiente XR, que controla como as imagens virtuais se misturam ao ambiente do mundo real quando a transmissão direta está ativada.

Entrada e interação

O Android XR é compatível com entrada natural multimodal.

Além do rastreamento de mãos e olhos, periféricos como controles 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 com as mãos, e não é possível presumir que todos os dispositivos virão com controles.

Perfis de interação

O Unity usa o perfil de interação para gerenciar como seu aplicativo 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, promovendo a compatibilidade e a funcionalidade consistente em várias plataformas. Ao ativar os perfis de interação, você ajuda a garantir que seu aplicativo XR funcione corretamente com diferentes dispositivos, mantenha um mapeamento de entrada consistente e tenha acesso a recursos específicos de XR. Para definir um perfil de interação:

  1. Abra a janela Configurações do projeto (menu: Editar > Configurações do projeto).
  2. Clique em Gerenciamento de plug-ins de XR para abrir a seção de plug-ins, se necessário.
  3. Selecione OpenXR na lista de plug-ins de RV.
  4. Na seção Perfis de interação, selecione o botão + para adicionar um perfil.
  5. Selecione o perfil que você quer adicionar na lista.

Interação com as mãos

A interação com as mãos (XR_EXT_hand_interaction) é fornecida pelo plug-in OpenXR, e você pode expor o layout do dispositivo <HandInteraction> no Unity Input System ativando o perfil de interação com as mãos. Use esse perfil de interação para entrada de mão compatível com as quatro poses de ação definidas pelo OpenXR: "pinçar", "tocar", "mirar" e "segurar". Se você precisar de mais interação ou rastreamento das mãos, consulte Mãos de RV nesta página.

Interação de olhar

A interação de olhar (XR_EXT_eye_gaze_interaction) é fornecida pelo plug-in OpenXR, e você pode usar esse layout para recuperar os dados de postura do olhar (posição e rotação) retornados pela extensão. Leia mais sobre interação de olhar no guia de entrada do OpenXR.

Interação do controlador

O Android XR é compatível com o perfil do controlador Oculus Touch para controladores 6DoF. Ambos os perfis são fornecidos pelo plug-in OpenXR.

Interação com o mouse

O perfil de interação do 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 Unity Input System.

Interação de postura da palma

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 Unity Input System. A postura da palma da mão não é uma alternativa a extensões ou pacotes que realizam o rastreamento das 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 visuais de avatar. A postura da palma consiste na posição e na orientação da palma.

Mãos XR

O pacote XR Hands permite acessar dados de rastreamento das mãos usando XR_EXT_hand_tracking e XR_FB_hand_tracking_aim, além de fornecer um wrapper para converter dados de articulação das mãos do rastreamento das 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 das mãos

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

Para mais detalhes, consulte a documentação do Unity sobre como configurar o XR Hands no seu projeto (link em inglês).

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 de prefab.

Malha da mão

O pacote Android XR Unity contém um recurso de malha da mão que oferece acesso ao XR_ANDROID_hand_mesh extension. O recurso Malha da 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 foi projetado para fornecer uma malha personalizada que representa a geometria real das mãos do usuário para visualização.

Prefab de mãos XR

O pacote XR Hands contém um exemplo chamado Visualizador de mãos, que contém mãos esquerda e direita totalmente equipadas para renderizar uma 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 em que os usuários podem voltar, abrir o iniciador ou ter uma visão geral dos apps 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 só responde a eventos de rastreamento da cabeça. O pacote XR Hands pode detectar quando um usuário realiza ações específicas, como interagir com o menu de navegação do sistema. Verificar AimFlags, SystemGesture e DominantHand permite saber quando essa ação do sistema é realizada. Para mais informações sobre AimFlags, consulte a documentação Enum MetaAimFlags do Unity.

XR Interaction Toolkit

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


OpenXR™ e o logotipo OpenXR são marcas registradas de propriedade da The Khronos Group Inc. e estão registradas como marcas comerciais na China, na União Europeia, no Japão e no Reino Unido.