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.
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
NotFoundou autre): le problème est dans le service localization lui-même. Consultez la section suivante pour une analyse plus approfondie.
- Si Toolbox localise avec succès (l'état de l'interface affiche
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
NotFoundou autre): le problème est dans le service localization lui-même. Consultez la section suivante pour une analyse plus approfondie.
- Si localization réussit pendant la relecture (l'état de l'interface affiche
- 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
É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:
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.
- Avez-vous correctement placé les objets 3D sous les nœuds
Si le Block Root de MegaTracker est correctement configuré:
- Développez
AR Sessionet vérifiez siBlock RootdansMega Trackerest le nœudMegaBlocksgénéré par l'outil.
- Développez
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éslocal transformn'a été modifiée.
- Assurez-vous que les noms des nœuds
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?
- Avez-vous modifié la logique de traitement callback de localization de
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.
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.