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
- Leia o Suporte a headsets do EasyAR para entender os tipos de headsets suportados pelo EasyAR e os recursos do EasyAR que podem ser executados em headsets.
- Leia o Suporte a headsets do EasyAR no Unity para entender a arquitetura geral do suporte a headsets do EasyAR no Unity.
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> 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
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 Senseusando 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 Sensedefinido peloEasyAR Sense Unity Pluginpara 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 Sensepode 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 Sensepodem 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 Sensetambém é necessário. No Unity, oEasyAR Sense Unity Plugindeve 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 Pluginnã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:
- Fundamentos de desenvolvimento Unity e uso de pacotes
- Desenvolvimento de pacotes Unity
- Fundamentos da linguagem C#, incluindo IDisposable e outros
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:
- Suporte ao EasyAR para headsets apresenta como usar um modelo para criar um novo pacote de extensão para headset e concluir o desenvolvimento básico da extensão de entrada
- Validação operacional (bring-up) explica como verificar a correção da extensão de entrada no dispositivo
- Publicar pacote de extensão detalha como empacotar e distribuir o pacote de extensão para headset aos usuários finais