Table of Contents

Contrôler le processus de suivi Mega

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

Avant de commencer

Ajuster le niveau de support de l'appareil

La propriété MegaTrackerFrameFilter.MinInputFrameLevel de MegaTrackerFrameFilter est utilisée pour spécifier le niveau minimum d'appareil pris en charge par Mega.

alt text

Mega peut fonctionner avec presque tous les types de sources de trames, mais différentes sources de trames ont des impacts différents sur les effets de suivi.

Par défaut, Mega choisit la source de trame de niveau le plus élevé supportée par l'appareil pour le suivi. La session prenant en charge Mega avec la configuration par défaut est déjà configurée avec des sources de trames prenant en charge 6DoF et 5DoF.

Pour qu'une source de trame d'un certain niveau soit prise en charge pendant l'exécution de Mega, deux conditions doivent être remplies :

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

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

Lorsqu'aucune source de trame répondant aux conditions n'est disponible, l'assemblage de la session échouera.

Gestion des cibles de suivi

Lors de l'utilisation de Mega, vous devez spécifier la target (cible) utilisée par MegaTrackerFrameFilter, c'est-à-dire le block.

Contrôle de la source du block

Dans la plupart des cas, il est recommandé de conserver la configuration par défaut, c'est-à-dire d'importer le block à l'aide de Mega Studio dans l'éditeur.

Sélectionnez l'objet Mega Tracker sous la session. L'option Block Root Source doit rester sur External (par défaut).

alt text

De plus, vous devez spécifier Block Root comme étant l'objet MegaBlocks dans la scène.

alt text

Modifier l'option Block Root Source vous permet de spécifier d'autres méthodes d'obtention de block. Par exemple, lors de l'importation de données via ema, on choisit généralement l'option Internal ou Mixed.

Dans les scripts, vous pouvez modifier BlockHolder.BlockRootSource pour obtenir le même effet.

Contrôle du suivi multi-cibles

Dans la plupart des scénarios d'utilisation de Mega, il n'est pas nécessaire d'utiliser plusieurs cibles. Avant de maîtriser comment éviter que plusieurs blocks n'interfèrent entre eux, il est recommandé de ne placer qu'un seul block dans une bibliothèque de localisation.

Astuce

En principe, Mega calcule la position de l'appareil dans tous les blocks, plutôt que de sélectionner dans la bibliothèque de localisation le block vu par l'appareil. Une utilisation mal conçue peut entraîner une dégradation des performances en raison de la confusion des données, entre autres.

Sélectionnez l'objet Mega Tracker sous la session. Modifiez l'option Multi Block pour activer ou désactiver la fonction de suivi multi-blocks.

alt text

Dans les scripts, vous pouvez modifier BlockHolder.MultiBlock pour obtenir le même effet.

Avertissement

Généralement, une seule bibliothèque de localisation ne peut contenir qu'un seul block à la fois.

La modification de la configuration multi-cibles affecte les performances de suivi et n'est généralement pas recommandée. Veuillez l'utiliser sous la direction du support technique EasyAR.

Si cette configuration a été modifiée pendant l'exécution de l'application, assurez-vous de le mentionner lors du signalement d'un problème à EasyAR.

Comprendre l'état actuel du système

Avec la configuration de session par défaut, les messages UI s'affichent à l'écran, contenant des informations sur l'état du suivi Mega.

Lorsque la localisation réussit, Mega Block contiendra le texte d'état Found ainsi que le nom et l'ID du block actuellement suivi :

alt text

Lorsque la localisation échoue, Mega Block contiendra le texte d'état NotFound :

alt text

Astuce

NotFound est un état normal qui apparaît fréquemment tout au long du fonctionnement de Mega. Lorsque cet état apparaît, le suivi continue. Généralement, le développement d'applications ne nécessite pas de traitement particulier pour l'état NotFound.

