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
- Leia suporte a headsets do EasyAR para entender os tipos de headset já compatíveis com o EasyAR e os recursos do EasyAR que podem ser executados em headsets.
- Leia suporte a headsets do EasyAR no Unity para entender a arquitetura geral do suporte a headsets do EasyAR no Unity.
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> Library "]
space
space
DeviceB["Device B<br> Library "]
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 Sensedefinido peloEasyAR Sense Unity Pluginpara 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 Sensepoderá 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 Sensepoderã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 Sensetambém é necessário. No Unity, é obrigatório usar oEasyAR 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 Pluginnã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:
- Fundamentos de desenvolvimento Unity e uso de packages
- Desenvolvimento de Unity package
- Fundamentos da linguagem C#, incluindo IDisposable etc.
Além disso, algum conhecimento nas áreas abaixo ajudará você a entender melhor o sistema, especialmente como enviar dados corretos ao EasyAR:
- Desenvolvimento Android (China continental, internacional)
- Visão geométrica, especialmente correspondência de imagens e reconstrução 3D
Próximos passos
Nos artigos a seguir, você conhecerá o fluxo completo para criar um pacote de extensão de headset:
- Fazer o headset oferecer suporte ao EasyAR apresenta como usar um template para criar um novo pacote de extensão de headset e concluir o desenvolvimento básico da extensão de entrada
- Verificação de execução (bring-up) apresenta como verificar no dispositivo a correção da extensão de entrada
- Publicar o pacote de extensão apresenta como empacotar e distribuir o pacote de extensão de headset a usuários finais