Configuration et exécution des exemples WLT et ASA
Résumé
Les outils World Locking Tools pour Unity (WLT) offrent un système de coordonnées stable basé sur le suivi local. Combiné avec les ancres spatiales Azure Spatial Anchors (ASA), ce système de coordonnées stable peut être conservé dans différentes sessions et partagé avec d’autres appareils.
Cette vidéo peut vous donner une idée du déroulement de l’exécution de l’exemple.
Contenu de l’exemple
Cet exemple fournit des ressources et des scripts pour :
- Configurer le système de coordonnées global Unity par rapport à l’environnement physique.
- Publier la configuration du système de coordonnées sur Azure à l’aide d’Azure Spatial Anchors.
- Récupérer les données d’Azure pour restaurer le système de coordonnées lors de sessions ultérieures ou sur d’autres appareils.
Structure de ce document
- Installation : guide pratique d’installation et de déploiement de l’exemple d’application.
- Remarques sur l’exécution de l’application et étapes suggérées.
- Description architecturale des scripts de prise en charge.
Configuration et versions testées
Cet exemple a été développé et testé à l’aide de :
- Unity 2020.3.8f1
- Azure Spatial Anchors (ASA) v2.9.0 à v2.10.2.
- Mixed Reality Toolkit v2.7.2
- World Locking Tools pour Unity v1.4.1
- FrozenWorldEngine v1.1.1
Vous pouvez installer WLT et cet exemple à partir de WLT releases. .unitypackage ou de l’outil Mixed Reality Feature Tool. En cas d’installation à partir de l’outil Feature Tool, vous devez non seulement installer la dépendance (automatique) des exemples WLT mais vous devez également importer les exemples dans votre projet. Pour plus d’informations, consultez Installation de WLT à partir de l’outil MR Feature Tool.
Installer la DLL de Frozen World Engine dans le projet
La première étape consiste à installer la DLL de Frozen World Engine v1.1.1. Instructions ici avec NuGet pour Unity ou la ligne de commande nuget.exe.
Installer ASA
Création de ressources d’ancre spatiale
Ce Guide de démarrage rapide aborde les étapes de création d’un compte Azure et des ressources d’ancres spatiales nécessaires. L’ID de compte, le domaine de compte et la clé de compte sont nécessaires pour exécuter l’exemple. Vous allez les ajouter dans les champs appropriés du script « Spatial Anchor Manager », sur l’objet SpacePinBinder dans la scène. D’autres méthodes d’authentification sont prises en charge, mais l’ID de compte/domaine/clé est la méthode la plus simple lors de la mise en route.
Installer le SDK
Ensuite, installez Azure Spatial Anchors v2.9.0 à l’aide de l’une des méthodes décrites dans ces instructions. J’ai utilisé la méthode avec l’outil MR Feature Tool.
Configuration supplémentaire pour la relocalisation approximative
Pour l’utilisation de la relocalisation approximative, une configuration supplémentaire est requise lors du déploiement sur Android ou HoloLens2.
Qu’est-ce que la relocalisation approximative ?
La relocalisation approximative est une technologie qui vous permet de rechercher les ancres cloud précédemment créées dans votre voisinage actuel. Vous trouverez plus d’informations sur la relocalisation approximative dans la section consacrée à la relocalisation approximative dans la documentation Azure Spatial Anchors.
Cet exemple montre comment rechercher des ancres cloud soit par relocalisation approximative, soit explicitement par l’ID d’ancre cloud (GUID). Si la relocalisation approximative est activée, les étapes de configuration supplémentaires suivantes sont requises. Si la fonction de relocalisation approximative ne vous intéresse pas, vous pouvez la désactiver dans le composant « Publisher ASA » de l’objet SpacePinBinder.
Étapes de configuration supplémentaires pour HoloLens2
Pour activer la relocalisation approximative sur HoloLens2, vous devez ajouter une autorisation au fichier Package.appxmanifest généré dans ARM/WorldLockingTools/Package.appxmanifest (en supposant que vous avez sélectionné le dossier ARM comme cible de génération). S’il s’agit de votre projet, remplacez le nom approprié pour WorldLockingTools dans ce chemin. Ajoutez la ligne suivante dans la section Fonctionnalités :
<DeviceCapability Name="wiFiControl"/>
Pour plus d’informations, consultez cet article sur GitHub.
Si vous omettez cette étape, l’éditeur « Disponibilité » n’atteint jamais l’état « Prêt », votre fréquence d’images est extrêmement faible et votre journal UnityPlayer.log (s’il est généré) contient de nombreuses exceptions de type :
InvalidOperationException: CoarseReloc: WiFi access has been declined. Request CV: . Response CV: .
Vous devez ajouter cette fonctionnalité à Package.appxmanifest à chaque fois que la solution est générée depuis le début. Toutefois, les builds ultérieures d’Unity préservent la fonctionnalité.
Dans les paramètres du projet/la gestion du plug-in XR, assurez-vous que Windows Mixed Reality est le fournisseur de plug-in sélectionné sous l’onglet UWP (OpenXR est également pris en charge pour WLT avec ASA).
Le profil MRTK XAmple XRSDK ToolkitConfigurationProfile
dans XAmpleApp/CustomProfiles convient pour l’exécution sur HoloLens2.
Étapes de configuration supplémentaires pour Android
Pour activer la relocalisation approximative sur Android, suivez ces instructions afin de configurer le fichier Assets/Plugins/Android/mainTemplate.gradle.
En outre, dans Assets/Plugins/Android/AndroidManifest.xml, un grand nombre d’autorisations doivent être activées pour autoriser l’accès au Wi-Fi sur Android. Là encore, si vous incorporez des éléments de ce projet dans votre propre projet, vous devez également suivre ces étapes pour pouvoir utiliser la relocalisation approximative. Pour plus d’informations sur les autorisations requises pour l’accès au Wi-Fi sur Android, reportez-vous à ce billet et au billet lié.
Des exemples de mainTemplate.gradle et AndroidManifest.xml modifiés sont inclus dans l’Exemple de projet WLT-ASA qui est configuré spécifiquement pour l’utilisation conjointe de WLT et ASA. Vous pouvez les copier directement dans votre projet après l’activation de « Custom Main Manifest » et « Custom Main Gradle Template » dans les paramètres de publication du lecteur comme décrit.
Lorsque vous appuyez sur Build &Run, si votre build échoue avec une erreur de nuanceur dans le matériau MRTK_Standard, essayez simplement de générer et réexécuter. La deuxième tentative peut être fructueuse. On trouve des informations à ce sujet dans les problèmes concernant MRTK, mais toutes les informations semblent incorrectes (selon moi).
Dans les paramètres du projet/la gestion du plug-in XR, assurez-vous que ARCore est le fournisseur de plug-in sélectionné sous l’onglet Android.
Le profil XAmple AR ToolkitConfigurationProfile
MRTK convient à l’exécution sur un appareil mobile. N’oubliez pas d’exécuter le script Mixed Reality/Utilities/UnityAR/Update Scripting Defines
après être passé à Android ou iOS.
Présentation des boutons
- Activer/désactiver les repères : quand les SpacePins ne sont pas actifs, les poignées de manipulation peuvent être masquées.
- Publier : enregistrer la configuration actuelle, ce qui permet de la récupérer lors d’une session ultérieure ou sur d’autres appareils.
- Charger Oracle : utiliser les liaisons précédemment stockées pour restaurer une configuration spatiale.
- Effacer Oracle : supprimer toutes les ressources de stockage, en particulier les ancres spatiales Azure, et supprimer les liaisons Oracle.
- Rechercher : rechercher toutes les ancres spatiales Azure dans le voisinage immédiat, puis restaurez la configuration spatiale à partir de celles-ci.
- Purger : recherchez toutes les ancres spatiales Azure dans le voisinage immédiat et effacez-les.
- Réinitialiser les repères : annuler toutes les manipulations des Space Pins. N’effacez pas les ancres spatiales Azure.
Le menu sur les appareils mobiles se présente légèrement différemment, mais la position et la signification des boutons sont identiques.
Procédure pas à pas : publication à partir d’HoloLens2
Placer la scène à l’aide de SpacePins
Quand vous démarrez l’exemple, le système de coordonnées est positionné et orienté en fonction de la position du dispositif de suivi de la tête au démarrage. Cela signifie que cette position est relativement arbitraire. La première étape consiste à ajuster le système de coordonnées à un état de référence souhaité.
Le canapé de la scène PinTestSofa mesure 2,18 m de long, 0,78 m de haut et 1,0 m de profondeur. Les poignées SpacePin à chaque extrémité en haut du canapé sont écartées de 2,18 m et à 0,78 m du sol. Il est recommandé de mesurer et de placer les marqueurs temporaires à 2,18 m l’un de l’autre, à une hauteur pratique. Vous pouvez également ajuster la scène pour l’adapter à votre espace physique.
Après avoir généré et déployé l’application sur un appareil HoloLens2, patientez jusqu’à ce que l’état du menu flottant indique Prêt (indication : la ligne d’état passe du rouge au blanc quand il est prêt).
L’un après l’autre, tirez sur chacune des poignées Space Pin (sphères filaires blanches) et faites-les glisser vers la position relative à vos marqueurs de référence.
Après avoir relâché chacun des marqueurs à la position correcte, la scène doit se décaler pour restaurer le dossier du canapé par rapport au SpacePin. Les objets de la scène ne sont pas déplacés. L’espace de coordonnées entier est ajusté afin que les coordonnées d’origine des SpacePins se trouvent à l’emplacement où vous les avez déplacés dans le monde physique.
Publier l’espace de coordonnées
Après avoir établi l’espace souhaité, vous pouvez maintenant publier cet espace pour qu’il soit disponible lors des sessions ultérieures et sur d’autres appareils.
Si vous utilisez la relocalisation approximative, il est judicieux d’effacer toutes les ancres cloud créées précédemment à ce stade. Appuyez sur le bouton « Purger la recherche » et patientez jusqu’à ce que l’exécution se termine.
Maintenant, dans le menu flottant, appuyez sur le bouton «Publier» et patientez jusqu’à ce que l’opération soit effectuée.
Procédure pas à pas : utilisation de HoloLens2 à l’aide de la relocalisation approximative
Redémarrez l’application sur un autre appareil HoloLens2 ou sur le même appareil après avoir fermé la session précédente. Quand l’état est Prêt, appuyez sur le bouton « Charger à partir de la recherche ». Une fois que l’opération est effectuée, le système de coordonnées global Unity est réaligné sur votre environnement physique, comme lors de la session précédente (publiée).
Procédure pas à pas : utilisation de HoloLens2 à l’aide de IBindingOracle (SpacePinBinderFile)
Quand les liaisons sont publiées sur un appareil, ou quand elles sont restaurées à partir de la recherche, elles sont enregistrées dans un IBindingOracle. Cet exemple comprend l’Oracle le plus basique, qui écrit simplement les liaisons dans un fichier texte.
Redémarrez l’application dans une nouvelle session. S’il s’agit du même appareil HoloLens2 que celui sur laquelle la publication a été effectuée, il reste un fichier de liaison de la publication. S’il s’agit d’un appareil HoloLens2 différent, mais qu’une recherche a été effectuée avec succès dans une session précédente, le fichier de liaison est conservé.
Appuyez sur le bouton « Charger à partir du fichier » pour charger les liaisons précédemment enregistrées et restaurer l’espace de coordonnées.
Procédure pas à pas : utilisation d’Android à l’aide de la relocalisation approximative
L’expérience utilisateur semble légèrement différente sur Android, mais elle fonctionne exactement de la même façon. La principale différence réside dans le fait qu’une analyse plus poussée de l’environnement au démarrage est nécessaire par rapport à HoloLens2, avant que la fonctionnalité ASA soit prête à continuer.
Quand le système est prêt, vous pouvez sélectionner le bouton bleu (3{^>e<^} à partir de la droite) pour effectuer une recherche dans les liaisons précédemment publiées et restaurer le système de coordonnées.
Procédure pas à pas : utilisation d’Android à l’aide de IBindingOracle (SpacePinBinderFile)
Une fois le chargement réussi à partir de la recherche, un fichier de liaisons reste sur l’appareil. Dans les sessions ultérieures, il suffit d’appuyer sur Charger à partir d’un fichier pour restaurer le système de coordonnées.
Vous pouvez également copier le fichier texte des liaisons à partir de l’appareil de publication vers l’appareil consommateur. L’emplacement par défaut du fichier texte des liaisons est le suivant :
HoloLens2 : User Folders/LocalAppData/WLT-ASA/LocalState/BinderFile.txt
Android : Internal shared storage/Android/data/com.WorldLockingTools.WLTASA/files/BinderFile.txt