Table of Contents

Pacote de extensão de headset do EasyAR Unity

Este documento apresenta os conceitos, os limites de capacidade e os conhecimentos de base necessários para criar um pacote de extensão de headset do EasyAR Unity.

Antes de começar

O que é o pacote de extensão de headset do EasyAR Unity

O pacote de extensão de headset do EasyAR Unity é um Unity package que contém uma série de códigos e exemplos para ajudar você a usar os recursos do EasyAR Sense no seu dispositivo de headset. Com esse pacote de extensão, você pode integrar a maior parte dos recursos do EasyAR Sense, como rastreamento de imagem e mapa espacial denso, ao seu dispositivo, aproveitando assim os poderosos recursos de AR fornecidos pelo EasyAR.

Usar o pacote de extensão de headset do EasyAR Unity é uma das formas de suporte a headsets do EasyAR. A figura abaixo mostra a arquitetura geral do EasyAR no Unity e a posição do pacote de extensão de headset nela.

block
  columns 4
  block:groupApp:4
    block:groupAppWrapper
      space
      App1["EasyAR + Device A<br>App"]
      space
      App2["EasyAR<br>App"]
      space
      App3["EasyAR + Device B<br>App"]
    end
  end
  
  block:groupSensePluginExtension
    columns 1
    SensePluginExtension["EasyAR Sense Unity Plugin<br>Extension for Device A"]
    space
  end
  block:groupSensePlugin
    columns 1
    SensePlugin["EasyAR Sense Unity Plugin"]
    space
  end
  block:groupXRI
    columns 1
    XRI["XR Interaction Toolkit"]
    space
  end
  block:groupARF
    columns 1
    ARF["AR Foundation"]
    space
  end
  
  block:groupDeviceAUnity
    columns 1
    DeviceAUnity["Device A<br>Unity SDK"]
    space
  end
  block:groupSense
    columns 1
    Sense["EasyAR Sense"]
    block:groupSenseWrapper
      MDeviceB["Device B<br>CameraDevice"]
      Others["..."]
    end
  end
  block:groupXRSubsystem:2
    columns 1
    XRSubsystem["XR Subsystems"]
    XRSDK["Unity XR SDK"]
  end

  block:groupSystem:4
    columns 1
    System["Native Library"]
    block:groupSystemWrapper
      space
      DeviceA["Device A<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
      space
      DeviceB["Device B<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
    end
  end
  
  SensePluginExtension --> App1
  SensePlugin --> App1
  SensePlugin --> App2
  SensePlugin --> App3
  ARF --> App3
  XRI --> App1
  XRI --> App3
  groupSense --> SensePlugin
  groupDeviceAUnity --> SensePluginExtension
  SensePlugin --> SensePluginExtension
  DeviceA --> groupDeviceAUnity
  DeviceA --> XRSDK
  XRSubsystem --> ARF
  XRSubsystem --> XRI
  DeviceB --> MDeviceB
  DeviceB --> XRSDK
  
  style groupApp fill:none,stroke:none,stroke-width:0px
  style groupAppWrapper fill:none,stroke:none,stroke-width:0px
  style groupSensePlugin fill:none,stroke:none,stroke-width:0px
  style groupARF fill:none,stroke:none,stroke-width:0px
  style groupXRI fill:none,stroke:none,stroke-width:0px
  style DeviceAUnity fill:none,stroke:none,stroke-width:0px
  style Sense fill:none,stroke:none,stroke-width:0px,color
  style groupSenseWrapper fill:none,stroke:none,stroke-width:0px
  style XRSubsystem fill:none,stroke:none,stroke-width:0px
  style System fill:none,stroke:none,stroke-width:0px
  style groupSystemWrapper fill:none,stroke:none,stroke-width:0px
  style groupSensePluginExtension fill:none,stroke:none,stroke-width:0px  

  classDef EasyAR fill:#6e6ce6,stroke:#333,color:#fff
  class SensePluginExtension EasyAR

A figura lista duas formas típicas de suporte a headsets: integrar o SDK do dispositivo por meio do pacote de extensão de headset do Unity (Device A) e integrar diretamente o SDK do dispositivo na biblioteca EasyAR Sense (Device B). Este documento apresenta principalmente a primeira.

Posso criar meu próprio pacote de extensão de headset?

Atualmente, o setor de AR/VR/MR/XR ainda não formou uma solução de interface muito unificada. Embora o OpenXR seja um bom candidato, a evolução da especificação e as implementações do setor ainda precisam de tempo. Portanto, em geral, não é tão fácil executar o EasyAR diretamente em dispositivos comerciais, e é bem provável que haja falta de interfaces de dados. Com o desenvolvimento do setor, alguns dispositivos emergentes também podem ter bom suporte de interface. Por exemplo, em 2024 a Apple abriu interfaces relacionadas ao Vision Pro, e essas interfaces já são suficientes para sustentar a execução do EasyAR, embora seu uso ainda exija algum conhecimento especializado.

Se você não conseguir fazer essa avaliação, recomenda-se entrar em contato com o fabricante do hardware ou com a equipe comercial do EasyAR para obter o suporte correspondente ao dispositivo.

Se você é fabricante de hardware e deseja oferecer suporte aos recursos do EasyAR no seu dispositivo, pode consultar a documentação a seguir para criar um pacote de extensão de headset, permitindo que a maior parte dos recursos do EasyAR seja executada no seu dispositivo. Ao mesmo tempo que fornece especificações de dados e interfaces, este documento não limita todos os detalhes de implementação. Qualquer forma de implementação ou definição de interface pode ser discutida. Entre em contato pelos canais comerciais.

O hardware abrangido por este documento precisa ter capacidade própria de rastreamento de movimento ou SLAM. Os recursos do EasyAR precisam ser executados sobre uma boa capacidade de rastreamento do dispositivo. Em geral, não se recomenda depender dos recursos do EasyAR para otimizar o rastreamento do dispositivo, pois isso cria uma dependência circular que, em teoria, amplifica erros e torna o sistema geral instável. Se o próprio dispositivo não tiver capacidade de rastreamento de movimento, a solução de suporte não está no escopo deste documento. Se necessário, entre em contato pelos canais comerciais.

Limites de capacidade do pacote de extensão de headset

O objetivo do pacote de extensão de headset é permitir que a maior parte dos recursos do EasyAR Sense seja executada no seu dispositivo. Para alcançar esse objetivo, você precisa entender os limites de capacidade do pacote de extensão de headset.

O que o pacote de extensão de headset inclui

A extensão que você implementará é:

  • Uma série de códigos que usa o recurso de câmera personalizada para capturar dados da API do seu dispositivo e enviá-los para o EasyAR Sense.
  • No Unity, a extensão de headset usa a fonte de dados de frames externos e um fluxo de dados do EasyAR Sense definido pelo EasyAR Sense Unity Plugin para simplificar o desenvolvimento de câmeras personalizadas.
  • No Unity, a extensão de headset é um Unity package que contém scripts de runtime, scripts de editor e samples da extensão. Você ou a EasyAR podem distribuí-lo a usuários finais.
Dica

Se você não quiser expor detalhes de integração a sistemas externos, pode entrar em contato com a EasyAR para discutir. A integração direta dentro do EasyAR Sense usando a interface C é viável e já tem precedentes.

Ao implementar a extensão, talvez você precise:

  • Modificar o design de interfaces e a implementação interna do seu SDK.
  • Discutir e confirmar com sua equipe o plano de obtenção e uso dos dados.
  • Gastar muito tempo verificando a correção dos dados, em vez de escrever código.

Depois de concluir a extensão, você verá:

  • A maioria dos recursos do EasyAR Sense poderá ser usada no seu dispositivo, aproveitando a capacidade de rastreamento de movimento dele.
  • Os serviços de nuvem do EasyAR compatíveis dentro do EasyAR Sense poderão ser usados no seu dispositivo.
  • Somente a licença EasyAR XR poderá ser usada. Licenças Personal, Professional e Classic não poderão ser usadas no seu dispositivo.
  • Todas as restrições de licença do EasyAR ao usar câmera personalizada se aplicam da mesma forma ao seu dispositivo.

O que o pacote de extensão de headset não inclui

Esta extensão não pode ser usada sem o EasyAR Sense:

  • Esta extensão de headset não é executada de forma independente. Como dependência, o EasyAR Sense também é necessário. No Unity, é obrigatório usar o EasyAR Sense Unity Plugin.
  • Ela não chama diretamente APIs de serviços em nuvem do EasyAR, como o serviço de localização do EasyAR Mega. Essas chamadas são concluídas internamente no EasyAR Sense.
  • No Unity, ela não chama diretamente métodos de interface de recursos de AR, como rastreamento de imagem. Eles são concluídos internamente no EasyAR Sense Unity Plugin.
  • No Unity, ela não modifica o transform de objetos da cena ou de alvos de rastreamento. Eles são concluídos internamente no EasyAR Sense Unity Plugin.

Esta extensão não pode ser usada sem o SDK do seu dispositivo:

  • No Unity, a extensão de headset ou o EasyAR Sense Unity Plugin não modifica o transform da câmera na cena. Isso deve ser feito pelo SDK do seu dispositivo ou por sua cadeia de dependências.

Alguns recursos do EasyAR continuam indisponíveis por meio da extensão de headset:

  • O recurso de rastreamento de superfície não estará disponível.
  • O rastreamento de movimento próprio do EasyAR não estará disponível.
  • A detecção de planos, que faz parte do rastreamento de movimento do EasyAR, não estará disponível.

Como usar o Mega no meu dispositivo?

Executar o Mega no dispositivo é uma questão que preocupa muitos usuários. No Unity, o serviço Mega é um módulo funcional executado sobre vários recursos básicos do EasyAR Sense. Portanto, desde que seu dispositivo ofereça suporte completo ao EasyAR Sense, o Mega também será compatível.

Em geral, não se recomenda executar diretamente o exemplo do Mega no dispositivo logo no início para verificar o suporte do dispositivo ao Mega, porque o Mega usa de forma abrangente todos os dados de entrada e tem uma tolerância relativamente grande a erros nesses dados. Executar diretamente o exemplo do Mega provavelmente fará com que interfaces de dados incompatíveis ou baixa qualidade de dados produzam um efeito de execução inadequado, e será difícil determinar onde está o problema. Isso trará muita dificuldade para a depuração posterior.

Importante

O serviço Mega tem certos requisitos quanto à capacidade de rastreamento de movimento do dispositivo. Se a capacidade de rastreamento de movimento do dispositivo for ruim, o desempenho do Mega também será afetado. Em cenários de AR de grande escala, também é necessário prestar atenção especial às diferenças de desempenho entre ambientes internos e externos.

Importante

O Mega geralmente atende a cenários de grande espaço. Por isso, é preciso prestar atenção especial ao efeito de exibição de objetos distantes e de objetos ao girar a cabeça ou se mover. Se o sistema de exibição do dispositivo tiver erros grandes, mesmo que o Mega em si esteja funcionando normalmente, o usuário sentirá que os objetos virtuais não conseguem se ajustar corretamente aos objetos reais.

Conhecimentos de base necessários e configuração da equipe

Criar um pacote de extensão de headset não é uma tarefa simples. Você e sua equipe precisarão realizar trabalho aprofundado em vários domínios. Em geral, para concluir uma extensão de headset, além da participação de desenvolvimento Unity, é necessário envolver membros da equipe fora do desenvolvimento Unity. Devido à falta de padrões, modificar apenas algo no motor 3D normalmente não é suficiente para concluir uma extensão de headset. Recomenda-se envolver engenheiros de sistema, engenheiros de SDK e outros desenvolvedores de baixo nível desde o primeiro dia.

Construir dispositivos AR/VR exige conhecimento de domínio. De modo semelhante, executar e verificar o EasyAR Sense no dispositivo exigirá que você ou sua equipe sejam especialistas nas seguintes áreas:

  • Estrutura física e sistema de renderização do seu dispositivo
  • Geometria do sistema de câmeras
  • Desenvolvimento de SDK
  • Habilidades gerais de debug em Android, como adb (China continental, internacional)

Se você trabalha com Unity, também precisará conhecer:

Além disso, algum conhecimento nas áreas abaixo ajudará você a entender melhor o sistema, especialmente como enviar dados corretos ao EasyAR:

Próximos passos

Nos artigos a seguir, você conhecerá o fluxo completo para criar um pacote de extensão de headset:

Tópicos relacionados