Faire en sorte que les casques prennent en charge EasyAR
Cet article explique comment utiliser le modèle de package d'extension pour casque du plugin EasyAR Sense Unity pour développer un package d'extension EasyAR prenant en charge les appareils de type casque.
Avant de commencer
Avant de commencer le développement, il est nécessaire de comprendre comment utiliser le plugin EasyAR Sense Unity.
- Démarrage rapide
- Exécuter les exemples AR Session, ImageTracking_Targets (suivi d'image) et SpatialMap_Dense_BallGame (carte spatiale dense), dont les effets d'exécution sont similaires sur téléphone et sur casque.
Le développement de plugin pour casque implique certaines fonctionnalités de base qu'il convient de maîtriser :
- Comprendre AR Session
- Comprendre les sources d'images et les sources d'images externes
De plus, il est nécessaire de se familiariser avec le développement d'un package Unity.
Préparer l'appareil pour AR/MR
Préparer le système de suivi de mouvement/VIO
S'assurer que les erreurs de suivi de l'appareil sont contrôlées. Certaines fonctionnalités d'EasyAR comme Mega peuvent réduire dans une certaine mesure les erreurs cumulées de l'appareil, mais des erreurs locales importantes peuvent également rendre les algorithmes d'EasyAR instables. En général, on attend une dérive du VIO inférieure à 1‰.
Préparer le système d'affichage
S'assurer que lorsqu'un objet virtuel de même taille et contour qu'un objet réel est placé dans le monde virtuel, et que sa transformation relative par rapport à la caméra virtuelle correspond à celle de l'objet réel par rapport à l'appareil, l'objet virtuel s'aligne correctement sur l'objet réel et que le déplacement de l'appareil ou la rotation de la tête ne brise pas l'effet d'affichage. On peut s'inspirer de l'effet du Vision Pro.
Préparer le SDK de l'appareil
S'assurer que des API fournissent des données d'image d'entrée externes. Ces données doivent être générées à deux et seulement deux instants précis dans le système, et il faut garantir qu'il n'y a pas de désalignement des données.
Utiliser le modèle de package d'extension pour casque
Utiliser la fenêtre Package Manager d'Unity pour installer le plugin via un fichier tarball local et importer EasyAR Sense Unity Plugin (package com.easyar.sense). Décompresser le modèle d'extension pour casque (package com.easyar.sense.ext.hmdtemplate) dans le répertoire Packages du projet Unity, et renommer le dossier Samples~ en Samples.
La structure de répertoires devrait alors ressembler à ceci :
.
├── Assets
└── Packages
└── com.easyar.sense.ext.hmdtemplate
├── CHANGELOG.md
├── Documentation~
├── Editor
├── LICENSE.md
├── package.json
├── Runtime
└── Samples
└── Combination_BasedOn_HMD
Astuce
Si nécessaire, il est possible d'importer EasyAR Sense Unity Plugin et de placer le modèle d'extension pour casque en utilisant toute méthode autorisée par Unity.
Si le modèle n'est pas utilisé, se référer au guide Unity pour créer un package personnalisé pour créer un nouveau package.
Si le SDK de l'appareil n'est pas organisé sous forme de package Unity, décompresser le modèle d'extension pour casque dans le dossier Assets d'Unity, puis supprimer du dossier décompressé le fichier package.json ainsi que tout fichier portant l'extension .asmdef. Noter que dans ce mode d'utilisation, les utilisateurs combinant le SDK de l'appareil et EasyAR ne pourront pas bénéficier d'une gestion de dépendances de version appropriée.
Finaliser l'extension d'entrée runtime
Suivre la méthode Créer une extension d'entrée pour les données d'image et de mouvement d'appareil, modifier Runtime/HMDTemplateFrameSource.cs et finaliser l'extension d'entrée adaptée au casque. C'est le principal travail de développement du package d'extension.
Finaliser le menu de l'éditeur
Modifier la chaîne "HMD Template" dans la classe MenuItems pour qu'elle représente le nom de l'appareil. Si d'autres fonctionnalités personnalisées dans l'éditeur sont nécessaires, d'autres scripts peuvent être ajoutés.
Lorsque les développeurs sélectionnent AR Session (EasyAR) dans la vue Hierarchy et cliquent avec le bouton droit, ces éléments de menu apparaissent :
EasyAR Sense>Extensions>Frame Source : [Nom de l'appareil]: ajoute une source d'images pour cet appareil à la session actuelle.EasyAR Sense>Extensions>Frame Source : [Nom de l'appareil (keep it only)]: ajoute et ne conserve qu'une seule source d'images pour cet appareil dans la session actuelle.

Finaliser l'exemple d'application
L'exemple se trouve dans Samples/Combination_BasedOn_HMD. Pour plus de simplicité, l'exemple modèle ne contient aucun code, toutes les fonctionnalités AR étant réalisées par le contenu et la configuration de la scène.
Ajouter au contenu de la scène le support pour l'exécution sur l'appareil.
Astuce
Si nécessaire, il est possible d'opérer à l'inverse : utiliser une scène exécutable sur l'appareil, puis ajouter les composants EasyAR et les autres objets des exemples à la scène.
Modifier les objets destinés à être placés sous l'origine de la session.
Si une origine de session est définie dans la scène, déplacer
EasyARPandaetUIsous le nœud d'origine.
EasyARPandafournit une référence pour le comportement de suivi de mouvement de l'appareil, ce qui aide à diagnostiquer les instabilités de suivi.Le texte entre parenthèses dans les noms de ces objets est une indication pour les développeurs d'extensions et peut être supprimé :
(Move into Origin if there is any)(Move into Origin if there is any, set constraint source to your rendering camera)
Configurer le comportement des boutons
HUD.Définir la source de contrainte de
UIsur la caméra virtuelle pour garantir que les boutonsHUDfonctionnent comme prévu.
Configurer la fonction de raycast du
Canvas.Modifier le
Canvassous le nœudUIpour s'assurer que le raycast fonctionne, garantissant ainsi que tous les boutons et interrupteurs UI répondent comme prévu.Le modèle pré-ajoute déjà un Tracked Device Graphic Raycaster du XR Interaction Toolkit sous le nœud
Canvas, visible après importation du package correspondant.
Si XR Interaction Toolkit n'est pas utilisé lors de l'exécution sur l'appareil, un avertissement de script manquant similaire à ci-dessous apparaîtra. Il peut alors être supprimé et remplacé par le composant raycaster requis par l'appareil.

Prochaines étapes
- Avant d'aller plus loin dans le package d'extension, il est nécessaire de valider le fonctionnement (bring-up) de l'extension d'entrée.
- Une fois entièrement finalisé, préparer la publication du package d'extension.