Table of Contents

Diagnóstico e reparação: problemas de salto e deslocamento de conteúdo em aplicações

"O conteúdo virtual está flutuando", "os objetos estão tremendo", "a posição é instável" — estes são problemas frequentemente relatados por desenvolvedores em aplicações de RA. A instabilidade do conteúdo pode prejudicar significativamente a imersão e levar a uma experiência de utilizador insatisfatória.

Este artigo ajudará a compreender as causas do salto e deslocamento do conteúdo e fornecerá um método sistemático para investigação e otimização.

Distinguir "tremor normal" de "deslocamento anormal"

Primeiro, precisamos estabelecer uma expectativa realista. A implementação de rastreamento de RA de alta precisão em dispositivos móveis é inerentemente desafiadora. As seguintes situações estão dentro de uma margem normal, não podendo ser totalmente eliminadas, mas otimizadas:

  • Pequenos tremores de alta frequência (Jitter):

    • Manifestação: Os objetos virtuais apresentam uma oscilação sutil, na ordem dos milímetros.
    • Causa: Resulta do ruído físico dos sensores do dispositivo, dos limites de precisão do algoritmo de rastreamento visual e dos pequenos tremores naturais da mão humana ao segurar o dispositivo.
    • Exemplo: Ao observar de perto (por exemplo, colocando um objeto virtual em cima de uma mesa e aproximando-se), este pequeno tremor é normal.
  • Deslocamento temporário (Drift):

    • Manifestação: Quando o utilizador move ou roda o dispositivo rapidamente, o objeto virtual apresenta um desvio de posição durante um curto período (0.5-1 segundo), recuperando depois.
    • Causa: O sistema SLAM do dispositivo, durante movimentos rápidos, sofre com o erro acumulado da IMU (Unidade de Medição Inercial) e o atraso no posicionamento visual, levando a um deslocamento temporário.
    • Exemplo: Em cenários dinâmicos, isto é aceitável. Se o objeto conseguir "recuperar" rapidamente a posição correta, o sistema está a funcionar.

As seguintes situações, no entanto, são problemas anormais que requerem investigação e reparação:

  • Deslocamento de posição contínuo e significativo: O objeto virtual desvia-se lenta e continuamente da sua posição pretendida, sem recuperar ou recuperando apenas muito mais tarde.
  • Saltos ou cintilações intensas: O objeto virtual salta significativamente no ecrã ou aparece e desaparece intermitentemente.
  • Inconsistência na posição relativa a objetos reais: O objeto virtual não consegue permanecer estável "fixado" ao objeto real.
Nota

Além disso, é crucial notar:
Dispositivos que operam em modos 0DoF, 3DoF ou 5DoF têm, por natureza, uma sensação de "adesão" e "realismo" inferior aos dispositivos 6DoF. Quando os utilizadores se movem rapidamente, viram ou sobem/descem escadas, os objetos virtuais não conseguem acompanhar perfeitamente.
Portanto, fenómenos como conteúdo a "flutuar no ar" ou "deslocado" nestes modos são limitações fundamentais da capacidade do dispositivo, e não as "falhas de salto ou deslocamento" discutidas neste artigo.
Para entender as diferenças de experiência entre os diferentes modos xDoF, consulte a introdução em Melhores Práticas de Navegação.

Processo sistemático de resolução de problemas

Siga esta sequência de investigação, começando pelas causas mais prováveis.

Passo um: Fatores externos e de hardware (sem alteração de código)

  1. Verificação do ambiente físico:

    • Riqueza de texturas
      O ambiente de teste é demasiado monótono? Grandes superfícies como paredes brancas lisas, chão polido ou vidro podem causar falhas ou erros no posicionamento visual.
    • Objetos dinâmicos
      Existem muitos objetos em movimento no ambiente (como multidões, veículos em circulação)? Objetos dinâmicos podem interferir com o posicionamento visual, embora este problema seja geralmente temporário.
    • Cenários confusos
      Existem áreas facilmente confundíveis no ambiente (como elevadores idênticos em entradas diferentes)? Áreas visualmente semelhantes podem afetar o posicionamento, causando saltos entre locais parecidos. Este tipo de problema pode ser mitigado definindo informação prévia (priori) adequada.
  2. Verificação de hardware do dispositivo:

    • Aquecimento do dispositivo
      O dispositivo aquece significativamente após um longo período de funcionamento? O sobreaquecimento pode causar throttling da CPU/GPU, prejudicando o desempenho do sistema SLAM do dispositivo e sendo uma causa comum de deslocamento contínuo.
    • Desempenho do dispositivo
      Em dispositivos mais antigos, as limitações de hardware e precisão dos componentes podem tornar o deslocamento de escala mais provável, levando o conteúdo virtual a deslocar-se. Experimente testar noutro dispositivo para ajudar a determinar se o problema é uma limitação do hardware.

