Table of Contents

Pacote de extensão headset do EasyAR Unity

Este documento introduz o conceito do pacote de extensão headset do EasyAR Unity, os limites de capacidade e o conhecimento de fundo necessário para criar um pacote de extensão headset.

Antes de começar

O que é o EasyAR Unity headset extension package

O EasyAR Unity headset extension package é um pacote Unity, contendo uma série de códigos e exemplos para ajudar você a utilizar os recursos do EasyAR Sense em seu dispositivo headset. Através deste pacote de extensão, você pode integrar a maioria das funcionalidades do EasyAR Sense (como rastreamento de imagem, mapa denso do espaço, etc.) em seu dispositivo, aproveitando assim os poderosos recursos de RA fornecidos pelo EasyAR.

Usar o EasyAR Unity headset extension package é uma das maneiras de suporte a headsets do EasyAR. O diagrama abaixo mostra a arquitetura geral do EasyAR no Unity e o lugar do pacote de extensão para headset dentro dela.

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

O diagrama lista duas formas típicas de suporte a headset: integração com o SDK do dispositivo através do pacote de extensão Unity para headset (Device A) e integração direta com o SDK do dispositivo dentro da biblioteca EasyAR Sense (Device B). Este documento foca principalmente na primeira abordagem.

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

Atualmente, a indústria de AR/VR/MR/XR ainda não possui um esquema de interface muito padronizado. Embora o OpenXR seja um bom candidato, a evolução da especificação e a implementação pela indústria ainda precisam de tempo. Portanto, geralmente não é tão simples executar o EasyAR diretamente em dispositivos comerciais, sendo provável que haja falta de interfaces de dados. Com o desenvolvimento da indústria, alguns dispositivos emergentes também podem oferecer um bom suporte de interface. Por exemplo, em 2024, a Apple disponibilizou interfaces relacionadas ao Vision Pro, que já são suficientes para suportar a execução do EasyAR, embora seu uso ainda exija algum conhecimento especializado.

Se você não consegue determinar, é recomendável entrar em contato com o fabricante do hardware ou com o setor comercial da EasyAR para obter o suporte correspondente para o dispositivo.

Se você é um fabricante de hardware e deseja suportar as funcionalidades do EasyAR em seu dispositivo, você pode consultar o conteúdo da documentação a seguir para criar um pacote de extensão para headset, permitindo que a maioria das funcionalidades do EasyAR funcione em seu dispositivo. Este documento fornece especificações de dados e interfaces, mas não define todos os detalhes de implementação. Qualquer método de implementação ou definição de interface pode ser discutido. Sinta-se à vontade para entrar em contato através de canais comerciais para conversar.

O hardware coberto por este documento precisa ter capacidade própria de rastreamento de movimento ou SLAM. As funcionalidades do EasyAR precisam ser executadas sobre uma boa capacidade de rastreamento do dispositivo. Geralmente, não é recomendado depender das funcionalidades do EasyAR para otimizar o rastreamento do dispositivo, pois isso criaria uma dependência cíclica que, teoricamente, amplificaria erros e levaria a um sistema geral instável. Se o dispositivo em si não tiver capacidade de rastreamento de movimento, o esquema de suporte não está dentro do escopo deste documento. Se necessário, entre em contato através de canais comerciais para discussão.

Limites de capacidade do headset extension package

O objetivo do headset extension package é permitir que a maioria dos recursos do EasyAR Sense funcionem no seu dispositivo. Para atingir esse objetivo, você precisa entender os limites de capacidade do headset extension package.

Conteúdo incluído no pacite de extensão do headset

Você implementará a extensão como:

  • Código para obter dados da API do seu dispositivo e enviá-los para EasyAR Sense usando a funcionalidade de câmera personalizada.
  • No Unity, a extensão do headset usa a fonte de dados de quadro externo e um fluxo de dados EasyAR Sense definido pelo EasyAR Sense Unity Plugin para simplificar o desenvolvimento de câmeras personalizadas.
  • No Unity, a extensão do headset é um pacote Unity contendo scripts de tempo de execução, scripts do editor e um exemplo de extensão, que você ou a EasyAR pode distribuir aos usuários finais.
Dica

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

Durante a implementação da extensão, você pode:

  • Modificar o design de interface e a implementação interna do seu SDK.
  • Discutir e confirmar com sua equipe o esquema de aquisição e uso de dados.
  • Gastar muito tempo validando a correção dos dados em vez de escrever código.

Após concluir a extensão, você verá:

  • A maioria das funcionalidades do EasyAR Sense pode ser usada em seu dispositivo, aproveitando a capacidade de rastreamento de movimento do seu dispositivo.
  • Os serviços em nuvem EasyAR suportados dentro do EasyAR Sense podem ser usados em seu dispositivo.
  • Apenas licenças EasyAR XR podem ser usadas. Licenças Personal, Pro e Classic não funcionarão em seu dispositivo.
  • Todas as limitações de licença EasyAR ao usar câmeras personalizadas se aplicam ao seu dispositivo da mesma maneira.

