Table of Contents

Controlar o processo de rastreamento Mega

Este artigo descreve como controlar várias funções e parâmetros no processo de rastreamento 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 de dados de frame têm impactos diferentes nos efeitos de rastreamento.

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 suportando Mega com configuração padrão já está configurada com fontes de dados de frame suportando 6DoF e 5DoF.

Para suportar uma fonte de dados de frame de determinado nível durante a execuçã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:

Se nenhuma fonte de dados de frame que atenda às condições estiver disponível, a montagem da sessão falhará.

Gerenciar alvos de rastreamento

Ao usar o Mega, é necessário especificar o target, ou seja, o block, usado por MegaTrackerFrameFilter.

Controlar a origem do block

Na maioria dos casos, recomenda-se manter a configuração padrão, ou seja, importar o block 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

Ao mesmo tempo, é necessário especificar Block Root como o objeto MegaBlocks na cena.

alt text

Modificar a opção Block Root Source pode especificar outras formas de origem do block. Por exemplo, ao importar dados usando ema, geralmente é selecionada a opção Internal ou Mixed.

No script, pode-se modificar BlockHolder.BlockRootSource para obter o mesmo efeito.

Controlar o 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 que vários blocks interfiram entre si, recomenda-se colocar apenas um block em um banco de dados de localização.

Dica

Em princípio, o Mega calcula a posição do dispositivo em todos os blocks, em vez de selecionar o block que o dispositivo vê do banco de dados de localização. O uso mal considerado pode levar à degradação do efeito devido a confusão de dados, entre outros motivos.

Selecione o objeto Mega Tracker na sessão, modifique a opção Multi Block para ativar ou desativar a função de rastreamento de múltiplos alvos.

alt text

No script, pode-se modificar BlockHolder.MultiBlock para obter o mesmo efeito.

Aviso

Geralmente, apenas um block pode existir simultaneamente em um banco de dados de localização.

Modificar a configuração de múltiplos alvos afetará o efeito de rastreamento e geralmente não é recomendado. Use sob orientação do suporte técnico da EasyAR.

Se esta configuração for modificada durante a execução do aplicativo, informe este ponto ao relatar problemas à EasyAR.

Compreender o estado atual do sistema

Na configuração padrão da sessão, mensagens de UI serão exibidas na tela, contendo informações sobre o estado de rastreamento do Mega.

Quando a localização é bem-sucedida, o Mega Block conterá texto de estado Found junto com o nome e ID do block atualmente rastreado:

alt text

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

alt text

Dica

NotFound é um estado normal e ocorre frequentemente durante todo o processo de trabalho do Mega. Quando este estado ocorre, o rastreamento ainda continua. Geralmente, o desenvolvimento de aplicativos não requer tratamento especial para o estado NotFound.

Usando o evento MegaTrackerFrameFilter.LocalizationRespond, pode-se obter o estado atual da localização, entendendo assim se o sistema encontrou o alvo de rastreamento no momento.

O código a seguir mostra como usar este evento e os métodos comuns de tratamento de estados anormais 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 esperar
    }

    if (status == MegaTrackerLocalizationStatus.QpsLimitExceeded)
    {
        // Limite QPS excedido, alguns usuários finais falharão aleatoriamente na localização (qualidade geral de rastreamento diminuída)
        // Geralmente, é necessário pagar para aumentar o limite QPS a fim de garantir a qualidade de rastreamento sob o volume atual de usuários
    }

    if (status == MegaTrackerLocalizationStatus.ApiTokenExpired)
    {
        // Token expirado, isso só ocorre ao acessar o serviço usando a interface Token
        // Para resolver este problema, o aplicativo precisa solicitar seu back-end para obter um Token e chamar MegaTrackerFrameFilter.UpdateToken para atualizar
    }
}

Se o aplicativo frequentemente encontrar o estado MegaTrackerLocalizationStatus.RequestTimeout, geralmente indica que as condições de rede do dispositivo para conectar ao serviço são ruins. Recomenda-se otimizar o ambiente de rede para melhorar a qualidade de rastreamento. Em cenários onde as condições de rede não podem ser melhoradas, pode-se considerar aumentar o tempo limite da solicitação.

Nota

Não é possível obter a pose retornada pela localização através deste evento.

Na verdade, a pose retornada pela localização não é necessária no desenvolvimento de aplicativos. O EasyAR calculará localmente uma pose mais precisa após o retorno da localização e a retornará para uso pelos desenvolvedores. Esta pose já está refletida no transform do block, podendo ser referenciada em obter o resultado da execução da sessão.

Pausar e continuar

As funções de rastreamento e localização do Mega podem ser pausadas e continuadas separadamente.

Pausar o rastreamento

Definir MegaTrackerFrameFilter.enabled como false pausa o rastreamento.

Por padrão, após pausar o rastreamento, todo o conteúdo sob os nós do block ficará oculto.

Pausar a localização

Definir MegaTrackerFrameFilter.EnableLocalization como false pausa a localização.

Aviso

Pausar a localização afeta o efeito de rastreamento e geralmente não é recomendado. Use sob orientação do suporte técnico da EasyAR.

Se a localização for pausada durante a execução do aplicativo, informe este ponto ao relatar problemas à EasyAR.

Controle de serviço e solicitação

O comportamento de solicitação de serviço pode ser controlado modificando os parâmetros do componente MegaTrackerFrameFilter.

Intervalo e tempo limite da 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

No script, pode-se modificar MegaTrackerFrameFilter.RequestTimeParameters para obter o mesmo efeito.

Aviso

Modificar o intervalo de solicitação afeta o efeito de rastreamento e geralmente não é recomendado. Use sob orientação do suporte técnico da EasyAR.

Se o intervalo de solicitação for modificado durante a execução do aplicativo, informe este ponto ao relatar problemas à EasyAR.

Alternar banco de dados de localização

Usar MegaTrackerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController) permite alternar o banco de dados 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