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.
![]()
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 :
- La source de trame requise se trouve dans le groupe de sources de trames optionnelles de la session.
- MegaTrackerFrameFilter.MinInputFrameLevel est supérieur ou égal au niveau CameraTransformType de la source de trame requise.
Par exemple, pour prendre en charge le suivi 3DoF dans une session par défaut, vous devez :
- Ajouter ThreeDofCameraDeviceFrameSource au groupe de sources de trames de la session.
- Modifier MegaTrackerFrameFilter.MinInputFrameLevel en ThreeDof.
Un autre exemple, pour supprimer la prise en charge du suivi 5DoF dans une session par défaut, vous devez :
- Supprimer InertialCameraDeviceFrameSource du groupe de sources de trames de la session.
- Modifier MegaTrackerFrameFilter.MinInputFrameLevel en SixDof (même sans modification, comme il n'y a pas de source de trame 5DoF, le 5DoF ne sera pas utilisé).
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).
![]()
De plus, vous devez spécifier Block Root comme étant l'objet MegaBlocks dans la scène.
![]()
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.
![]()
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 :
![]()
Lorsque la localisation échoue, Mega Block contiendra le texte d'état NotFound :
![]()
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.
![]()
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
- Meilleures pratiques pour la session AR avec Mega explique comment créer et configurer une session AR adaptée à Mega
- Ajouter une cible de suivi Mega explique comment ajouter une cible de suivi Mega (block) et comment charger des modèles de block dans l'éditeur Unity pour faciliter le développement
- Ajouter un groupe de sources de trames explique comment modifier le groupe de sources de trames de la session
- Obtenir les résultats d'exécution de la session explique comment obtenir les résultats de suivi des composants de la session
- Messages UI explique comment utiliser les messages UI pour afficher l'état de la session