Controlar o processo de rastreamento do Mega
Este artigo descreve como controlar várias funções e parâmetros durante o processo de rastreamento do Mega para atender às necessidades de diferentes cenários de aplicação.
Antes de começar
Ajustar o nível de suporte do dispositivo
A propriedade MegaTrackerFrameFilter.MinInputFrameLevel de MegaTrackerFrameFilter é usada para especificar o nível mínimo de dispositivo suportado pelo Mega.
![]()
O Mega pode funcionar em quase todos os tipos de fontes de dados de frame, mas diferentes fontes afetam o efeito de rastreamento de maneiras distintas.
Por padrão, o Mega seleciona a fonte de dados de frame de nível mais alto suportada pelo dispositivo para rastreamento. A sessão padrão compatível com Mega já está configurada com fontes de dados de frame compatíveis com 6DoF e 5DoF.
Para suportar um determinado nível de fonte de dados de frame durante a operação do Mega, duas condições devem ser atendidas:
- A fonte de dados de frame necessária deve estar no grupo de fontes de frame opcionais da sessão.
- MegaTrackerFrameFilter.MinInputFrameLevel deve ser maior ou igual ao nível CameraTransformType da fonte de dados de frame necessária.
Por exemplo, para suportar rastreamento 3DoF na sessão padrão, é necessário:
- Adicionar ThreeDofCameraDeviceFrameSource ao grupo de fontes de frame da sessão.
- Modificar MegaTrackerFrameFilter.MinInputFrameLevel para ThreeDof.
Outro exemplo, para remover o suporte a rastreamento 5DoF na sessão padrão, é necessário:
- Remover InertialCameraDeviceFrameSource do grupo de fontes de frame da sessão.
- Modificar MegaTrackerFrameFilter.MinInputFrameLevel para SixDof (mesmo sem modificação, como não há fonte de frame 5DoF, o 5DoF não será usado).
Quando não houver fontes de frame disponíveis que atendam às condições, a montagem da sessão falhará.
Gerenciar alvos de rastreamento
Ao usar o Mega, é necessário especificar o target (bloco) usado pelo MegaTrackerFrameFilter.
Controlar a origem do bloco
Na maioria dos casos, recomenda-se manter a configuração padrão, ou seja, importar blocos usando o Mega Studio no editor.
Selecione o objeto Mega Tracker na sessão, a opção Block Root Source deve permanecer como External (padrão).
![]()
Além disso, é necessário especificar Block Root como o objeto MegaBlocks na cena.
![]()
Modificar a opção Block Root Source permite especificar outras formas de origem de blocos, como ao importar dados usando ema, geralmente seleciona-se Internal ou Mixed.
Em scripts, é possível modificar BlockHolder.BlockRootSource para alcançar o mesmo efeito.
Controlar rastreamento de múltiplos alvos
Na maioria dos cenários de uso do Mega, não há necessidade de usar múltiplos alvos. Antes de dominar como evitar interferências mútuas entre blocos, recomenda-se ter apenas um bloco por biblioteca de localização.
Dica
Em princípio, o Mega calcula a posição do dispositivo em todos os blocos, em vez de selecionar blocos visíveis ao dispositivo na biblioteca de localização. O uso mal planejado pode degradar o desempenho devido a confusão de dados, entre outros motivos.
Selecione o objeto Mega Tracker na sessão, modifique a opção Multi Block para habilitar ou desabilitar a funcionalidade de rastreamento de múltiplos blocos.
![]()
Em scripts, é possível modificar BlockHolder.MultiBlock para alcançar o mesmo efeito.
Aviso
Geralmente, apenas um bloco pode estar ativo por vez em uma biblioteca de localização.
Modificar a configuração de múltiplos alvos afeta o efeito de rastreamento e geralmente não é recomendado. Use apenas sob orientação do suporte técnico da EasyAR.
Se esta configuração for modificada durante a execução do aplicativo, informe isso ao relatar problemas à EasyAR.
Entender o estado atual do sistema
Na configuração padrão da sessão, mensagens de UI são exibidas na tela, contendo informações sobre o estado de rastreamento do Mega.
Quando a localização é bem-sucedida, o Mega Block exibirá texto de estado Found junto com o nome e ID do bloco atualmente rastreado:
![]()
Quando a localização falha, o Mega Block exibirá texto de estado NotFound:
![]()
Dica
NotFound é um estado normal que ocorre frequentemente durante o funcionamento do Mega. Quando aparece, o rastreamento ainda continua. Geralmente, o desenvolvimento de aplicativos não requer tratamento especial para o estado NotFound.
Usando o evento MegaTrackerFrameFilter.LocalizationRespond é possível obter o estado atual de localização, permitindo saber se o sistema encontrou o alvo de rastreamento.
O código a seguir mostra como usar este evento e métodos comuns para lidar com estados excepcionais que exigem atenção do aplicativo:
private void Awake()
{
megaTracker.LocalizationRespond += HandleLocalizationStatusChange;
}
private void HandleLocalizationStatusChange(MegaLocalizationResponse response)
{
var status = response.Status;
wakingUpCount = status == MegaTrackerLocalizationStatus.WakingUp ? wakingUpCount + 1 : 0;
if (wakingUpCount >= 5)
{
// O serviço está acordando, o usuário final precisa aguardar
}
if (status == MegaTrackerLocalizationStatus.QpsLimitExceeded)
{
// Limite de QPS excedido, alguns usuários finais terão falhas de localização aleatórias (qualidade geral de rastreamento reduzida)
// Geralmente é necessário pagar para aumentar o limite de QPS e garantir qualidade com o volume atual de usuários
}
if (status == MegaTrackerLocalizationStatus.ApiTokenExpired)
{
// Token expirado, ocorre apenas ao usar interface Token para acessar o serviço
// Resolver isso requer que o aplicativo solicite Token ao seu backend e chame MegaTrackerFrameFilter.UpdateToken para atualizar
}
}
Se o aplicativo frequentemente encontra o estado MegaTrackerLocalizationStatus.RequestTimeout, geralmente indica condições de rede inadequadas entre o dispositivo e o serviço. Recomenda-se otimizar o ambiente de rede para melhorar a qualidade de rastreamento. Em cenários onde a rede não pode ser melhorada, considere aumentar o tempo limite de solicitação.
Nota
Não é possível obter a pose de retorno de localização através deste evento.
Na verdade, a pose retornada pela localização não é necessária no desenvolvimento de aplicativos. A EasyAR calcula localmente uma pose mais precisa após o retorno da localização e a disponibiliza para uso pelos desenvolvedores. Esta pose já está refletida no transform do bloco, conforme descrito em obter resultados de execução da sessão.
Pausar e continuar
As funcionalidades de rastreamento e localização do Mega podem ser pausadas e retomadas separadamente.
Pausar rastreamento
Defina MegaTrackerFrameFilter.enabled como false para pausar o rastreamento.
Por padrão, após pausar o rastreamento, todo o conteúdo sob os nós de bloco ficará oculto.
Pausar localização
Defina MegaTrackerFrameFilter.EnableLocalization como false para pausar a localização.
Aviso
Pausar a localização afeta o efeito de rastreamento e geralmente não é recomendado. Use apenas sob orientação do suporte técnico da EasyAR.
Se a localização for pausada durante a execução do aplicativo, informe isso ao relatar problemas à EasyAR.
Controlar serviço e solicitações
O comportamento das solicitações de serviço pode ser controlado modificando parâmetros do componente MegaTrackerFrameFilter.
Intervalo e tempo limite de solicitação
Selecione o objeto Mega Tracker na sessão, modifique as opções em Request Time Parameters para ajustar o intervalo entre solicitações de serviço e o tempo limite.
![]()
Em scripts, é possível modificar MegaTrackerFrameFilter.RequestTimeParameters para alcançar o mesmo efeito.
Aviso
Modificar o intervalo de solicitação afeta o efeito de rastreamento e geralmente não é recomendado. Use apenas sob orientação do suporte técnico da EasyAR.
Se o intervalo de solicitação for modificado durante a execução do aplicativo, informe isso ao relatar problemas à EasyAR.
Alternar biblioteca de localização
Use MegaTrackerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController) para alternar bibliotecas de localização durante a execução. Ao usar esta interface, a imagem da câmera e a sessão não serão interrompidas.
Tópicos relacionados
- Melhores práticas de AR Session para Mega explica como criar e configurar uma AR Session adequada para o Mega
- Adicionar alvo de rastreamento Mega explica como adicionar blocos de rastreamento do Mega e carregar modelos de blocos no editor Unity para auxiliar no desenvolvimento
- Adicionar um grupo de fontes de frame explica como modificar o grupo de fontes de frame da sessão
- Obter resultados de execução da sessão explica como obter resultados de rastreamento dos componentes da sessão
- Mensagens de UI explica como usar mensagens de UI para exibir o estado da sessão