Table of Contents

Support des appareils et rapports de session

En raison des différences de matériel et de performances des appareils, les fonctionnalités AR ne fonctionnent souvent pas sur tous les appareils. Il est donc crucial de déterminer avec précision la prise en charge de l'appareil actuel lors de l'utilisation des fonctionnalités AR. Ce document explique comment la disponibilité des appareils est exprimée dans Unity, et comment obtenir des informations sur la prise en charge des appareils et la disponibilité de la session via les rapports de session (ARSession.Report).

Avant de commencer

Prise en charge des appareils, disponibilité de la session et assemblage

Chaque fonctionnalité AR peut prendre en charge différents appareils. Par exemple, le suivi de mouvement nécessite certaines exigences matérielles et nécessite généralement un étalonnage de l'appareil, tandis que le suivi d'image peut fonctionner sur presque tous les appareils disposant d'une caméra utilisable. Ainsi, pour déterminer si une application AR peut fonctionner sur un appareil donné, il est généralement nécessaire de connaître les fonctionnalités AR utilisées, ou en d'autres termes, de déterminer si une session spécifique peut fonctionner sur l'appareil.

Dans Unity, ce processus de détermination s'effectue lors de la phase d'assemblage de la session (Assemble()). L'assemblage détermine l'état final de la session avant son démarrage, en fonction des composants inclus dans la session et de la prise en charge de l'appareil actuel.

Si l'assemblage réussit, la session passe à l'état Ready et peut être démarrée et exécutée ; si l'assemblage échoue, la session passe à l'état Broken, et la raison spécifique de l'échec peut être consultée via le rapport de session (ARSession.Report).

Rapports de session

La propriété ARSession.Report fournit un rapport d'exécution de la session. Un rapport de session contient les champs suivants :

Propriété Description
Availability Rapport complet de disponibilité
BrokenReason Raison de l'endommagement de la session, valide lorsque l'état de la session est Broken
Exception Exception spécifique d'endommagement de la session, valide lorsque l'état de la session est Broken

Dans le rapport de session, vous pouvez consulter la disponibilité de chaque composant via Availability, ou consulter la raison détaillée de l'endommagement lorsque la session est endommagée via BrokenReason.

Exemple de rapport de session

Par exemple, sur Windows, si une session contient ImageTrackerFrameFilter, CameraDeviceFrameSource et plusieurs autres composants de source d'images, le processus d'assemblage vérifiera la disponibilité de chaque composant et générera un rapport comme suit :

texte alternatif

On peut voir que même si la propriété Availability du composant ARCoreFrameSource est Unavailable, puisque Availability de ImageTrackerFrameFilter et CameraDeviceFrameSource sont tous deux Available, l'assemblage de la session entière réussit, et la session passe avec succès à l'état Ready.

Si nous supprimons CameraDeviceFrameSource de la session, le processus d'assemblage générera le rapport suivant :

texte alternatif

On peut voir que le nombre d'entrées dans la liste FrameSources passe de 9 à 8, et bien que la propriété Availability du composant ImageTrackerFrameFilter soit toujours Available, puisqu'il n'y a pas de composant de source d'images disponible, l'assemblage de la session entière échoue, et la session passe à l'état Broken. À ce stade, la valeur du champ BrokenReason dans le rapport est NoAvailabileFrameSource, indiquant l'absence de source d'images disponible.

Outre le processus d'assemblage, la session peut également être endommagée pendant son exécution, par exemple si un composant en cours d'exécution est supprimé accidentellement. Dans ce cas, la raison spécifique de l'endommagement peut également être consultée via le rapport de session.

Mise à jour des rapports

Le rapport de session change aux moments suivants :

  • Fin de la première phase d'assemblage
    Un rapport de session complet est généré, incluant le rapport de disponibilité des composants. La partie Availability du rapport de session est déterminée à ce moment et ne change plus. Les mises à jour du rapport de disponibilité des composants peuvent être obtenues via l'événement AssembleUpdate.
    Si la session est démarrée directement après l'assemblage, les mises à jour du rapport de session peuvent également être obtenues via l'événement StateChanged. Les états de session à surveiller incluent : Ready et Broken.

  • Fin de la deuxième phase d'assemblage Un nouveau rapport de disponibilité des composants est généré. Le rapport de session ne sera pas mis à jour sauf si la session est redémarrée. Les mises à jour du rapport de disponibilité des composants peuvent être obtenues via l'événement AssembleUpdate.

  • Lorsque la session est endommagée pendant le démarrage ou l'exécution
    Les champs BrokenReason et Exception du rapport de session sont mis à jour. Les mises à jour du rapport de session peuvent être obtenues via l'événement StateChanged. L'état de session à surveiller est : Broken.

Contenu du rapport : raisons de l'endommagement de la session

BrokenReason indique la raison de l'endommagement de la session, avec les cas suivants :

Raison Description
Uninitialized Processus d'assemblage, EasyAR Sense n'a pas été initialisé avec succès
LicenseInvalid Processus d'assemblage, échec de la validation de la licence EasyAR Sense ou licence non applicable à l'utilisation actuelle
SessionObjectIncomplete Processus d'assemblage, l'objet session est incomplet. Par exemple, RendererFeature n'est pas correctement configuré dans URP
NoAvailabileFrameSource Processus d'assemblage, aucune source d'images disponible. Par exemple, toutes les sources d'images sont indisponibles ou aucune source d'images n'a été ajoutée. Dans et uniquement dans la configuration de session par défaut, cette situation indique que l'appareil ne prend pas en charge la fonctionnalité AR sélectionnée
FrameSourceIncomplete Processus d'assemblage, la source d'images est incomplète. Se produit généralement lors de l'implémentation personnalisée d'une source d'images sans implémentation correcte de l'interface
FrameFilterNotAvailabile Processus d'assemblage, présence d'un filtre d'images non disponible. Cette situation n'existe qu'avec certaines options d'assemblage.
StartFailed Échec du démarrage. Par exemple, une exception s'est produite pendant le démarrage
RunningFailed Échec d'exécution. Par exemple, un composant en cours d'exécution a été supprimé accidentellement, ou RendererFeature n'est pas correctement configuré dans URP, etc.

Contenu du rapport : informations de disponibilité

Availability fournit des informations sur la disponibilité de chaque composant dans la session. Il contient les champs suivants :

Champ Description
FrameFilters Liste de disponibilité des filtres d'images vérifiés pendant l'assemblage
FrameSources Liste de disponibilité des sources d'images vérifiées pendant l'assemblage
PendingDeviceList Tâches de téléchargement de liste d'appareils non terminées
DeviceList Résultat du téléchargement de la liste d'appareils

Les champs PendingDeviceList et DeviceList indiquent l'état du téléchargement de la liste de prise en charge des appareils. À la fin de la première phase d'assemblage, si et seulement si PendingDeviceList n'est pas vide, l'assemblage passe à la deuxième phase. Vous pouvez utiliser cette condition pour déterminer si AssembleUpdate s'exécutera une deuxième fois.

Étapes suivantes