Passo dois: Análise da qualidade do mapa e do posicionamento (usando ferramentas externas)

  1. Usar o Mega Toolbox:

    • Execute o Mega Toolbox na mesma localização e observe a estabilidade do seu posicionamento.
    • Se o posicionamento do Toolbox também deslocar/saltar: O problema está no mapa em si ou o ambiente atual não é adequado para posicionamento.
    • Se o posicionamento do Toolbox for estável: O problema está na sua aplicação. Prossiga para o passo três.
  2. Simular a execução de dados EIF no PC:

    • Reproduza os dados EIF que gravou no local.
    • Se a reprodução também deslocar/saltar: Indica que o próprio cenário não é adequado para posicionamento, ou existe um problema com o mapa em si, ou o rastreamento de movimento do dispositivo que gravou o EIF sofreu deslocamento de escala.
    • Se a reprodução for estável: Indica que o cenário é favorável ao posicionamento, e o problema pode estar relacionado com fatores como aquecimento do dispositivo ou throttling durante a execução em tempo real da sua aplicação.

Passo três: Verificação da lógica interna da aplicação

  1. Atualização da pose:

    • Está a aplicar suavização adicional desnecessária aos dados de pose (como Lerp ou SmoothDamp excessivos)? Isto pode introduzir latência e sensação de deslocamento.
    • Normalmente, usar a pose bruta retornada pelo Mega é a opção mais estável.
  2. Correspondência de sistemas de coordenadas:

    • Confirme que os nós dos seus objetos virtuais, da câmara de cena e do MegaTracker estão corretamente relacionados, e que não alterou os valores do local transform dos próprios nós sob MegaBlocks.
    • Configurações de nós incorretas levam a transformações de sistema de coordenadas erradas, causando comportamentos imprevisíveis na renderização do conteúdo.

Aviso especial: Problemas de sobreposição visual em headsets OST

Após verificar a lógica de posicionamento e renderização, se estiver a usar um headset OST (Optical See-Through), há uma situação especial a considerar.

Mesmo com uma boa capacidade de rastreamento de movimento 6DoF, por vezes pode ocorrer uma sensação de "adesão" inadequada entre objetos virtuais e o espaço físico. Geralmente, isto não é uma falha do serviço de posicionamento Mega, mas sim um fenómeno inerente à ótica dos dispositivos OST, como erros de alinhamento ótico ou diferenças na calibração ocular.

Para uma explicação detalhada e métodos de diagnóstico deste tipo de problema, consulte a introdução em Notas Específicas para Dispositivos OST.

Resumo e melhores práticas

Após a investigação anterior, deverá ter identificado a causa raiz do salto ou deslocamento do conteúdo. Para facilitar a revisão rápida e a ação, resumimos os fenómenos comuns, causas possíveis e melhores práticas na tabela abaixo. Com base nos seus resultados, encontre a solução correspondente.

Tipo de problema Causa possível Melhor prática
Pequeno tremor Ruído de sensor, limite do algoritmo Este pequeno tremor é normal, geralmente não requer atenção especial
Deslocamento após movimento rápido Latência SLAM, correção do algoritmo Oriente o utilizador a mover o dispositivo suavemente. Se não recuperar rapidamente, requer atenção adicional
Deslocamento contínuo de grande amplitude Falha SLAM, diferenças entre dispositivos Teste cruzado noutro dispositivo
Saltos/cintilações intensas Cenário confuso, não amigável para posicionamento Defina informação prévia auxiliar ou oriente o utilizador
Posição relativa inconsistente com objeto real Erro de posicionamento/mapa, erro de lógica de código Teste com múltiplos ângulos e observe a posição do objeto virtual, corrija possíveis erros de código

Se o problema persistir após esta investigação e reparação, por favor, submeta um relatório detalhado através do método Reportar Problema, incluindo gravação de ecrã, gravação de dados EIF e registos detalhados.