Table of Contents

Fazer headset suportar EasyAR

Este artigo introduz como usar o modelo de pacote de extensão para headset do EasyAR Sense Unity Plugin para desenvolver um pacote de extensão EasyAR que suporta dispositivos headset.

Antes de começar

Antes de começar o desenvolvimento, é necessário entender como usar o EasyAR Sense Unity Plugin.

  • Início rápido
  • Executar os exemplos AR Session, ImageTracking_Targets e SpatialMap_Dense_BallGame, cujos efeitos são semelhantes em smartphones e headsets.

O desenvolvimento de plugins para headset envolve algumas funcionalidades básicas, que devem ser compreendidas primeiro:

Além disso, é necessário familiarizar-se com como desenvolver um pacote Unity.

Preparar o dispositivo para AR/MR

  • Preparar sistema de rastreamento de movimento/VIO

    Garantir que o erro de rastreamento do dispositivo seja controlado. Algumas funcionalidades do EasyAR como o Mega podem reduzir o erro acumulado do dispositivo até certo ponto, mas grandes erros locais também podem tornar os algoritmos do EasyAR instáveis. Geralmente, espera-se que a deriva do VIO seja inferior a 1‰.

  • Preparar sistema de exibição

    Garantir que quando um objeto virtual com o mesmo tamanho e contorno de um objeto real for colocado no mundo virtual, e sua relação de transformação relativa à câmera virtual for a mesma que a relação entre o objeto real e o dispositivo, o objeto virtual possa ser exibido sobreposto ao objeto real, e mover o dispositivo ou virar a cabeça não quebre o efeito de exibição. Pode-se referenciar o efeito do Vision Pro.

  • Preparar SDK do dispositivo

    Garantir que já exista uma API que possa fornecer dados de quadro de entrada externa. Esses dados devem ser gerados em dois e apenas dois pontos no tempo no sistema, sendo necessário garantir que não ocorram casos de dados não alinhados.

Usar o modelo de pacote de extensão para headset

Através da janela Package Manager do Unity, instalar o plugin usando um arquivo tarball local para importar o EasyAR Sense Unity Plugin (pacote com.easyar.sense). Extrair o modelo de extensão para headset (pacote com.easyar.sense.ext.hmdtemplate) para o diretório Packages do projeto Unity e renomear a pasta Samples~ para Samples.

Neste ponto, a estrutura de diretórios deve ser assim:

.
├── Assets
└── Packages
    └── com.easyar.sense.ext.hmdtemplate
        ├── CHANGELOG.md
        ├── Documentation~
        ├── Editor
        ├── LICENSE.md
        ├── package.json
        ├── Runtime
        └── Samples
            └── Combination_BasedOn_HMD
Dica

Se necessário, pode-se usar qualquer método permitido pelo Unity para importar o EasyAR Sense Unity Plugin e armazenar o modelo de extensão para headset.

Se não usar o modelo, pode-se consultar o guia do Unity para criar pacotes personalizados para criar um novo pacote.

Se o SDK do dispositivo não estiver organizado como pacote Unity, é necessário extrair o modelo de extensão para headset na pasta Assets do Unity e, em seguida, excluir o package.json e quaisquer arquivos com sufixo .asmdef dos arquivos extraídos. Observe que, nesse modo de uso, os usuários que usam simultaneamente o SDK do dispositivo e o EasyAR não poderão obter dependências de versão adequadas.

Completar a extensão de entrada em tempo de execução

Seguir o método criar extensão de entrada para dados de imagem e movimento do dispositivo, modificar Runtime/HMDTemplateFrameSource.cs e completar a extensão de entrada adaptada para headset. Este é o principal trabalho de desenvolvimento do pacote de extensão.

Completar o menu do editor

Modificar a string "HMD Template" na classe MenuItems para representar o nome do dispositivo. Se outras funcionalidades personalizadas no editor forem necessárias, outros scripts também podem ser adicionados.

Quando os desenvolvedores selecionam AR Session (EasyAR) na visualização Hierarchy e clicam com o botão direito, aparecerão estes itens de menu:

  • EasyAR Sense > Extensions > Frame Source : [Nome do Dispositivo]: adiciona uma fonte de dados de quadro deste dispositivo à sessão atual.
  • EasyAR Sense > Extensions > Frame Source : [Nome do Dispositivo (mantenha apenas)]: adiciona e mantém apenas uma fonte de dados de quadro deste dispositivo na sessão atual.

alt text

Completar o exemplo de aplicação

O exemplo está localizado em Samples/Combination_BasedOn_HMD. Por simplicidade, o modelo de exemplo não contém código; toda a funcionalidade AR é concluída apenas pelo conteúdo e configuração da cena.

  1. Adicionar conteúdo compatível com a execução do dispositivo à cena.

    Dica

    Se necessário, também pode-se fazer o inverso: usar uma cena que funcione no dispositivo e adicionar componentes EasyAR e outros objetos dos exemplos à cena.

  2. Modificar objetos projetados para serem colocados sob a origem da sessão.

    Se a origem da sessão estiver definida na cena, mover EasyARPanda e UI para o nó de origem.

    alt text

    EasyARPanda fornecerá uma referência para o comportamento de rastreamento de movimento do dispositivo, o que ajudará a determinar a causa de instabilidades no rastreamento.

    Os textos entre parênteses nos nomes desses objetos são dicas para o desenvolvedor da extensão e podem ser excluídos:

    • (Mover para Origin se houver alguma)
    • (Mover para Origin se houver alguma, definir constraint source para sua câmera de renderização)
  3. Configurar o comportamento dos botões HUD.

    Definir o constraint source de UI como a câmera virtual, para garantir que os botões HUD funcionem conforme o esperado.

    alt text

  4. Configurar a funcionalidade de raycast do Canvas.

    Modificar o Canvas sob o nó UI, para garantir que o raycast funcione e que todos os botões e interruptores da UI funcionem conforme o esperado.

    O modelo já adicionou previamente o Tracked Device Graphic Raycaster do XR Interaction Toolkit sob o nó Canvas, que ficará visível após importar o pacote correspondente.

    alt text

    Se o XR Interaction Toolkit não for usado durante a execução no dispositivo, aparecerá um aviso de script ausente semelhante ao abaixo. Pode-se excluí-lo e adicionar o componente raycaster necessário para o dispositivo.

    alt text

Próximos passos

Tópicos relacionados