Table of Contents

Contrôler le processus de suivi de Mega Go

Cet article explique comment contrôler les différentes fonctionnalités et paramètres du processus de suivi de Mega Go pour répondre aux besoins de différents scénarios d'application.

Avant de commencer

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(Chargement de la cible)
    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 de suivi local]]
    detecting[[Détection]]
    tracking_g[[Suivi]]
  end

  subgraph tracking_graph[Suivi]
    direction TB
    tracking[[Suivi continu]]
  end

  subgraph stopping_graph[Arrêt]
    direction TB
    unload(Déchargement de la cible)
    dispose[Destruction native]
    sstop([Arrêt de la session])
  end

  sstart --> create --> load --> verify --> init_g
  init --> init_ --> |Oui| detecting --> tracking_g
  unload --> dispose --> sstop
  init_ --> |Non| init

  startup_graph --> init_graph
  init_graph --> tracking_graph
  tracking_graph --> stopping_graph

Le processus est globalement divisé en plusieurs étapes :

  • Démarrage :
    • Après le démarrage de la session, le tracker de la couche native est créé.
    • La cible est chargée dans le tracker correspondant après Start().
    • Pour les données d'essai, il est nécessaire de vérifier en ligne l'éligibilité à l'essai. Le processus ne passe à l'étape suivante qu'après une vérification réussie.
  • Initialisation :
    • Lors de l'utilisation d'une source de trame 6DoF, le processus d'initialisation de suivi local démarre.
      • L'initialisation de suivi local peut prendre du temps, en fonction de la complexité de la scène et des performances de l'appareil, et généralement de l'algorithme utilisé au niveau inférieur de la source de trame.
    • Lors de l'utilisation d'une source de trame non 6DoF, l'étape d'initialisation de suivi local est sautée et la détection démarre directement.
    • Le processus de détection peut prendre du temps, en fonction de la facilité de localisation de la scène et de la qualité de la cartographie des données collectées.
    • Dans la configuration par défaut, le contenu de cette étape n'est pas affiché. Vous pouvez contrôler ce comportement via les options du composant ActiveController.
  • Suivi :
    • Le tracker suit en continu le bloc actuel.
    • Dans la configuration par défaut, seul le contenu sous le nœud de la cible en état de suivi (TargetController.IsTracked == true) est affiché. Vous pouvez contrôler ce comportement via les options du composant ActiveController.
  • Arrêt :
    • Après l'arrêt de la session, la cible est déchargée 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 est utilisée pour spécifier le niveau minimum d'appareil pris en charge par Mega.

alt text

Mega Go peut fonctionner sur presque tous les types de sources de trame, mais différentes sources de trame ont des impacts différents sur l'effet de suivi.

Par défaut, Mega sélectionne la source de trame de niveau le plus élevé pris en charge par l'appareil pour le suivi. La session de prise en charge de Mega Go dans la configuration par défaut est déjà configurée avec des sources de trame prises en charge pour 6DoF et 5DoF.

Pour prendre en charge une source de trame de niveau donné lors de l'exécution de Mega, deux conditions doivent être remplies :

Par exemple, pour prendre en charge le suivi 3DoF dans la session par défaut, vous devez :

Encore un exemple, pour supprimer la prise en charge du suivi 5DoF dans la session par défaut, vous devez :

Si aucune source de trame ne répond aux conditions, l'assemblage de la session échouera.

Comprendre l'état actuel du système

Dans la configuration de session par défaut, les messages UI s'affichent à l'écran et contiennent des informations sur l'état de Mega Go.

L'état du tracker s'affiche à côté de Mega Go: , par exemple Tracking, VerifyingTrial, etc. Pendant le processus de détection et de suivi, les mises à jour de localisation s'affichent également en dessous.

alt text

L'état de suivi du bloc actuellement chargé s'affiche sous Mega Go: , sous la forme Block (<trackingStatus>): <name> (<id>). <name> est le nom du bloc, <id> est l'ID du bloc. trackingStatus peut être Tracking ou NotTracking, indiquant respectivement si le bloc actuel est en cours de suivi.

alt text

Vous pouvez utiliser la propriété MegaGoTrackerFrameFilter.Status pour obtenir l'état actuel et comprendre le fonctionnement du tracker. En cas d'état d'erreur, vous pouvez utiliser MegaGoTrackerFrameFilter.Error pour obtenir l'état d'erreur et effectuer le traitement approprié.

Le code suivant montre comment utiliser ces propriétés et comment traiter les états anormaux auxquels l'application doit généralement prêter attention :

void HandleTrackerStatus()
{
    if (tracker.Status == MegaGoTrackerStatus.Error)
    {
        if (tracker.Error == MegaGoTrackerError.ServiceVerificationFailed)
        {
            // La vérification du service a échoué. Il est recommandé de vérifier si les données ont expiré ou sont invalides (après avoir passé de la version d'essai à la version officielle, les données de la version d'essai deviendront invalides).
        }
        else if (tracker.Error == MegaGoTrackerError.LocalVerificationFailed)
        {
            // La vérification locale a échoué. Il est recommandé de vérifier si le fichier de la cible est complet.
        }
        else
        {
            // Autre erreur.
        }
    }
    else if (tracker.Status == MegaGoTrackerStatus.VerifyingTrial)
    {
        // Vérification de la cible d'essai en cours. Si la vérification ne peut pas être terminée en longtemps, il est recommandé de vérifier la connexion réseau.
    }
    else if (tracker.Status == MegaGoTrackerStatus.VIOInitializing)
    {
        // Initialisation de l'entrée VIO en cours. Si l'initialisation ne peut pas être terminée en longtemps, il est recommandé d'inviter l'utilisateur à optimiser son utilisation.
        // Par exemple : "Essayez de diriger la caméra obliquement vers l'avant et de déplacer considérablement votre corps avec l'appareil de gauche à droite 5 fois."
    }
}

Vous pouvez utiliser l'événement MegaGoTrackerFrameFilter.LocalizationRespond pour obtenir les mises à jour de localisation.

Mettre en pause et reprendre

En définissant MegaGoTrackerFrameFilter.enabled sur false, vous pouvez mettre en pause le suivi.

Par défaut, après la mise en pause du suivi, tout le contenu sous le nœud de tous les blocs sera masqué.

Thèmes connexes