Table of Contents

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:

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.

alt text

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.

  1. 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.

  2. Modifique os objetos projetados para ficar abaixo da origem da session.

    Se a cena definir uma origem de session, mova EasyARPanda e UI para baixo do nó de origem.

    alt text

    EasyARPanda fornecerá 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)
  3. Configure o comportamento do botão HUD.

    Defina a constraint source de UI para a câmera virtual para garantir que os botões do HUD funcionem como esperado.

    alt text

  4. Configure a função de raycast do Canvas.

    Modifique o Canvas sob o nó UI para 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ó Canvas o Tracked Device Graphic Raycaster do XR Interaction Toolkit; depois de importar o package correspondente, você poderá vê-lo.

    alt text

    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.

    alt text

Próximas etapas

Tópicos relacionados