Controlar o processo de rastreamento do Mega Go
Este artigo explica como controlar as funções e os parâmetros no processo de rastreamento do Mega Go para atender às necessidades de diferentes cenários de aplicação.
Antes de começar
- Confira Minha função de localização já pode ser usada? para confirmar que o mapa correto foi baixado.
Fluxo de trabalho do tracker
O fluxo de trabalho do tracker é o seguinte:
flowchart LR
subgraph startup_graph[Inicialização]
direction TB
sstart((Inicialização da session))
create[Criação nativa]
load(Carregar target)
verify[Verificação de trial]
init_g[[Inicialização]]
end
subgraph init_graph[Inicialização]
direction TB
init_{Inicialização 6DoF bem-sucedida<br>ou não 6DoF}
init[[Processo de inicialização do tracking local]]
detecting[[Detecção]]
tracking_g[[Tracking]]
end
subgraph tracking_graph[Tracking]
direction TB
tracking[[Tracking contínuo]]
end
subgraph stopping_graph[Parada]
direction TB
unload(Descarregar target)
dispose[Destruição nativa]
sstop([Parada da session])
end
sstart --> create --> load --> verify --> init_g
init --> init_ --> |Yes| detecting --> tracking_g
unload --> dispose --> sstop
init_ --> |No| init
startup_graph --> init_graph
init_graph --> tracking_graph
tracking_graph --> stopping_graph
O processo é dividido aproximadamente em várias etapas:
- Início:
- Depois que a session inicia, o tracker da camada nativa é criado.
- Depois do Start() do target, ele é carregado no tracker correspondente.
- Para dados de teste, é necessário validar online a elegibilidade do teste; somente após a validação bem-sucedida segue para a próxima etapa.
- Inicialização:
- Ao usar uma frame source 6DoF, entra no processo local de inicialização de tracking.
- A inicialização local de tracking pode levar algum tempo; isso depende da complexidade da cena e da capacidade do dispositivo, e normalmente também está relacionado ao algoritmo usado pela camada inferior da frame source.
- Ao usar uma frame source que não seja 6DoF, a etapa de inicialização local é pulada e a detecção começa diretamente.
- O processo de detecção também pode levar algum tempo, dependendo de quão fácil é localizar a cena e da qualidade de captura e mapeamento dos dados.
- Com a configuração padrão, o conteúdo dessa etapa não será exibido; esse comportamento pode ser controlado pelas opções do componente ActiveController.
- Ao usar uma frame source 6DoF, entra no processo local de inicialização de tracking.
- Rastreamento:
- O tracker continuará rastreando o block atual.
- Com a configuração padrão, apenas o conteúdo sob os nós target que estiverem em estado de rastreamento (TargetController.IsTracked ==
true) será exibido; esse comportamento pode ser controlado pelas opções do componente ActiveController.
- Parada:
- Depois que a session para, o target é descarregado e o tracker da camada nativa é destruído.
Ajustar o nível de suporte do dispositivo
A propriedade MegaGoTrackerFrameFilter.MinInputFrameLevel de MegaGoTrackerFrameFilter é usada para especificar o nível mínimo de dispositivo suportado pelo Mega.
![]()
O Mega Go pode rodar em quase todos os tipos de frame source, mas cada frame source afeta de forma diferente o resultado do rastreamento.
Por padrão, o Mega escolhe para rastreamento a frame source do nível mais alto suportado pelo dispositivo. A session compatível com Mega Go na configuração padrão já está configurada com frame sources que suportam 6DoF e 5DoF.
Para que o Mega dê suporte a uma frame source de certo nível em runtime, duas condições precisam ser atendidas:
- A frame source necessária está no grupo de frame sources opcionais da session.
- MegaGoTrackerFrameFilter.MinInputFrameLevel é maior ou igual ao nível CameraTransformType da frame source necessária.
Por exemplo, para suportar tracking 3DoF na session padrão, é necessário:
- Adicionar ThreeDofCameraDeviceFrameSource ao grupo de frame sources da session.
- Alterar MegaGoTrackerFrameFilter.MinInputFrameLevel para ThreeDof.
Em outro exemplo, para remover o suporte a tracking 5DoF da session padrão, é necessário:
- Remover InertialCameraDeviceFrameSource do grupo de frame sources da session.
- Alterar MegaGoTrackerFrameFilter.MinInputFrameLevel para SixDof (mesmo sem alterar, como não há frame source 5DoF, ele também não será usado).
Quando não houver nenhuma frame source que atenda às condições, a montagem da session falhará.
Entender o estado atual do sistema
Com a configuração padrão da session, as mensagens de UI serão exibidas na tela e incluirão informações de estado do Mega Go.
O estado do tracker será exibido ao lado de Mega Go: , por exemplo Tracking ou VerifyingTrial. Durante a detecção e o rastreamento, atualizações de localização também serão exibidas abaixo.
![]()
O estado de rastreamento do block atualmente carregado será exibido abaixo de Mega Go: , no formato Block (<trackingStatus>): <name> (<id>). <name> é o nome do block e <id> é o ID do block. trackingStatus pode ser Tracking ou NotTracking, indicando respectivamente se o block atual está sendo rastreado.

A propriedade MegaGoTrackerFrameFilter.Status pode ser usada para obter o estado atual e entender o funcionamento do tracker. Quando surgir um estado de erro, é possível obter o estado de erro por meio de MegaGoTrackerFrameFilter.Error e tratá-lo adequadamente.
O código abaixo mostra como usar essas propriedades e como lidar com estados anormais comuns que exigem atenção do aplicativo:
void HandleTrackerStatus()
{
if (tracker.Status == MegaGoTrackerStatus.Error)
{
if (tracker.Error == MegaGoTrackerError.ServiceVerificationFailed)
{
// a verificacao local falhou; recomenda-se verificar se data expirou ou ficou invalido (os dados de teste ficam invalidos depois que a versao de teste e convertida para a versao oficial).
}
else if (tracker.Error == MegaGoTrackerError.LocalVerificationFailed)
{
// a verificacao local falhou; recomenda-se verificar se o arquivo target esta completo.
}
else
{
// outros erros.
}
}
else if (tracker.Status == MegaGoTrackerStatus.VerifyingTrial)
{
// o target de teste esta sendo verificado. Se a verificacao demorar muito, recomenda-se verificar a conexao de rede.
}
else if (tracker.Status == MegaGoTrackerStatus.VIOInitializing)
{
// a entrada VIO esta inicializando. Se a inicializacao demorar muito, recomenda-se orientar o usuario a otimizar o modo de uso.
// por exemplo: "tente apontar a camera diagonalmente para frente e mover o dispositivo amplamente para a esquerda e para a direita 5 vezes."
}
}
Use o evento MegaGoTrackerFrameFilter.LocalizationRespond para obter atualizações de localização.
Pausar e continuar
Defina MegaGoTrackerFrameFilter.enabled como false para pausar o rastreamento.
Por padrão, após pausar o rastreamento, todo o conteúdo abaixo dos nós block será ocultado.
Tópicos relacionados
- Boas práticas de AR Session para Mega Go apresenta como criar e configurar uma AR Session adequada ao Mega Go
- Adicionar alvos de rastreamento do Mega Go apresenta como adicionar blocks alvo de rastreamento do Mega Go e como carregar modelos de block no Unity Editor para ajudar no desenvolvimento
- Adicionar um grupo de frame sources apresenta como modificar o grupo de frame sources da session
- Obter o resultado de execução da session apresenta como obter o resultado de rastreamento do componente session
- Mensagens de UI apresenta como usar mensagens de UI para exibir o estado da session