Table of Contents

Diagnostiquer et corriger: le contenu ne s'affiche pas dans l'application

"Je peux voir le monde réel, mais le contenu virtuel n'apparaît pas." C'est l'un des problèmes les plus courants en développement AR. Ce problème peut provenir de plusieurs étapes, de Mega localization elle-même jusqu'à votre logique de rendu.

Cet article vous guide pour diagnostiquer et résoudre systématiquement ce problème.

Flux de diagnostic: de l'extérieur vers l'intérieur

Suivre le principe "d'abord externe, puis interne" permet de localiser efficacement le problème. Exécutez les étapes suivantes dans l'ordre:

Étape 1: utiliser des outils externes pour vérifier l'état de Mega localization (aucune modification de code requise)

Avant d'entrer dans le code de votre application, confirmez d'abord si le service Mega localization lui-même fonctionne normalement. C'est l'étape la plus critique, qui aide à déterminer si le problème se situe dans Mega localization elle-même ou dans l'intégration de développement de l'application, comme le rendu.

  1. Utiliser Mega Toolbox (mobile)

    • Installez Mega Toolbox App sur votre téléphone de test si elle n'est pas encore installée.
    • Ouvrez l'App et entrez dans On-site verification and diagnosis tool.
    • Connectez-vous à votre compte et sélectionnez la même localization library que votre application.
    • Emmenez le téléphone au même emplacement où votre application ne peut pas afficher le contenu pendant le test.
    • Observer le résultat:
      • Si Toolbox localise avec succès (l'état de l'interface affiche Found): le service Mega localization est normal. Le problème est à l'intérieur de votre application, en particulier dans la logique de rendu et d'affichage du contenu. Passez à l'étape 2.
      • Si Toolbox ne localise pas (l'état de l'interface affiche NotFound ou autre): le problème est dans le service localization lui-même. Consultez la section suivante pour une analyse plus approfondie.
  2. Utiliser une exécution simulée côté PC (si EIF a été acquis)

    • Si vous avez déjà enregistré des EIF data pour cette scène, vous pouvez rejouer ces données dans l'éditeur Unity sur PC à l'aide de l'outil de vérification session.
    • Observer le résultat:
      • Si localization réussit pendant la relecture (l'état de l'interface affiche Found): le problème est dans votre code d'application ou environnement spécifique à l'appareil.
      • Si localization échoue pendant la relecture (l'état de l'interface affiche NotFound ou autre): le problème est dans le service localization lui-même. Consultez la section suivante pour une analyse plus approfondie.

Étape 2: vérifier la logique de rendu et de contenu interne à l'application

Si l'étape 1 confirme que le service Mega localization lui-même est normal, le problème se trouve dans votre code d'application. Vérifiez les points suivants:

  1. Si le contenu est placé sous le bon nœud:

    • Avez-vous correctement placé les objets 3D sous les nœuds MegaBlocks > Block_* générés automatiquement par l'outil?
    • Vérifiez la relation hiérarchique entre le contenu et les nœuds Block afin de vous assurer que le contenu virtuel est rendu à la bonne position à l'exécution.
  2. Si le Block Root de MegaTracker est correctement configuré:

    • Développez AR Session et vérifiez si Block Root dans Mega Tracker est le nœud MegaBlocks généré par l'outil.
  3. Si les nœuds MegaBlocks ont été modifiés:

    • Assurez-vous que les noms des nœuds Block_* n'ont pas été modifiés et qu'aucune valeur des propriétés local transform n'a été modifiée.
  4. Si l'écoute des événements est correcte:

    • Avez-vous modifié la logique de traitement callback de localization de MegaTracker?
    • Votre code instancie-t-il ou affiche-t-il le contenu virtuel seulement après le déclenchement de l'événement de statut localization réussie?
  5. Rendu casque et transparence:

    • Votre objet virtuel est-il masqué par d'autres objets? Vérifiez la render queue et le Shader.
    • Si vous utilisez un appareil VST (video see-through), vérifiez si votre rendu est correctement superposé au flux vidéo.
    • Si vous utilisez un appareil OST (optical see-through), vérifiez si le contenu est difficile à voir parce que la lumière ambiante est trop forte.
  6. Problèmes du contenu lui-même:

    • Le Prefab que vous instanciez présente-t-il un problème? Par exemple fichier modèle manquant, erreur Shader, échelle à 0, etc. Essayez de placer manuellement le même objet dans la scène pour voir s'il s'affiche normalement.

