Combinar object tracking e motion tracking
Este artigo descreve como fundir 3D object tracking com motion tracking do dispositivo para melhorar a estabilidade do tracking e a experiência do usuário em cenários complexos.
Princípio básico
Motion Fusion combina dados de pose do 3D object tracking e do motion tracking do dispositivo para obter uma estimativa de pose mais robusta.
Sincronização e complementaridade de dados
- Visual tracking: calcula a pose do frame atual (posição + rotação) por correspondência de pontos de característica da imagem, mas é facilmente afetado por oclusão, desfoque ou movimento rápido.
- Motion tracking: usa a saída de alta frequência dos sensores IMU e a saída da imagem visual para obter dados de movimento do dispositivo, mas pode apresentar erro de drift acumulado.
- Motion Fusion:
- Alinha os sistemas de coordenadas da pose do visual tracking e da pose do motion tracking do dispositivo.
- Quando o objeto alvo está claramente visível e se move de forma estável, o visual tracking é dominante; sua pose é enviada continuamente ao módulo de fusion para reduzir o drift acumulado.
- Quando o objeto alvo é perdido, ocupa uma parte muito pequena do frame ou se move rapidamente, o visual tracking falha e o motion tracking se torna dominante.
Pontos técnicos principais
- Alinhamento de timestamp: alinha os timestamps dos frames visuais com os dados de motion tracking para evitar jitter causado por latência.
- Alinhamento do sistema de coordenadas: alinha os sistemas de coordenadas com base na trajetória do visual tracking e na trajetória do motion tracking.
- Relocalização: quando o objeto alvo aparece novamente, o visual tracking assume e corrige rapidamente possíveis erros acumulados.
Cenários aplicáveis e limitações
Motion Fusion não é adequado para todos os cenários. Motion Fusion não se aplica em qualquer uma das situações a seguir:
- O dispositivo alvo não suporta recursos de motion tracking como ARCore/ARKit. Para a lista detalhada de suporte a dispositivos, consulte Suporte a dispositivos de motion tracking.
- O objeto alvo é dinâmico na cena, como um brinquedo ou figure segurado na mão.
Em outros cenários, Motion Fusion melhora muito a experiência do 3D object tracking.
- Movimento rápido: movimento rápido do dispositivo na mão pode causar motion blur e fazer o visual tracking falhar.
- Alvo desaparece: o conteúdo virtual de toda a cena ainda pode ser apresentado quando a visão sai do alvo ou ele é ocluído.
- Longe do alvo: o tracking continua estável quando o objeto alvo fica pequeno demais no frame.
- Condições de baixa iluminação: o desempenho do visual tracking diminui e a experiência precisa ser mantida.
Efeitos e resultados esperados
Quando o cenário é aplicável, Motion Fusion oferece uma experiência mais estável e suave do que usar apenas 3D object tracking.
Resultado ideal
- Tracking mais estável: objetos virtuais não tremem nem saltam.
- Transição suave: quando o visual tracking falha, a mudança da pose fusionada permanece contínua e natural.
- Resistência a interferências: quando o objeto alvo é perdido ou ocluído, ou o dispositivo se move rapidamente, o objeto virtual ainda pode seguir o movimento do dispositivo.
Casos não ideais e respostas
| Fenômeno | Causa | Percepção do usuário | Solução |
|---|---|---|---|
| Não efetivo inicialmente | Motion tracking precisa de tempo para inicializar | Conteúdo desaparece na fase inicial | Forneça prompts de UI adequados e confirme que a inicialização do motion tracking do sistema foi concluída |
| Drift evidente | Erros do sistema se acumulam e ficam muito tempo sem correção visual | Objetos virtuais desviam da posição original | Oriente os usuários a reduzir o tempo de oclusão ou adicione prompts de relocalização visual |
| Queda de desempenho | Duas funções rodam simultaneamente por muito tempo | Frame rate cai e a imagem engasga | Fenômeno normal; Motion Fusion pode ser desativado pela API |
Método de verificação do resultado esperado
Teste com um dispositivo compatível em uma cena real:
- Aponte para o objeto alvo e confirme que o objeto virtual está estável.
- Oclua o objeto com a mão por 2 segundos e mova o dispositivo; observe se o objeto virtual se move suavemente.
- Remova a mão e confirme que o objeto virtual volta rapidamente à posição correta sem saltos.
Resumo e melhores práticas
Motion Fusion melhora significativamente a robustez do 3D object tracking em muitos cenários, mas requer suporte de hardware do dispositivo e desempenho suficiente.
Referência de API para ativar/desativar Motion Fusion em tempo real:
- Native: setResultPostProcessing
- Unity: EnableMotionFusion