Contrôler le processus de suivi de Mega Go
Cet article explique comment contrôler les fonctions et les paramètres du processus de suivi de Mega Go afin de répondre aux besoins de différents scénarios d’application.
Avant de commencer
- Consultez Ma fonction de localisation est-elle utilisable ? pour confirmer que la bonne carte a bien été téléchargée.
Flux de travail du tracker
Le flux de travail du tracker est le suivant :
flowchart LR
subgraph startup_graph[Démarrage]
direction TB
sstart((Démarrage de la session))
create[Création native]
load(Charger la target)
verify[Vérification d'essai]
init_g[[Initialisation]]
end
subgraph init_graph[Initialisation]
direction TB
init_{Initialisation 6DoF réussie<br>ou non-6DoF}
init[[Processus d'initialisation du tracking local]]
detecting[[Détection]]
tracking_g[[Tracking]]
end
subgraph tracking_graph[Tracking]
direction TB
tracking[[Tracking continu]]
end
subgraph stopping_graph[Arrêt]
direction TB
unload(Décharger la target)
dispose[Destruction native]
sstop([Arrêt de la 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
Le processus se divise globalement en plusieurs étapes :
- Démarrage :
- Une fois la session démarrée, le tracker de la couche native est créé.
- Après le Start() du target, celui-ci est chargé dans le tracker correspondant.
- Pour les données d’essai, il faut valider l’éligibilité d’essai en ligne ; ce n’est qu’après une validation réussie que l’on passe à l’étape suivante.
- Initialisation :
- Lorsqu’une frame source 6DoF est utilisée, le processus local d’initialisation du tracking démarre.
- L’initialisation locale du tracking peut prendre un certain temps ; cela dépend de la complexité de la scène et des capacités de l’appareil, et cela est généralement aussi lié à l’algorithme utilisé par la couche inférieure de la frame source.
- Lorsqu’une frame source non 6DoF est utilisée, l’étape d’initialisation locale est ignorée et la détection commence directement.
- Le processus de détection peut également prendre un certain temps, selon la facilité de localisation de la scène et la qualité de capture et de cartographie des données.
- Avec la configuration par défaut, le contenu de cette étape n’est pas affiché ; ce comportement peut être contrôlé via les options du composant ActiveController.
- Lorsqu’une frame source 6DoF est utilisée, le processus local d’initialisation du tracking démarre.
- Suivi :
- Le tracker suit en continu le block actuel.
- Avec la configuration par défaut, seul le contenu sous les nœuds target actuellement en état de suivi (TargetController.IsTracked ==
true) est affiché ; ce comportement peut être contrôlé via les options du composant ActiveController.
- Arrêt :
- Lorsque la session s’arrête, le target est déchargé et le tracker de la couche native est détruit.
Ajuster le niveau de prise en charge de l’appareil
La propriété MegaGoTrackerFrameFilter.MinInputFrameLevel de MegaGoTrackerFrameFilter sert à indiquer le niveau minimal d’appareil pris en charge par Mega.
![]()
Mega Go peut s’exécuter sur presque tous les types de frame sources, mais chaque frame source influence différemment le résultat du tracking.
Par défaut, Mega choisit pour le tracking la frame source du niveau le plus élevé pris en charge par l’appareil. La session compatible avec Mega Go dans la configuration par défaut est déjà configurée avec des frame sources compatibles 6DoF et 5DoF.
Pour qu’une frame source d’un certain niveau soit prise en charge au moment de l’exécution, deux conditions doivent être réunies :
- La frame source requise se trouve dans le groupe de frame sources optionnelles de la session.
- MegaGoTrackerFrameFilter.MinInputFrameLevel est supérieur ou égal au niveau CameraTransformType de la frame source requise.
Par exemple, pour prendre en charge le tracking 3DoF dans la session par défaut, il faut :
- Ajouter ThreeDofCameraDeviceFrameSource au groupe de frame sources de la session.
- Modifier MegaGoTrackerFrameFilter.MinInputFrameLevel en ThreeDof.
Autre exemple, pour supprimer la prise en charge du tracking 5DoF dans la session par défaut, il faut :
- Supprimer InertialCameraDeviceFrameSource du groupe de frame sources de la session.
- Modifier MegaGoTrackerFrameFilter.MinInputFrameLevel en SixDof (même sans modification, comme il n’existe pas de frame source 5DoF, le 5DoF ne sera pas utilisé).
Lorsqu’aucune frame source répondant aux conditions n’est disponible, l’assemblage de la session échoue.
Comprendre l’état actuel du système
Avec la configuration par défaut de la session, les messages d’UI s’affichent à l’écran et contiennent des informations d’état de Mega Go.
L’état du tracker s’affiche à côté de Mega Go: , par exemple Tracking ou VerifyingTrial. Pendant la détection et le suivi, les mises à jour de localisation sont également affichées en dessous.
![]()
L’état de suivi du block actuellement chargé s’affiche sous Mega Go: , au format Block (<trackingStatus>): <name> (<id>). <name> est le nom du block et <id> est son ID. trackingStatus peut être Tracking ou NotTracking, indiquant respectivement si le block actuel est suivi ou non.

La propriété MegaGoTrackerFrameFilter.Status permet d’obtenir l’état actuel afin de connaître le fonctionnement du tracker. En cas d’erreur, l’état d’erreur peut être obtenu via MegaGoTrackerFrameFilter.Error puis traité de manière appropriée.
Le code suivant montre comment utiliser ces propriétés, ainsi que le traitement des états anormaux courants qui nécessitent une attention de l’application :
void HandleTrackerStatus()
{
if (tracker.Status == MegaGoTrackerStatus.Error)
{
if (tracker.Error == MegaGoTrackerError.ServiceVerificationFailed)
{
// la verification locale a echoue ; il est recommande de verifier si data a expire ou n est plus valide (les donnees de test deviennent invalides apres le passage de la version de test a la version officielle).
}
else if (tracker.Error == MegaGoTrackerError.LocalVerificationFailed)
{
// la verification locale a echoue ; il est recommande de verifier si le fichier target est complet.
}
else
{
// autres erreurs.
}
}
else if (tracker.Status == MegaGoTrackerStatus.VerifyingTrial)
{
// verification du target d essai en cours. Si elle prend trop de temps, il est recommande de verifier la connexion reseau.
}
else if (tracker.Status == MegaGoTrackerStatus.VIOInitializing)
{
// initialisation de l entree VIO en cours. Si elle prend trop de temps, il est recommande de suggerer a l utilisateur d optimiser son mode d utilisation.
// par exemple : "essayez d orienter la camera en diagonale vers l avant et de deplacer l appareil largement de gauche a droite 5 fois."
}
}
Utilisez l’événement MegaGoTrackerFrameFilter.LocalizationRespond pour obtenir les mises à jour de localisation.
Mettre en pause et reprendre
Définissez MegaGoTrackerFrameFilter.enabled sur false pour mettre le tracking en pause.
Par défaut, après la pause du tracking, tout le contenu sous les nœuds block sera masqué.
Sujets connexes
- Bonnes pratiques AR Session pour Mega Go explique comment créer et configurer une AR Session adaptée à Mega Go
- Ajouter des targets de suivi Mega Go explique comment ajouter des blocks cibles de suivi Mega Go et comment charger des modèles block dans Unity Editor pour aider au développement
- Ajouter un groupe de frame sources explique comment modifier le groupe de frame sources de la session
- Obtenir le résultat d’exécution de la session explique comment obtenir le résultat de suivi du composant session
- Messages d’UI explique comment utiliser les messages d’UI pour afficher l’état de la session