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:
- Entender AR Session
- Entender fonte de dados de quadro e fonte de dados de quadro externa
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.

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.
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.
Modificar objetos projetados para serem colocados sob a origem da sessão.
Se a origem da sessão estiver definida na cena, mover
EasyARPandaeUIpara o nó de origem.
EasyARPandafornecerá 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)
Configurar o comportamento dos botões
HUD.Definir o constraint source de
UIcomo a câmera virtual, para garantir que os botõesHUDfuncionem conforme o esperado.
Configurar a funcionalidade de raycast do
Canvas.Modificar o
Canvassob 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.
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.

Próximos passos
- Antes de avançar na conclusão do pacote de extensão, é necessário primeiro executar a verificação (bring-up) da extensão de entrada
- Após a conclusão total, pode-se preparar a distribuição do pacote de extensão