Notes de publication de Microsoft Mixed Reality Toolkit 2.5
Important
Il existe un problème de compilateur connu qui affecte les applications créées pour Microsoft HoloLens 2 à l’aide d’ARM64. Ce problème est résolu en mettant à jour Visual Studio 2019 vers la version 16.8 ou ultérieure. Si vous ne parvenez pas à mettre à jour Visual Studio, importez le com.microsoft.mixedreality.toolkit.tools
package pour appliquer une solution de contournement.
Nouveautés de la version 2.5.4
Correction d’un bogue avec l’intégration d’Oculus lors de l’utilisation d’UPM
Lors de l’utilisation d’UPM, les préfabriqués de l’OculusXRSDKDeviceManagerProfile ont toujours la valeur None au démarrage. Cette version configure le Gestionnaire de périphériques pour qu’il pointe vers un ensemble de préfabriqués de travail au démarrage.
Correction d’un problème avec OpenXR via UPM
Résout un problème où les fournisseurs OpenXR n’ont pas été ajoutés à l'link.xml par défaut, ce qui entraînait l’échec de l’exécution de nouveaux projets sur l’appareil lors de l’utilisation d’OpenXR et mrTK via le Gestionnaire de package Unity. Les projets existants qui sont mis à niveau devront toujours l’ajouter manuellement.
Nouveautés de la version 2.5.3
Corrige une régression avec Oculus introduit dans la version 2.5.2
La version 2.5.2 a introduit un problème de génération lors de l’intégration du KIT de développement logiciel (SDK) Oculus. Cette version rétablit ce problème.
Nouveautés de la version 2.5.2
Ajouter la prise en charge d’OpenXR
La prise en charge initiale du package openXR en préversion d’Unity et du package OpenXR Mixed Reality de Microsoft a été ajoutée. Pour plus d’informations, consultez la page prise en main de MRTK/XRSDK, le billet du forum Unity ou la documentation de Microsoft .
Important
OpenXR dans Unity est uniquement pris en charge sur Unity 2020.3 et versions ultérieures. Il prend également en charge uniquement les builds x64, ARM et ARM64.
Erreurs de visualisation de limites corrigées
Les visualisations de limites, comme le plancher ou les murs, seront désormais correctement configurées et visibles au moment de l’exécution en fonction du profil de limite.
Prise en charge de MSBuild pour Unity
La prise en charge de MSBuild pour Unity a été supprimée à partir de la version 2.5.2, afin de s’aligner sur les nouvelles instructions de package d’Unity.
Nouveautés de la version 2.5.1
Erreurs de dépendance de package corrigées
Cette version corrige les dépendances incorrectes des fichiers entre packages (par exemple, les fichiers dans les ressources Standard ne référencent plus incorrectement les fichiers dans Foundation). La version 2.5.1 ajoute également une dépendance explicite à Text Mesh Pro.
Nuanceurs de package De ressources standard copiés dans Assets/MRTK/Shaders
Lorsque le package Ressources standard est installé via UPM, les nuanceurs sont copiés dans le dossier Assets/MRTK/Shaders afin qu’ils ne soient plus immuables. Cela résout le problème des nuanceurs mis à jour pour le pipeline de rendu universel (URP) qui rétablit le comportement hérité lors du prochain chargement du projet.
Correction du curseur de téléportage collant aux mains
Cette version résout un problème où le curseur de destination de téléportage peut coller aux visuels de la main.
Nouveautés de la version 2.5.0
Prise en charge d’Unity Package Manager (UPM)
Le kit de ressources Mixed Reality peut désormais être géré à l’aide du Gestionnaire de package Unity.
Notes
Certaines étapes manuelles sont nécessaires pour importer les packages UPM MRTK. Pour plus d’informations, consultez Mixed Reality Toolkit et le Gestionnaire de package Unity.
Prise en charge du KIT de développement logiciel (SDK) Oculus Quest XR
MRTK prend désormais en charge l’exécution de casques et de contrôleurs Oculus Quest à l’aide du pipeline natif du SDK XR. Le suivi des mains est également pris en charge avec le package Oculus Integration Unity grâce au travail d’Eric Provencher sur MRTK-Quest !
Pour obtenir des instructions sur le déploiement de votre appareil sur Oculus Quest à l’aide du nouveau pipeline, consultez le Guide d’installation d’Oculus Quest
Défilement de la collection d’objets
Le composant UX MRTK a été mis à niveau à partir d’une fonctionnalité expérimentale et offre plus de liberté pour la disposition du contenu 3D de différentes tailles avec une prise en charge supplémentaire pour les objets qui n’ont aucun collisionneur attaché. Une nouvelle option de désactivation du masquage de contenu a également été ajoutée, ce qui facilite le prototypage.
Pour plus d’informations, consultez Défilement de la collection d’objets .
Améliorations de l’animation, de la gestion et du son du pointeur de téléportation
Le pointeur de téléportation a maintenant amélioré les animations et les commentaires audio. Nous avons également amélioré la gestion du pointeur de téléportage afin qu’il gère plus facilement lors de la transition du pointage sur des surfaces proches à des surfaces plus éloignées.
Aide-mémoire de simulation d’entrée
La scène HandInteractionExamples dispose désormais d’un raccourci configurable pour afficher une page d’aide pour la simulation d’entrée
Vue d’œil de simulation d’entrée avec la souris
Les utilisateurs peuvent désormais utiliser la souris pour simuler le suivi oculaire. Consultez le Eye Simulation Mode
champ dans le profil de simulation d’entrée et définissez-le sur Souris. Cela remplace le champ précédent Simulate Eye Position
.
Contrôleur de mouvement de simulation d’entrée en mode lecture de l’éditeur
Les utilisateurs peuvent désormais simuler le contrôleur de mouvement comme les mains en mode lecture de l’éditeur. Les boutons de déclencheur, de saisie et de menu sont actuellement pris en charge.
Pointeur de récupération conique
Les pointeurs de récupération peuvent désormais être configurés pour interroger des objets à proximité à l’aide d’un cône provenant du point de récupération plutôt que d’une sphère. Cela ressemble davantage au comportement de l’interface de HoloLens 2 par défaut, qui interroge les objets à proximité à l’aide d’un cône. Le DefaultHoloLens2InputSystemProfile a également été ajusté pour utiliser le nouveau ConicalGrabPointer
.
Package TestUtilities
Il existe désormais un package (Microsoft.MixedReality.Toolkit.Unity.TestUtilities.2.5.0.unitypackage) qui contient l’infrastructure de test PlayMode et TestMode que MRTK utilise pour créer des tests de bout en bout. Cette infrastructure a été extrêmement pratique pour l’équipe MRTK elle-même, et nous sommes ravis que les consommateurs l’utilisent pour ajouter une couverture de test à leurs propres projets.
Le code suivant montre comment créer une main de test, l’afficher à un certain emplacement, la déplacer, puis la pincer et l’ouvrir.
TestHand leftHand = new TestHand(Handedness.Left);
yield return leftHand.Show(new Vector3(-0.1f, -0.1f, 0.5f));
yield return leftHand.SetGesture(ArticulatedHandPose.GestureId.Pinch);
yield return leftHand.Move(new Vector3(0.2f, 0.2f, 0));
yield return leftHand.SetGesture(ArticulatedHandPose.GestureId.Open);
Pour obtenir des instructions sur l’écriture d’un test à l’aide de ces TestUtilities, consultez cette section sur l’écriture de tests.
Pour obtenir des exemples de tests existants qui utilisent cette infrastructure, consultez PlayModeTests de MRTK.
Prise en charge des modules Unity Leap Motion 4.5.1
La prise en charge des modules Unity Leap Motion version 4.5.1 a été ajoutée et la prise en charge des ressources 4.4.0 a été supprimée. Les versions actuelles prises en charge des modules Leap Motion Unity sont 4.5.0 et 4.5.1.
Il existe également une étape supplémentaire pour l’intégration initiale de Leap Motion. Pour plus d’informations, consultez How to Configure the Leap Motion Hand Tracking in MRTK .
Spatial Awareness Mesh Observer gère mieux la personnalisation des matériaux
Avec cette version, les Windows Mixed Reality Spatial Mesh Observer
composants et ont amélioré la Generic XR SDK Spatial Mesh Observer
gestion des matériaux visuels. Les matériaux sont maintenant conservés lorsqu’un maillage a été mis à jour par l’observateur, où, auparavant, ils étaient réinitialisés à la propriété VisibleMaterial par défaut telle que configurée dans le profil.
Cela permet aux développeurs de modifier le matériau de maillage et de ne pas avoir les modifications remplacées de manière inattendue.
Link.xml créé dans le dossier MixedRealityToolkit.Generated
Avec l’introduction du gestionnaire de package Unity MRTK, MRTK écrit maintenant un link.xml
fichier dans le Assets/MixedRealityToolkit.Generated
dossier, si aucun n’est présent. Il est recommandé d’ajouter ce fichier (et link.xml.meta
) au contrôle de code source. Link.xml est utilisé pour influencer la fonctionnalité de suppression du code managé de l’éditeur de liens Unity.
Pour plus d’informations sur le fichier de link.xml MRTK, consultez l’article Suppression du code MRTK et du code managé .
Unity 2019.3+: la boîte de dialogue de configuration MRTK ne tente plus d’activer la prise en charge XR héritée
Pour éviter les conflits potentiels lors de l’utilisation de la plateforme XR d’Unity, l’option permettant d’activer la prise en charge XR héritée a été supprimée de la boîte de dialogue de configuration MRTK. Si vous le souhaitez, la prise en charge de XR héritée peut être activée, dans Unity 2019, à l’aide de Modifier>les paramètres> dulecteur> ProjectXR Settings>Virtual Reality Pris en charge.
Réduction de la surcharge InitializeOnLoad
Nous avons travaillé pour réduire la quantité de travail qui s’exécute dans les gestionnaires InitializeOnLoad, ce qui devrait entraîner des améliorations de la vitesse de développement des boucles internes. Les gestionnaires InitializeOnLoad s’exécutent chaque fois qu’un script est compilé, avant d’entrer en mode lecture, ainsi qu’au lancement de l’éditeur. Ces gestionnaires s’exécutent désormais dans beaucoup moins de cas, ce qui entraîne des améliorations générales de la réactivité Unity.
Dans certains cas, il y avait un compromis qui devait être fait :
- Pour connaître l’étape d’intégration supplémentaire, consultez Configuration du suivi de la main Leap Motion .
- Pour ceux qui utilisent ARFoundation, il existe maintenant une étape manuelle supplémentaire dans ses étapes de prise en main. Pour connaître les nouvelles étapes, consultez ARFoundation .
- Pour ceux qui utiliseront la communication à distance holographique avec le pipeline XR hérité sur HoloLens 2, il existe maintenant une étape manuelle à effectuer.
Contrôle de limites gradué
Le contrôle de limites est sorti de l’expérience et est fourni avec un tas de nouvelles fonctionnalités et des tonnes de correctifs de bogues. Voici une liste des points forts de cette mise à jour :
- les propriétés sont divisées en configurations, ce qui facilite la configuration du contrôle des limites
- les configurations peuvent être partagées via des objets scriptables
- chaque propriété/ propriété pouvant être scriptable est configurable au runtime
- L’outil de contrôle bounds n’est plus recréé lors des modifications de propriété
- prise en charge des handles de traduction
- prise en charge complète des contraintes via le gestionnaire de contraintes
- intégration du système élastique (expérimental)
L’ancien cadre englobant est maintenant déprécié et les objets de jeu existants à l’aide du cadre englobant peuvent être mis à niveau à l’aide de l’outil de migration ou de l’inspecteur de zone englobante.
Composant Gestionnaire de contraintes
Les contraintes peuvent désormais être utilisées par le contrôle de limites et le manipulateur d’objets via le nouveau composant gestionnaire de contraintes. Les deux composants créent un gestionnaire de contraintes par défaut et traitent automatiquement les contraintes attachées.
En plus du gestionnaire de contraintes de comportement automatique est également fourni avec un mode manuel qui permet aux utilisateurs de décider quelle contrainte doit être traitée. Pour cette raison, la façon dont nous affichons les contraintes dans l’inspecteur de propriétés a changé un peu.
Les contraintes appliquées au composant sont désormais affichées sous forme de liste dans le composant gestionnaire de contraintes, tandis que le composant qui utilise le gestionnaire de contraintes (contrôle de limites ou manipulateur d’objets) affiche désormais le gestionnaire de contraintes et le mode sélectionnés (automatique ou manuel). Pour plus d’informations, consultez la section Gestionnaire de contraintes dans notre documentation.
HoloLens 2 bouton mise à jour des matériaux
Mise à jour du matériau de la cage avant du bouton HoloLens 2 pour supprimer la couleur noire dans le MRC.
Mise à jour du panneau description, exemple de scène mobile
Panneau de description mis à jour. (SceneDescriptionPanelRev.prefab) La nouvelle conception fournit une barre supérieure qui permet à l’utilisateur d’ajuster/déplacer l’ensemble de la scène.
Visualisation de maillage spatial - impulsion sur air-tap
Exemple de nuanceur d’impulsions mis à jour pour que le maillage spatial corresponde au comportement de l’interpréteur de commandes de HoloLens 2.
Système élastique (expérimental)
MRTK est désormais fourni avec un système de simulation élastique qui comprend une grande variété de sous-classes extensibles et flexibles, offrant des liaisons pour des ressorts quaternion à 4 dimensions, des ressorts à volume 3 dimensions et des systèmes de ressorts linéaires simples.
Actuellement, les composants MRTK suivants qui prennent en charge le gestionnaire d’élastiques peuvent tirer parti des fonctionnalités élastiques :
Joystick (expérimental)
Exemple d’interface joystick qui peut contrôler un objet cible volumineux.
Sélecteur de couleurs (expérimental)
Contrôle expérimental qui permet de modifier facilement les couleurs des matériaux sur n’importe quel objet au moment de l’exécution.
Changements cassants
Modifications des fichiers de définition d’assembly
Certains fichiers asmdef sont modifiés et prennent désormais uniquement en charge Unity 2018.4.13f1 ou version ultérieure. Les erreurs de compilation s’affichent lors de la mise à jour vers MRTK 2.5 dans les versions antérieures d’Unity. Vous pouvez résoudre ce problème en accédant à Assets\MRTK\Providers\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.asmdef
dans la fenêtre du projet et en supprimant la référence manquante dans l’inspecteur. Répétez ces étapes avec Assets\MRTK\Providers\Oculus\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.Oculus.asmdef
et Assets\MRTK\Providers\WindowsMixedReality\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.WMR.asmdef
. Notez que vous devez rétablir les modifications en remplaçant ces trois fichiers asmdef par des fichiers d’origine (c’est-à-dire non modifiés) lors de la mise à niveau vers Unity 2019.
IMixedRealityPointerMediator
Cette interface a été mise à jour pour avoir une nouvelle fonction :
void SetPointerPreferences(IPointerPreferences pointerPreferences);
Si vous avez un médiateur de pointeur personnalisé qui ne sous-classe pas DefaultPointerMediator, vous devez implémenter cette nouvelle fonction. Consultez ce problème pour plus d’informations sur la raison pour laquelle cela a été ajouté. Cela a été ajouté pour garantir que les préférences de pointeur seraient explicitement transmises au médiateur, plutôt que de les faire implicitement en fonction de la présence d’un constructeur qui a pris un IPointerPreferences.
Rest / Device Portal API
La UseSSL
propriété statique a été déplacée de Rest
vers DevicePortal
.
Si vous l’avez fait précédemment...
Rest.UseSSL = true
Faites-le maintenant...
DevicePortal.UseSSL = true
Link.xml
Si une application utilisait précédemment la distribution NuGet du MRTK, le link.xml
fichier a été supprimé du package Foundation. Pour restaurer les règles de conservation du code, l’ouverture du projet dans Unity crée un fichier par défaut link.xml
dans Assets/MixedRealityToolkit.Generated
. Il est recommandé d’ajouter ce fichier (et link.xml.meta
) au contrôle de code source.
Transformer les modifications de contrainte
La propriété TargetTransform a été marquée comme obsolète, car elle n’était pas utilisée par le système de contraintes. La logique de contrainte est basée sur la transformation passée aux méthodes Initialize et Apply. Les contraintes utilisateur dérivées qui s’appuient sur cette propriété peuvent mettre en cache TargetTransform dans leur implémentation en stockant la transformation du composant de contrainte pour obtenir le même comportement.
Le type de données de pose worldPoseOnManipulationStart
du monde initial stocké a été modifié de MixedRealityPose en MixedRealityTransform, qui inclut la valeur d’échelle locale de l’objet manipulé. Avec cette modification, il n’est plus nécessaire de mettre en cache séparément les valeurs d’échelle initiales.
Nouvelle propriété dans IMixedRealityDictationSystem
Une nouvelle propriété AudioClip
a été ajoutée à l’interface IMixedRealityDictationSystem. La AudioClip
propriété permet d’accéder au clip audio associé à la session de dictée actuelle. Les utilisateurs doivent implémenter la propriété dans leurs scripts implémentant l’interface.
Les façades de service tournent vers le bas
Les façades de services sont refusées dans 2.5. Cette fonctionnalité a été ajoutée à l’origine pour faciliter la configuration des profils MRTK (en créant de faux GameObjects en scène représentant chacun des services de MRTK). À long terme, nous voulons éviter de créer de faux objets dans le jeu et d’essayer de les maintenir synchronisés (car les problèmes de synchronisation des données et de « source de vérité » sont notoirement difficiles à mettre à l’échelle et à obtenir correctement).
Dans la version 2.5, les gestionnaires de façade de service sont conservés pour garantir le bon déroulement de la mise à niveau du projet . Toutes les façades qui existent dans le projet seront supprimées par le gestionnaire de façade de service pour garantir que les scènes ouvertes dans la version 2.5 sont automatiquement corrigées.
Le code restant associé à la fonctionnalité de façade de service sera supprimé dans une version ultérieure.
Ajout du contrôleur de mouvement au service de simulation d’entrée
La simulation du contrôleur de mouvement est désormais proposée en mode de lecture de l’éditeur parallèlement à la simulation de main existante. Pour activer cette modification, de nombreuses fonctions/champs/propriétés actuels sont désormais marqués comme obsolètes, avec InputSimulationService.cs
et MixedRealityInputSimulationProfile.cs
obtenir les modifications les plus significatives. La logique et le comportement du code pertinent restent largement les mêmes, et la majorité des fonctions obsolètes, etc. sont liés au remplacement de la référence à « hand » par le terme plus générique « contrôleur » (par exemple, de DefaultHandSimulationMode
à DefaultControllerSimulationMode
). En plus d’obtenir de nouveaux noms, le type de retour de certaines nouvelles fonctions est mis à jour pour correspondre au changement de nom/comportement (par exemple, GetControllerDevice
en fonction du retour BaseController
d’origine GetHandDevice
maintenant au lieu de SimulatedHand
).
IInputSimulationService
a maintenant de nouvelles propriétés MotionControllerDataLeft
et MotionControllerDataRight
. MixedRealityInputSimulationProfile
inclut désormais de nouveaux champs pour le mappage du clavier de certains boutons du contrôleur de mouvement.
Problèmes connus
CameraCache peut créer une caméra lors de l’arrêt
Dans certaines situations (par exemple, lors de l’utilisation du fournisseur LeapMotion dans l’éditeur Unity), il est possible pour CameraCache de recréer la MainCamera lors de l’arrêt. Pour plus d’informations, consultez ce problème .
FileNotFoundException lorsque des exemples sont importés via le Gestionnaire de package Unity
En fonction de la longueur du chemin du projet, l’importation d’exemples via Unity Package Manager peut générer des messages FileNotFoundException dans la console Unity. En cause, le chemin d’accès au fichier « manquant » est plus long que MAX_PATH (256 caractères). Pour résoudre ce problème, raccourcissez la longueur du chemin d’accès du projet.
Aucun spatialiseur n’a été spécifié. L’application ne prend pas en charge Spatial Sound
Un avertissement « Aucun spatialiseur n’a été spécifié » s’affiche si un spatialiseur audio n’est pas configuré. Cela peut se produire si aucun package XR n’est installé, car Unity inclut des spatialiseurs dans ces packages.
Pour résoudre ce problème, vérifiez que :
Fenêtre>Un ou plusieurs packages XR sont installés dans le Gestionnaire de package
Mixed Reality Toolkit>Utilities>Configure Unity Project et effectuez une sélection pour Audio Spatializer
NullReferenceException : référence d’objet non définie sur un instance d’un objet (SceneTransitionService.Initialize)
Dans certains cas, l’ouverture EyeTrackingDemo-00-RootScene
peut provoquer une exception NullReferenceException dans la méthode Initialize de la classe SceneTransitionService.
Cette erreur est due au fait que le profil de configuration du service de transition de scène n’est pas défini. Pour résoudre ce problème, procédez comme suit :
- Accédez à l’objet
MixedRealityToolkit
dans la hiérarchie - Dans la fenêtre Inspecteur, sélectionnez
Extensions
- S’il n’est pas développé, développez
Scene Transition Service
- Définissez la valeur de
Configuration Profile
sur MRTKExamplesHubSceneTransitionServiceProfile
Oculus Quest
Il existe actuellement un problème connu pour l’utilisation du plug-in Oculus XR avec lors du ciblage des plateformes autonomes. Vérifiez les mises à jour dans le suivi des bogues/les forums/notes de publication d’Oculus.
Le bogue est signifié avec cet ensemble de 3 erreurs :
UnityUI et TextMeshPro
Il existe un problème connu pour les versions plus récentes de TextMeshPro (1.5.0+ ou 2.1.1+), où la taille de police par défaut pour les listes déroulantes et l’espacement des caractères en gras a été modifiée.
Cela peut être résolu en rétrogradant vers une version antérieure de TextMeshPro. Pour plus d’informations, consultez le problème #8556 .