Validation initiale de l’extension de casque
Pour faire fonctionner EasyAR sur un appareil, le travail le plus important, et aussi le plus délicat, consiste à garantir la justesse des données d’entrée. Lors de la première exécution d’EasyAR sur un nouvel appareil, plus de 90 % des problèmes sont causés par des données incorrectes.
Si possible, il est recommandé, en l’absence d’EasyAR, d’utiliser uniquement l’appareil et ses interfaces pour appliquer des méthodes de test et vérifier directement la justesse des données. Cet article présente quelques méthodes empiriques utilisant les fonctions EasyAR pour valider les données. Ce processus aide à comprendre les données de trame d’entrée externe, mais comme EasyAR comporte aussi ses propres erreurs, utiliser ce système couplé pour vérifier la justesse des données n’est pas le meilleur choix.
Avant de commencer
- Terminez le développement décrit dans Faire prendre en charge EasyAR par le casque.
- Lisez Démarrage rapide pour comprendre comment utiliser EasyAR Sense Unity Plugin.
- Découvrez comment utiliser les exemples de casque.
- Comprenez la configuration d’un projet Android.
Exécuter les exemples de fonctions de base
Lors de la première validation d’EasyAR sur l’appareil, veillez à exécuter ces fonctions dans l’ordre. En particulier, ne vous précipitez pas sur Mega : Mega tolère certaines erreurs, qui peuvent être difficiles à détecter lors d’une exécution courte ou dans une seule scène réelle.
Observez les informations de session affichées devant vous, assurez-vous qu’aucune situation inattendue ne se produit et vérifiez que le frame count continue d’augmenter.
Exécutez
Image, c’est-à-dire la fonction de suivi d’image, et comparez le résultat avec celui obtenu sur téléphone (il est recommandé de prendre l’iPhone comme référence). Faites attention à l’état du suivi et à l’affichage de superposition sur la target.Quand la fusion de mouvement n’est pas activée, le suivi d’image présente une latence sensible ; c’est le comportement attendu. Il suffit que le mouvement soit correct et que la position s’aligne lorsque l’appareil s’arrête.
Exécutez
Dense, c’est-à-dire la fonction de carte spatiale dense, et comparez le résultat avec celui obtenu sur téléphone (il est recommandé de prendre l’iPhone comme référence). Faites attention à la position du mesh, à sa vitesse de génération et à sa qualité.Si la fréquence des données d’entrée est faible, la génération du mesh ralentira, mais la qualité ne se dégradera pas nettement.
Cette fonction ne peut pas fonctionner sur certains appareils Android, et la qualité du mesh varie aussi selon l’appareil.
Important
L’extension d’entrée utilisée par le paquet d’extension de casque est une implémentation de caméra personnalisée.
Lors de l'utilisation de produits d'essai sur une caméra personnalisée ou un casque (license Personal Edition, license XR d'essai ou service Mega d'essai, etc.), EasyAR Sense cesse de répondre 100 secondes après chaque démarrage (les utilisateurs Mega peuvent ajuster cette durée via EasyAR Business après approbation). Les versions payantes d'EasyAR Sense et les services payants EasyAR Mega ne sont pas soumis à cette limitation.
Si Image et Dense se comportent de manière identique ou meilleure que sur téléphone, la plupart des fonctions EasyAR peuvent fonctionner normalement sur l’appareil, et vous pouvez commencer à tester Mega.
Résoudre les anomalies d’exécution : décomposition du problème
Si vous ne parvenez pas à reproduire les mêmes résultats que sur téléphone, la suite propose une décomposition détaillée du problème, que vous pouvez utiliser pour rechercher la cause racine. Il est recommandé de toujours surveiller les journaux système.
Étape zéro : comprendre les erreurs propres au système du casque
Vous souvenez-vous des exigences de suivi de mouvement et d’affichage décrites dans Préparer l’appareil pour l’AR/MR ?
Important
Les erreurs de suivi de mouvement/VIO affectent toujours la stabilité des algorithmes EasyAR de différentes manières.
Important
Les erreurs du système d’affichage peuvent empêcher les objets virtuels et réels de s’aligner parfaitement.
Dans certains cas où l’erreur est importante, les objets virtuels peuvent sembler flotter au-dessus ou au-dessous des objets réels, puis dériver en continu. Ce phénomène peut être observé sur Pico 4E, même sans utiliser EasyAR et en ouvrant uniquement son propre VST.
Étape un : vérifier l’état d’exécution de la session
Fonctions ou données qui doivent être normales pour que l’état de session affiché dans les messages UI soit normal :
Disponibilitéde ExternalFrameSourceCaméra virtuellede ExternalFrameSource
Si les informations d’état de la session ne sont pas visibles, essayez de modifier l’option sur Log, puis lisez l’état de la session et le nom de la frame source utilisée dans les journaux système.
Vous pouvez essayer de supprimer toutes les autres frame sources sous le nœud ARSession, puis vérifier si quelque chose change.
Étape deux : confirmer le nombre de trames caméra reçues par EasyAR
Fonction ou données qui doivent être normales :
- Le chemin, dans le code Unity, des
données de trame camérade ExternalFrameSource (sans inclure la justesse des données ni le chemin des données vers la couche native)
Cette valeur doit augmenter avec le temps ; sinon un message d’avertissement s’affichera après quelques secondes.
Si vous constatez que cette valeur n’augmente pas, c’est le premier problème à résoudre.
Étape trois : enregistrer un EIF sur l’appareil, puis le relire dans Unity Editor
Fonctions ou données qui doivent être normales :
- Le chemin d’entrée des
données de trame camérade ExternalFrameSource vers la couche native (sans inclure la justesse des données)raw camera image datadans lesdonnées de trame camératimestampdans lesdonnées de trame caméra(sans inclure l’instant temporel ni la synchronisation des données)
Cliquez sur EIF pour lancer l’enregistrement, puis cliquez à nouveau pour l’arrêter.
Astuce
L’enregistrement doit être arrêté normalement pour obtenir un fichier EIF à accès aléatoire.
Lors de l’exécution de données EIF dans Unity Editor, il vaut mieux utiliser une scène EasyAR propre ou un exemple EasyAR afin d’éviter les configurations incorrectes dans la scène.
Vous pouvez voir la relecture des données de trame caméra dans Unity Editor. Les données d’image ne sont pas identiques octet pour octet, car tout le processus contient un encodage et un décodage avec perte.
EasyAR utilise les paramètres de distorsion dans ses calculs, mais n’applique pas de correction de distorsion à l’image lors de l’affichage. Si ces données sont fournies, vous observerez donc, lors de la relecture du fichier EIF dans Unity, des données sans correction de distorsion ; c’est le comportement attendu.
Astuce
Modifiez le ratio de la fenêtre Unity Game pour qu’il corresponde à l’entrée ; sinon les données seront affichées avec recadrage.
Si la lecture des données est trop rapide ou trop lente, vérifiez l’entrée timestamp.
Note
EIF permet de faire beaucoup de choses. Dans Unity Editor, vous pouvez utiliser EIF pour exécuter le suivi d’image et la carte spatiale dense. Notez que l’effet d’affichage peut être différent lors de l’exécution sur l’appareil.
Étape quatre : utiliser EIF pour exécuter le suivi d’image
Fonctions ou données qui doivent être normales :
raw camera image datadans lesdonnées de trame caméraintrinsicsdans lesdonnées de trame caméra(la justesse des données ne peut pas être totalement garantie, car l’algorithme tolère certaines erreurs)
Dans Unity Editor, utilisez EIF pour exécuter l’exemple de suivi d’image ImageTracking_Targets ; il faut enregistrer un EIF dans lequel une image peut être suivie.
Note
Le suivi d’image exige que la target de suivi occupe une certaine proportion de l’image entière. Si l’image ne peut pas être suivie, essayez de rapprocher la tête de l’image.
Si le suivi échoue en continu ou si l’objet virtuel apparaît dans l’image loin de la target, il est très probable que les intrinsics posent problème.
Si les données d’image présentent une distorsion, vous pouvez voir l’objet virtuel ne pas recouvrir parfaitement la target suivie sur l’image ; c’est le comportement attendu. Ce phénomène est plus évident lorsque la target suivie se trouve au bord de l’image.
Étape cinq : exécuter le suivi d’image sur l’appareil
Fonctions ou données qui doivent être normales :
- Le système d’affichage propre à l’appareil
raw camera image datadans lesdonnées de trame caméraintrinsicsdans lesdonnées de trame caméra(la justesse des données ne peut pas être totalement garantie, car l’algorithme tolère certaines erreurs)extrinsicsdans lesdonnées de trame caméra- Cohérence des coordonnées de
device posedans lesdonnées de trame caméraet lesdonnées de trame de rendu- Différence temporelle de
device posedans lesdonnées de trame caméraet lesdonnées de trame de rendu
Note
Le suivi d’image exige que la target de suivi occupe une certaine proportion de l’image entière. Si l’image ne peut pas être suivie, essayez de rapprocher la tête de l’image.
Le suivi d’image exige que la longueur horizontale de l’image corresponde à la taille de l’objet dans le monde réel. Dans l’exemple, il faut suivre une image dont la longueur horizontale remplit le grand côté d’une feuille A4 posée horizontalement ; ne suivez donc pas une image affichée sur un écran d’ordinateur, sauf si vous utilisez une règle et ajustez la longueur horizontale de l’image à la taille A4 en vous y référant.
Si le suivi d’image est parfait avec EIF mais différent sur l’appareil, vous devez résoudre ce problème avant de poursuivre les autres tests. Il sera beaucoup plus difficile à résoudre dans les étapes suivantes.
Si l’objet virtuel flotte à un endroit éloigné de l’objet réel, et que c’est encore le cas lorsque la personne ne bouge pas, il est très probable que les intrinsics ou extrinsics soient incorrects, que device pose dans les données de trame caméra et les données de trame de rendu ne soit pas dans le même système de coordonnées, ou que le système d’affichage soit à l’origine de cette erreur.
Si l’objet virtuel continue de se déplacer lorsque la tête bouge et donne l’impression d’un retard, il y a de fortes chances que device pose ne soit pas sain. Cela se produit souvent dans plusieurs situations (sans exclure la possibilité d’autres problèmes) :
device poseetraw camera image datane sont pas synchronisés dans le temps- La même pose est utilisée dans les
données de trame caméraet lesdonnées de trame de rendu
Étape six : utiliser EIF et exécuter la carte spatiale dense sur l’appareil
Fonctions ou données qui doivent être normales :
- Le système d’affichage propre à l’appareil
raw camera image datadans lesdonnées de trame caméraintrinsicsdans lesdonnées de trame caméra(la justesse des données ne peut pas être totalement garantie, car l’algorithme tolère certaines erreurs)extrinsicsdans lesdonnées de trame caméradevice posedans lesdonnées de trame caméra
Si la génération du mesh est très lente et/ou si la reconstruction du sol est irrégulière, il est très probable que device pose pose problème. Le système de coordonnées de la pose peut aussi être incorrect, ou l’instant de la pose peut être mauvais.
Astuce
Si la fréquence des données d’entrée est faible, la génération du mesh ralentira aussi, mais la qualité ne se dégradera pas nettement. Cette situation est attendue.
Il n’est généralement pas très facile de distinguer précisément la position du mesh ; les erreurs du système d’affichage ne sont donc pas nécessairement observables lors de l’utilisation de la carte spatiale dense.
Exécuter l’exemple Mega
Lisez les contenus suivants pour comprendre comment utiliser Mega dans Unity. Si vous n’avez pas encore activé le service Mega, contactez l’équipe commerciale EasyAR pour obtenir une qualification d’essai.
- Introduction à EasyAR Mega
- Puis-je déjà utiliser ma fonction de localisation ? pour confirmer que le dépôt de localisation a bien été créé et que la carte a été ajoutée.
- Démarrage rapide avec l’exemple EasyAR Mega Unity
Exécutez ensuite Mega sur l’appareil et comparez le résultat avec celui obtenu sur téléphone (il est recommandé de prendre l’iPhone comme référence). Faites attention aux points suivants :
- La position d’affichage des objets est-elle correcte ?
- La position et la taille des objets éloignés (10 m et plus) sont-elles correctes ?
- La position et la taille des objets hors du centre du regard sont-elles correctes ?
- La position et la taille des objets sont-elles correctes lors de la rotation de la tête ?
Résoudre les anomalies d’exécution
Fonctions ou données qui doivent être normales :
- Le système d’affichage propre à l’appareil
- Toutes les données dans les
données de trame caméraet lesdonnées de trame de rendu
Après avoir validé les deux fonctions de suivi d’image et de carte spatiale dense, EasyAR Mega devrait théoriquement déjà être pris en charge. Si les performances sur le casque sont nettement moins bonnes que sur téléphone, prêtez attention aux points suivants :
- Les données de pose et de timestamp dans les
données de trame caméraet lesdonnées de trame de rendu - La sortie du système de suivi de mouvement/VIO. Le panda sous
XR Originconstitue une bonne référence
En outre, il faut porter une attention particulière au système d’affichage propre à l’appareil, surtout pour les objets éloignés, les objets hors du centre du regard et l’affichage lors des rotations de tête. Ces scénarios sont souvent négligés lors des tests propres à l’appareil, mais les problèmes restent généralement causés par son système d’affichage. Vous devez expliquer ces problèmes et leurs impacts possibles à EasyAR, et fournir aux développeurs des attentes raisonnables sur le résultat.
Important
Les utilisateurs prêtent une grande attention à ces problèmes d’affichage, et beaucoup d’appareils ne peuvent effectivement pas fournir un affichage parfaitement idéal dans les scènes de grande ampleur. EasyAR ne peut pas résoudre les problèmes d’affichage propres à l’appareil ; ils doivent être corrigés par itération du fabricant de l’appareil. Dans le même temps, les utilisateurs doivent aussi comprendre ces problèmes.
Étapes suivantes
Sujets associés
Exemples pouvant être exécutés sur téléphone :
- Exemple de suivi d’image ImageTracking_Targets, permettant de comprendre le comportement attendu de la fonction de suivi d’image
- Exemple de carte spatiale dense SpatialMap_Dense_BallGame, permettant de comprendre le comportement attendu de la fonction de carte spatiale dense
- Exemple de fusion de mouvement ImageTracking_MotionFusion, permettant de comprendre le comportement attendu de la fonction de fusion de mouvement
- Exemple Mega MegaBlock_Basic, permettant de comprendre le comportement attendu de la fonction Mega