Fazer o headset dar suporte ao EasyAR
Este artigo explica como usar o modelo de pacote de extensão para headset do EasyAR Sense Unity Plugin para desenvolver um pacote de extensão EasyAR compatível com dispositivos do tipo headset.
Antes de começar
Antes de entrar no desenvolvimento, é preciso entender primeiro como usar o EasyAR Sense Unity Plugin.
- Início rápido
- Execute o exemplo de AR Session, o exemplo de rastreamento de imagens ImageTracking_Targets e o exemplo de mapa espacial denso SpatialMap_Dense_BallGame; o comportamento deles em celulares e headsets é semelhante.
O desenvolvimento do plugin para headset envolverá funções básicas, então é preciso conhecer primeiro estes conteúdos:
- Entender AR Session
- Entender fonte de frames e fonte de frames externa
Além disso, você também precisa estar familiarizado com como desenvolver um package do Unity.
Preparar o dispositivo para AR/MR
Preparar o sistema de rastreamento de movimento/VIO
Garanta que o erro de rastreamento do dispositivo esteja sob controle. Algumas funções do EasyAR, como Mega, podem reduzir em certa medida o erro acumulado do dispositivo, mas um grande erro local também tornará os algoritmos do EasyAR instáveis. Em geral, esperamos que o drift de VIO fique dentro de 1‰.
Preparar o sistema de exibição
Garanta que, quando um objeto virtual com o mesmo tamanho e contorno de um objeto real for colocado no mundo virtual e a relação de transformação relativa entre ele e a câmera virtual for a mesma que a relação de transformação entre o objeto real correspondente e o dispositivo no mundo real, o objeto virtual possa ser exibido alinhado ao objeto real e que mover o dispositivo ou virar a cabeça não quebre o efeito visual. Você pode se basear no efeito do Vision Pro.
Preparar o SDK do dispositivo
Garanta que já exista uma API capaz de fornecer dados de frame de entrada externos. Esses dados devem ser gerados por dois, e somente dois, instantes de tempo no sistema, e é preciso garantir que não ocorram situações em que os dados não possam ser alinhados.
Usar o modelo de pacote de extensão para headset
Importe o EasyAR Sense Unity Plugin (package com.easyar.sense) pela janela Package Manager do Unity, usando instalação a partir de um arquivo tarball local. Descompacte o modelo de extensão para headset (package com.easyar.sense.ext.hmdtemplate) no diretório Packages do projeto Unity e renomeie a pasta Samples~ para Samples.
Nesse momento você deve ver uma estrutura de diretórios como esta:
.
├── Assets
└── Packages
└── com.easyar.sense.ext.hmdtemplate
├── CHANGELOG.md
├── Documentation~
├── Editor
├── LICENSE.md
├── package.json
├── Runtime
└── Samples
└── Combination_BasedOn_HMD
Dica
Se necessário, você pode usar qualquer método permitido pelo Unity para importar EasyAR Sense Unity Plugin e armazenar o modelo de extensão para headset.
Se não usar o modelo, você também pode consultar o guia do Unity para criar packages personalizados para criar um novo package.
Se o SDK do dispositivo não estiver organizado como um package do Unity, você deve descompactar o modelo de extensão para headset na pasta Assets do projeto Unity e, em seguida, remover do conteúdo extraído o arquivo package.json e quaisquer arquivos com extensão .asmdef. Observe que, nesse modo de uso, os usuários que combinarem o SDK do dispositivo com o EasyAR não poderão obter uma dependência de versão razoável.
Concluir a extensão de entrada em tempo de execução
Seguindo o método de criar uma extensão de entrada para dados de movimento do dispositivo e imagem, modifique Runtime/HMDTemplateFrameSource.cs e conclua a extensão de entrada adequada ao headset. Esse é o principal trabalho de desenvolvimento do pacote de extensão.
Concluir o menu do editor
Altere a string "HMD Template" na classe MenuItems para o nome do dispositivo. Se precisar de outras funções personalizadas do editor, você também pode adicionar outros scripts.
Quando o desenvolvedor selecionar AR Session (EasyAR) na view Hierarchy e clicar com o botão direito, estes itens de menu aparecerão:
EasyAR Sense>Extensions>Frame Source : [Device Name]: adiciona uma fonte de frames desse dispositivo à session atual.EasyAR Sense>Extensions>Frame Source : [Device Name (keep it only)]: adiciona uma fonte de frames desse dispositivo à session atual e mantém apenas uma.

Concluir o exemplo do aplicativo
O exemplo está em Samples/Combination_BasedOn_HMD. Para simplificar, o modelo de exemplo não inclui código; todas as funções de AR podem ser concluídas apenas com o conteúdo da cena e a configuração.
Adicione à cena conteúdos que suportem execução no dispositivo.
Dica
Se necessário, você também pode fazer o inverso: usar uma cena que possa ser executada no dispositivo e então adicionar os componentes EasyAR e outros objetos da cena de exemplo a ela.
Modifique os objetos projetados para ficar abaixo da origem da session.
Se a cena definir uma origem de session, mova
EasyARPandaeUIpara baixo do nó de origem.
EasyARPandafornecerá uma referência do comportamento de rastreamento de movimento do dispositivo, o que ajuda a identificar a causa quando o rastreamento está instável.O texto entre parênteses no nome desses objetos é uma dica para o desenvolvedor da extensão e pode ser removido:
(Move into Origin if there is any)(Move into Origin if there is any, set constraint source to your rendering camera)
Configure o comportamento do botão
HUD.Defina a constraint source de
UIpara a câmera virtual para garantir que os botões doHUDfuncionem como esperado.
Configure a função de raycast do
Canvas.Modifique o
Canvassob o nóUIpara garantir que o raycast funcione e que todos os botões e alternâncias da UI funcionem como esperado.O modelo já adiciona previamente no nó
Canvaso Tracked Device Graphic Raycaster do XR Interaction Toolkit; depois de importar o package correspondente, você poderá vê-lo.
Se ao executar no dispositivo você não usar o XR Interaction Toolkit, verá um aviso semelhante ao abaixo sobre script ausente; você pode removê-lo e adicionar o componente raycaster exigido pelo dispositivo.

Próximas etapas
- Antes de concluir o pacote de extensão, primeiro é preciso executar a verificação de bring-up da extensão de entrada
- Depois que tudo estiver concluído, você pode preparar o lançamento do pacote de extensão