Table of Contents

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.

alt text

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:

Por exemplo, para suportar rastreamento 3DoF na sessão padrão, é necessário:

Outro exemplo, para remover o suporte a rastreamento 5DoF na sessão padrão, é necessário:

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).

alt text

Além disso, é necessário especificar Block Root como o objeto MegaBlocks na cena.

alt text

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.

alt text

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:

alt text

Quando a localização falha, o Mega Block exibirá texto de estado NotFound:

alt text

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.

alt text

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