L'événement MegaTrackerFrameFilter.LocalizationRespond permet d'obtenir l'état de localisation actuel, afin de savoir si le système a trouvé la cible de suivi.

Le code suivant montre comment utiliser cet événement, ainsi que les méthodes de traitement des états d'exception courants auxquels l'application doit prêter attention :

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)
    {
        // Le service est en cours de réveil, l'utilisateur final doit patienter
    }

    if (status == MegaTrackerLocalizationStatus.QpsLimitExceeded)
    {
        // La limite QPS est dépassée, certains utilisateurs finaux échoueront aléatoirement à la localisation (qualité globale de suivi réduite)
        // Généralement, il faut payer pour augmenter la limite QPS afin de garantir la qualité de suivi avec le volume actuel d'utilisateurs
    }

    if (status == MegaTrackerLocalizationStatus.ApiTokenExpired)
    {
        // Le jeton a expiré, cela se produit uniquement lors de l'utilisation de l'interface Token pour accéder au service
        // Pour résoudre ce problème, l'application doit demander à son backend d'obtenir un jeton et appeler MegaTrackerFrameFilter.UpdateToken pour le mettre à jour
    }
}

Si l'application rencontre fréquemment l'état MegaTrackerLocalizationStatus.RequestTimeout, cela indique généralement que les conditions réseau de l'appareil pour se connecter au service sont médiocres. Il est recommandé d'optimiser l'environnement réseau pour améliorer la qualité de suivi. Dans les scénarios où les conditions réseau ne peuvent être améliorées, envisagez d'augmenter le délai d'expiration des requêtes.

Note

Il est impossible d'obtenir la pose renvoyée par la localisation via cet événement.

En fait, la pose renvoyée par la localisation n'est pas nécessaire dans le développement d'applications. Après le retour de la localisation, EasyAR calcule localement une pose plus précise et la renvoie aux développeurs pour utilisation. Cette pose est déjà reflétée dans le transform du block. Vous pouvez vous référer à obtenir les résultats d'exécution de la session.

Suspendre et reprendre

Les fonctions de suivi et de localisation de Mega peuvent être suspendues et reprises séparément.

Suspendre le suivi

Définissez MegaTrackerFrameFilter.enabled sur false pour suspendre le suivi.

Par défaut, après la suspension du suivi, tout le contenu sous les nœuds de block est masqué.

Suspendre la localisation

Définissez MegaTrackerFrameFilter.EnableLocalization sur false pour suspendre la localisation.

Avertissement

La suspension de la localisation affecte les performances de suivi et n'est généralement pas recommandée. Veuillez l'utiliser sous la direction du support technique EasyAR.

Si la localisation a été suspendue pendant l'exécution de l'application, assurez-vous de le mentionner lors du signalement d'un problème à EasyAR.

Contrôle des services et des requêtes

Vous pouvez contrôler le comportement des requêtes de service en modifiant les paramètres du composant MegaTrackerFrameFilter.

Intervalle et délai d'expiration des requêtes

Sélectionnez l'objet Mega Tracker sous la session. Modifiez les options sous Request Time Parameters pour ajuster l'intervalle entre les requêtes de service et le délai d'expiration.

alt text

Dans les scripts, vous pouvez modifier MegaTrackerFrameFilter.RequestTimeParameters pour obtenir le même effet.

Avertissement

La modification de l'intervalle des requêtes affecte les performances de suivi et n'est généralement pas recommandée. Veuillez l'utiliser sous la direction du support technique EasyAR.

Si l'intervalle des requêtes a été modifié pendant l'exécution de l'application, assurez-vous de le mentionner lors du signalement d'un problème à EasyAR.

Changer de bibliothèque de localisation

Utilisez MegaTrackerFrameFilter.SwitchEndPoint(ExplicitAddressAccessData, BlockRootController) pour changer de bibliothèque de localisation pendant l'exécution. Lors de l'utilisation de cette interface, le flux de la caméra et la session ne sont pas interrompus.

Sujets connexes