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:
- Plug-ins de provedor de XR, incluindo o Unity OpenXR: Android XR e as extensões do Android XR para Unity.
- Pacotes de suporte a XR para adicionar mais recursos no nível do aplicativo.
- Um guia de arquitetura de XR que descreve a pilha de tecnologia do Unity XR e os subsistemas de XR.
- Configuração do projeto de RA
- Como criar e executar apps de RA/RV
- Orientações sobre gráficos de RV, incluindo o pipeline de renderização universal, renderização estéreo, renderização foveada, regiões de renderização multivisualização e tempo de frame de RV.
- Orientações de áudio de RA, incluindo suporte a espacializadores de áudio.
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.
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 |
---|---|---|---|
Android XR: sessão de RA
|
Android XR (extensões): gerenciamento de sessões
|
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. |
|
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. |
|
Android XR: câmera de RA |
N/A |
Esse recurso oferece suporte para estimativa de luz e transmissão em tela cheia. |
|
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. |
|
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. |
|
Android XR: AR Face
|
Android XR: rastreamento facial
|
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. |
|
Android XR: Raycast de RA
|
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. |
|
Android XR: âncora de RA |
Android XR (extensões): âncora
|
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. |
|
Android XR: Occlusion de RA
|
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. |
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
|
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 foveada (é necessário o plug-in OpenXR)
|
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. |
|
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. |
|
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:
- Abra a janela Project Settings (menu: Edit > Project Settings).
- Clique em XR Plug-in Management para abrir a seção do plug-in (se necessário).
- Selecione OpenXR na lista de plug-ins de XR.
- Na seção Perfis de interação, selecione o botão + para adicionar um perfil.
- 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
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.
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.