Verificação da execução (bring-up) da extensão para headset
Para que o EasyAR funcione em um dispositivo, a parte mais crucial e desafiadora é garantir a correção dos dados de entrada. Quando se executa o EasyAR pela primeira vez em um novo dispositivo, mais de 90% dos problemas são causados por dados incorretos.
Sempre que possível, é recomendado verificar a correção dos dados diretamente, utilizando apenas o dispositivo e suas interfaces, com alguns métodos de teste, sem a presença do EasyAR. Este documento apresenta algumas abordagens empíricas para verificar dados usando a funcionalidade do EasyAR. Esse processo pode ajudar a compreender os dados de quadro de entrada externa, mas como o próprio EasyAR introduz erros, usar este sistema acoplado para validar a correção dos dados não é a escolha ideal.
Antes de começar
- Complete o desenvolvimento para Tornar o head-mounted display compatível com o EasyAR.
- Leia Início rápido para entender como usar o EasyAR Sense Unity Plugin.
- Saiba como usar amostras de head-mounted display.
- Entenda a Configuração de projeto android.
Executar exemplo de função básica
Na primeira vez que executar a verificação do EasyAR no dispositivo, é necessário garantir que essas funções sejam executadas sequencialmente, especialmente não se apresse em executar o Mega, pois o Mega possui alguma tolerância a falhas, sendo difícil detectar problemas quando executado por um curto período ou em um único cenário de realidade.
Observe as informações da sessão exibidas à sua frente, garanta que nenhum incidente inesperado ocorra e que a contagem de frames esteja aumentando continuamente.
Execute
Image, ou seja, a função de Image Tracking, e compare a consistência com o efeito de execução no celular (recomenda-se usar o iPhone como padrão). Preste atenção ao status do rastreamento e à cobertura da exibição do alvo.Quando a fusão de movimento não está ativada, o efeito do rastreamento de imagem terá uma sensação de atraso perceptível, o que é esperado. O processo de movimento deve estar correto e a posição deve se alinhar quando o dispositivo parar.
Execute
Dense, ou seja, a função de Dense Spatial Mapping, e compare a consistência com o efeito de execução no celular (recomenda-se usar o iPhone como padrão). Preste atenção à posição da malha, velocidade de geração e qualidade.Se a taxa de frames dos dados de entrada for baixa, a velocidade de geração da malha diminuirá, mas a qualidade não será significativamente prejudicada.
Esta função não pode ser executada em alguns dispositivos Android, e a qualidade da malha também varia de acordo com o dispositivo.
Importante
A extensão de entrada usada pelo pacote de extensão do headset é uma implementação de Custom Camera.
Ao usar produtos de avaliação (como licença pessoal, licença XR de avaliação ou serviço Mega de avaliação) em câmeras ou headsets personalizados, o EasyAR Sense parará de responder após 100 segundos (o tempo pode ser ajustado pelo EasyAR Business após aprovação para usuários Mega) após cada inicialização. Não há essa limitação ao usar a versão paga do EasyAR Sense e o serviço EasyAR Mega pago.
Se Image e Dense apresentarem efeitos consistentes ou melhores do que no celular, então a maioria das funções do EasyAR funcionará normalmente no dispositivo, e você pode começar a testar o Mega.
Resolução de problemas em execução: decomposição de problemas
Se não for possível reproduzir os mesmos resultados obtidos no telefone, a seguir está um processo detalhado de decomposição do problema que pode ser consultado para identificar a causa raiz. Recomenda-se monitorar continuamente a saída do system log.
Passo zero: Compreender os erros do sistema do próprio headset
Lembra-se dos requisitos de rastreamento de movimento e exibição descritos em Preparar o dispositivo para AR/MR?
Importante
Erros de rastreamento de movimento/VIO sempre afetarão a estabilidade dos algoritmos EasyAR de diferentes maneiras.
Importante
Erros do sistema de exibição podem fazer com que objetos virtuais e objetos reais não fiquem perfeitamente alinhados.
Em alguns casos com erros maiores, objetos virtuais podem parecer flutuar acima ou abaixo do objeto real e, em seguida, (parecer) estar constantemente à deriva. Este fenômeno pode ser observado no Pico 4E, mesmo sem usar o EasyAR, apenas abrindo seu próprio VST.
Passo um: Verifique o estado de execução da sessão
Mensagens ui exibem funções ou dados essenciais para o estado normal da sessão:
Disponibilidadedo ExternalFrameSourceCâmera virtualdo ExternalFrameSource
Se a exibição de informações de estado da sessão não estiver visível, tente alterar a opção para Log e leia o estado da sessão e o nome da fonte de frame em uso nos logs do sistema.
Tente remover todas as outras fontes de frame sob o nó ARSession e verifique se algo muda.
Passo 2: Confirmar a contagem de frames da câmera recebida pelo EasyAR
Funcionalidades ou dados que devem funcionar normalmente:
- O caminho dos
dados de frame de câmerado ExternalFrameSource na camada de código do Unity (não incluindo a correção dos dados nem o caminho dos dados para a camada nativa)
Este valor deve aumentar com o tempo, caso contrário, uma mensagem de aviso será exibida após alguns segundos.
Se este número não estiver aumentando, deve ser a primeira coisa a ser resolvida.
Passo três: Gravar EIF no dispositivo, depois reproduzir no editor Unity
Funcionalidades ou dados que devem funcionar normalmente:
- Caminho de entrada da
dados do frame da câmerapara a camada nativa em ExternalFrameSource (não inclui correção dos dados)raw camera image datanosdados do frame da câmeratimestampnosdados do frame da câmera(excluindo pontos temporais e sincronização de dados)
Clique em EIF para iniciar a gravação, clique novamente para parar.
Dica
É necessário parar a gravação corretamente para obter um arquivo EIF com indexação aleatória.
Ao reproduzir dados EIF no editor Unity, é melhor usar uma cena EasyAR limpa ou os exemplos do EasyAR para evitar configurações incorretas na cena.
Você poderá ver a reprodução dos dados do frame da câmera no editor Unity. Os dados de imagem não são byte-iguais; há codificação com perdas em todo o fluxo.
O EasyAR usa parâmetros de distorção nos cálculos, mas não aplica antidistorção na imagem ao exibi-la. Portanto, se esses dados forem fornecidos, ao reproduzir o arquivo EIF no Unity, você observará dados sem antidistorção, o que é esperado.
Dica
Ajuste a proporção da janela de jogo do Unity para corresponder à entrada, caso contrário os dados serão cortados na exibição.
Se a reprodução estiver muito rápida ou lenta, verifique a entrada do timestamp.
Nota
Você pode fazer muitas coisas com EIF, como executar rastreamento de imagem e mapa espacial denso no editor Unity usando EIF. Observe que a exibição durante a execução no dispositivo pode ser diferente.
Passo quatro: executar o rastreamento de imagem usando EIF
Funcionalidades ou dados obrigatórios:
raw camera image dataemdados do quadro da câmeraintrinsicsemdados do quadro da câmera(a precisão não é totalmente garantida, pois o algoritmo tolera certos erros)
Para executar o exemplo de rastreamento de imagem ImageTracking_Targets com EIF no Unity Editor, é necessário gravar um EIF onde uma imagem possa ser rastreada.
Nota
O rastreamento de imagem requer que o alvo ocupe uma proporção significativa da imagem. Se o rastreamento falhar, tente mover a cabeça para mais perto da imagem.
Se o rastreamento falhar continuamente ou se o objeto virtual aparecer distante do alvo na imagem, é provável que existam problemas com os intrinsics.
Se os dados da imagem apresentarem distorção, pode-se observar que o objeto virtual não cobre perfeitamente o alvo rastreado na imagem, o que é esperado. Este fenômeno é mais pronunciado quando o alvo de rastreamento está próximo à borda da imagem.
Passo cinco: executar o rastreamento de imagem no dispositivo
Funcionalidades ou dados que devem funcionar normalmente:
- Sistema de exibição próprio do dispositivo
raw camera image datanosdados do quadro da câmeraintrinsicsnosdados do quadro da câmera(a precisão dos dados não é totalmente garantida, pois o algoritmo tolera certos erros)extrinsicsnosdados do quadro da câmera- Consistência de coordenadas do
device poseentre osdados do quadro da câmerae osdados do quadro de renderização- Diferença de tempo do
device poseentre osdados do quadro da câmerae osdados do quadro de renderização
Nota
O rastreamento de imagem requer que o alvo ocupe uma certa proporção da imagem completa. Se não for possível rastrear a imagem, tente mover a cabeça para mais perto da imagem.
O rastreamento de imagem requer que o comprimento lateral horizontal da imagem corresponda ao tamanho do objeto no mundo real. No exemplo, é necessário rastrear uma imagem cujo comprimento lateral horizontal preencha completamente a borda longa de uma folha A4 colocada horizontalmente. Portanto, não rastreie imagens exibidas na tela do computador, a menos que use uma régua e ajuste o comprimento horizontal da imagem para o tamanho A4 com base nela.
Se o rastreamento de imagem funcionar perfeitamente com o EIF, mas não no dispositivo, isso precisa ser resolvido antes de prosseguir com outros testes. Será muito mais difícil resolver problemas em etapas posteriores.
Se objetos virtuais aparecerem flutuando longe do objeto real, mesmo quando a pessoa permanece imóvel, é provável que os intrinsics ou extrinsics estejam incorretos, ou que o device pose nos dados do quadro da câmera e nos dados do quadro de renderização não estejam no mesmo sistema de coordenadas, ou que o sistema de exibição esteja causando esse erro.
Se objetos virtuais se moverem continuamente quando você move a cabeça e parecerem ter atraso, é altamente provável que o device pose não esteja saudável. Isso frequentemente ocorre em várias situações (não se pode descartar a possibilidade de outros problemas):
- O
device posenão está sincronizado temporalmente com os dados doraw camera image data - O mesmo
posefoi usado nosdados do quadro da câmerae nosdados do quadro de renderização
Passo 6: Usar EIF e executar o mapa espacial denso no dispositivo
Funcionalidades ou dados que devem estar operando corretamente:
- Sistema de exibição próprio do dispositivo
- Dados de imagem da câmera bruta (
raw camera image data) emdados de frames da câmera- Parâmetros intrínsecos (
intrinsics) emdados de frames da câmera(a exatidão absoluta dos dados não é totalmente garantida, pois o algoritmo tem alguma tolerância a erros)- Parâmetros extrínsecos (
extrinsics) emdados de frames da câmera- Pose do dispositivo (
device pose) emdados de frames da câmera
Se a geração da malha for muito lenta e/ou a reconstrução do chão ficar irregular, é muito provável que haja um problema com a pose do dispositivo. Também é possível que o sistema de coordenadas da pose esteja incorreto ou que o timestamp da pose esteja errado.
Dica
Se a taxa de quadros (frame rate) dos dados de entrada for baixa, a geração da malha também será mais lenta, mas a qualidade não será visivelmente pior. Este comportamento é esperado.
Normalmente não é muito fácil discernir a posição exata da malha, portanto, erros no sistema de exibição podem não ser observáveis ao usar o mapa espacial denso.
Executando exemplo mega
Leia o seguinte para entender como usar o Mega no Unity. Se ainda não ativou o serviço Mega, entre em contato com o comercial EasyAR para obter uma avaliação.
- Introdução ao EasyAR Mega
- Meu localizador está pronto?
- Começando rapidamente com a amostra EasyAR Mega Unity
Em seguida, execute Mega no dispositivo e compare o efeito com a execução no telefone (sugerimos usar iPhone como padrão). Preste atenção a:
- Se a posição dos objetos está correta
- Se objetos distantes (10M ou mais) mostram posição e tamanho corretos
- Se objetos fora do centro visual mostram posição e tamanho corretos
- Se objetos mantêm posição e tamanho corretos ao girar a cabeça
Resolução de problemas durante a execução
Funcionalidades ou dados que devem funcionar normalmente:
- Sistema de exibição do próprio dispositivo
- Todos os dados em
dados de frame da câmeraedados de frame de renderização
Após validar as funcionalidades de rastreamento de imagem e mapa espacial denso, teoricamente o EasyAR Mega já deve estar suportado. Se o desempenho no headset for significativamente pior do que no celular, preste atenção aos seguintes pontos:
- Monitore os dados de pose e timestamp em
dados de frame da câmeraedados de frame de renderização - Monitore a saída do sistema de rastreamento de movimento/VIO. O panda sob
XR Originserá uma boa referência
Além disso, é crucial focar no sistema de exibição do próprio dispositivo, especialmente na exibição de objetos distantes, fora do centro do campo de visão ou durante movimentos da cabeça. Esses cenários são frequentemente negligenciados em testes internos, mas os problemas geralmente ainda são causados pelo sistema de exibição do dispositivo. Você precisa comunicar esses problemas e seus possíveis impactos à EasyAR, além de fornecer expectativas realistas de desempenho aos desenvolvedores.
Importante
Os usuários estão muito atentos a esses problemas de exibição, e muitos dispositivos realmente não conseguem oferecer uma exibição perfeita em grandes espaços. A EasyAR não pode resolver problemas inerentes ao hardware do dispositivo – isso requer iterações do fabricante. Enquanto isso, os usuários precisam compreender essas limitações.
Próximos passos
Temas relacionados
Exemplos que podem ser executados em um telefone:
- Exemplo de rastreamento de imagem ImageTracking_Targets, que pode ser usado para entender o efeito de execução esperado da funcionalidade de rastreamento de imagem
- Exemplo de mapa espacial denso SpatialMap_Dense_BallGame, que pode ser usado para entender o efeito de execução esperado da funcionalidade de mapeamento espacial denso
- Exemplo de fusão de movimento ImageTracking_MotionFusion, que pode ser usado para entender o efeito de execução esperado da funcionalidade de fusão de movimento
- Exemplo Mega MegaBlock_Basic, que pode ser usado para entender o efeito de execução esperado da funcionalidade Mega