Analyse des causes courantes d'échec de localization et suggestions d'amélioration

Si à l'étape 1 Mega Toolbox ne parvient pas non plus à localiser, examinez soigneusement et résolvez le problème de localization. Voici les causes courantes et les contre-mesures:

  • Cause 1: la carte ne correspond pas à l'environnement
    L'environnement sur site a beaucoup changé par rapport au moment de l'acquisition et de la cartographie, ou la zone d'expérience n'a pas été couverte lors de l'acquisition, ou la carte elle-même est incorrecte.
    Suggestions d'amélioration:

    • Assurez-vous que la carte chargée dans votre localization library est cohérente avec l'espace physique actuel dans la scène.
    • Si l'environnement a été modifié, comme une rénovation ou un changement d'agencement, il faut réacquérir et régénérer la carte.
    • Si la zone problématique n'a pas été couverte pendant l'acquisition et la cartographie, régénérez la carte par incremental update.
  • Cause 2: mauvais environnement d'initialisation
    L'application démarre dans une zone pauvre en texture, comme un mur de couleur unie ou en pointant vers le sol.
    Suggestions d'amélioration:

    • Guidez l'utilisateur pour démarrer l'application dans une zone riche en texture afin d'aider le système à terminer rapidement la initial localization.
    • Donnez des indications claires dans l'UI de l'application, comme "Levez le téléphone et regardez autour de vous".
  • Cause 3: problèmes de réseau ou de service
    La latence réseau provoque un timeout des requêtes du service localization, ou le service localization lui-même est en panne, ou la limite d'utilisation concurrente est dépassée. Pour ces derniers cas, veuillez nous transmettre un feedback rapidement.

  • Cause 4: limite de capacité de l'algorithme atteinte
    Mega localization repose sur des algorithmes avancés de computer vision, d'AI, etc., mais n'est pas omnipotente et possède certaines limites de capacité algorithmique. Si localization échoue continuellement dans certaines scènes ou positions, vous pouvez nous fournir un feedback via enregistrement d'écran, enregistrement EIF data, etc., afin de nous aider à améliorer et itérer continuellement les algorithmes.

De plus, Mega localization nécessite un processus qui prend généralement environ 1-2 secondes. Compte tenu de la complexité des scènes réelles, comme congestion réseau, forte concurrency, chauffe du téléphone et réduction de fréquence, ce temps peut être plus long. Vous pouvez donc concevoir dans l'application une interface claire de chargement/attente indiquant "Localizing...", afin d'éviter que l'utilisateur pense à tort que le service est en panne ou que localization est introuvable à cause de l'attente.

Note
  • La première localization est généralement plus lente que les suivantes, car le système doit charger le contenu correspondant après la première localization réussie. C'est normal.
  • Déplacer rapidement l'appareil peut provoquer une perte de localization. Guidez les utilisateurs pour déplacer l'appareil en douceur.

Résumé et bonnes pratiques

  • Toujours vérifier d'abord avec des outils externes: cela permet de réduire le plus rapidement le périmètre du problème à "localization" ou "rendering".
  • Établir des attentes utilisateur raisonnables: utilisez des indications UI pour informer les utilisateurs que localization prend du temps et les guider vers un environnement adapté.
  • Prêter attention à la logique de contenu: assurez-vous que les paramètres comme content binding sont corrects.
  • Bien utiliser les logs: imprimer des logs aux points clés, comme déclenchement d'événement, acquisition de pose et statut de réponse, peut aider à localiser rapidement les problèmes de logique de code.

Avec le diagnostic systématique ci-dessus, vous devriez pouvoir résoudre la plupart des problèmes de "contenu non affiché". Si le problème persiste, préparez EIF data et les logs, puis soumettez-nous un rapport détaillé via Issue report.