O que não está incluído no pacote de extensão para headset

Esta extensão não pode funcionar sem o EasyAR Sense:

  • Esta extensão para headset não funciona de forma independente; como dependência, o EasyAR Sense também é necessário. No Unity, o EasyAR Sense Unity Plugin deve ser usado.
  • Ela não chama diretamente as APIs de serviços baseados em nuvem do EasyAR (como o serviço de localização EasyAR Mega), essas chamadas são feitas internamente pelo EasyAR Sense.
  • No Unity, ela não chama diretamente os métodos de interface para funcionalidades de AR (como rastreamento de imagem), eles são feitos internamente pelo EasyAR Sense Unity Plugin.
  • No Unity, ela não modifica o transform de objetos na cena ou de alvos de rastreamento, isso é feito internamente pelo EasyAR Sense Unity Plugin.

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

  • No Unity, a extensão para headset ou o EasyAR Sense Unity Plugin não modificam o transform da câmera na cena; isso deve ser feito no SDK do seu dispositivo ou em sua cadeia de dependências.

Algumas funcionalidades do EasyAR permanecem indisponíveis através da extensão para headset:

  • A funcionalidade de rastreamento de superfícies não poderá ser usada.
  • O rastreamento de movimento próprio do EasyAR não poderá ser usado.
  • A detecção de planos (parte do rastreamento de movimento do EasyAR) não poderá ser usada.

Como usar o Mega no meu dispositivo?

Executar o Mega no dispositivo é uma preocupação de muitos usuários. No Unity, o serviço Mega é um módulo funcional que opera sobre várias funcionalidades básicas do EasyAR Sense. Portanto, desde que seu dispositivo seja totalmente compatível com o EasyAR Sense, o Mega também será suportado.

Geralmente, não é recomendado começar validando o suporte do dispositivo ao Mega executando diretamente o exemplo do Mega. Isso ocorre porque o Mega utiliza de forma abrangente todos os dados de entrada e possui uma tolerância relativamente alta a erros nesses dados. Executar o exemplo do Mega diretamente pode resultar em efeitos de operação inadequados devido a incompatibilidades nas interfaces de dados ou à baixa qualidade dos dados, dificultando a identificação da origem do problema e complicando futuros ajustes.

Importante

O serviço Mega exige uma certa capacidade de rastreamento de movimento do dispositivo. Se a capacidade de rastreamento de movimento do dispositivo for insuficiente, o desempenho do Mega será afetado. Em cenários AR de grande escala, é necessário prestar atenção especial às diferenças de desempenho entre ambientes internos e externos.

Importante

O Mega geralmente serve a cenários de grande escala, exigindo atenção extra ao efeito de exibição de objetos distantes e ao movimento ao girar a cabeça ou se deslocar. Se o sistema de exibição do dispositivo tiver erros significativos, mesmo que o Mega funcione corretamente, o usuário pode sentir que os objetos virtuais não se alinham corretamente com os objetos reais.

Requisitos de conhecimento e configuração de equipe

Criar um pacote de extensão para headset não é uma tarefa simples, exigindo que você e sua equipe realizem um trabalho aprofundado em várias áreas. Geralmente, para concluir uma extensão de headset, é necessário o envolvimento de desenvolvimento Unity, além de outros membros da equipe fora do desenvolvimento Unity. Devido à falta de padrões, modificar apenas o motor 3D geralmente não é suficiente para concluir a extensão do headset. Recomenda-se envolver engenheiros de desenvolvimento de baixo nível, como engenheiros de sistemas e engenheiros de SDK, desde o primeiro dia.

Desenvolver dispositivos AR/VR requer conhecimento de domínio específico. Da mesma forma, executar e validar o EasyAR Sense em seu dispositivo exigirá que você ou sua equipe sejam especialistas nas seguintes áreas:

  • A estrutura física e o sistema de renderização do seu dispositivo
  • Geometria do sistema de câmera
  • Desenvolvimento de SDK
  • Habilidades gerais de depuração Android, como adb (China continental, Internacional)

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

Além disso, algum conhecimento nestas áreas o ajudará a entender melhor o sistema, especialmente como enviar os dados corretos para o EasyAR:

  • Desenvolvimento Android (China continental, Internacional)
  • Visão computacional geométrica, particularmente correspondência de imagens e reconstrução 3D

Próximos passos

Nos próximos artigos, você aprenderá o fluxo completo para criar um pacote de extensão para headset:

Tópicos relacionados