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

Corrige un bogue avec l’intégration d’Ergonomies lors de l’utilisation d’UPM

Lors de l’utilisation d’UPM, l’objet ActivesXRSDKDeviceManagerProfile a toujours défini ses préfabriqués sur None au démarrage. Cette version configure le Gestionnaire de périphériques pour qu’il pointe vers un ensemble opérationnel de préfabriqués au démarrage.

Résolution d’un problème avec OpenXR via UPM

Corrige un problème où les fournisseurs OpenXR n’ont pas été ajoutés au link.xml par défaut, ce qui entraîne 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 d’Unity. Les projets existants qui sont mis à niveau devront toujours être ajoutés manuellement.

Nouveautés de la version 2.5.3

Correction d’une régression avec Tableaux introduits 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) Personnalisations. 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 d’aperçu OpenXR d’Unity et de l’Mixed Reality package OpenXR de Microsoft a été ajoutée. Pour plus d’informations, consultez la page de prise en main de MRTK/XRSDK, lebillet du forum Unity ou la documentation de Microsoft .

Important

OpenXR dans Unity est pris en charge uniquement sur Unity 2020.3 et versions ultérieures. Il prend également en charge uniquement les builds x64, ARM et ARM64.

Erreurs de visualisation des limites corrigées

Les visualisations de limites, comme le sol 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, pour 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 inter-packages (par exemple, les fichiers des ressources Standard ne référencent plus de manière incorrecte 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 qui colle aux mains

Cette version résout un problème où le curseur de destination de téléport peut coller aux visuels de main.

Nouveautés de la version 2.5.0

Prise en charge du Gestionnaire de package Unity (UPM)

Le kit de ressources Mixed Reality peut désormais être géré à l’aide du Gestionnaire de package Unity.

MRTK Foundation UPM Package

Notes

Certaines étapes manuelles sont nécessaires pour importer les packages UPM MRTK. Pour plus d’informations, consultez Mixed Reality Toolkit et Unity Package Manager.

Prise en charge du Kit de développement logiciel (SDK) Actives Quest XR

MRTK prend désormais en charge l’exécution de casques et de contrôleurs Actives Quest à l’aide du pipeline du SDK XR natif. Le suivi des mains est également pris en charge avec le package d’Unity d’intégration d’Ergonomie grâce au travail d’Eric Provencher sur MRTK-Quest!

Pour obtenir des instructions sur le déploiement de votre appareil sur Intunes Quest à l’aide du nouveau pipeline, consultez le Guide d’installation de Intunes Quest

Défilement de la collection d’objets

Le composant d’expérience utilisateur 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 permettant de désactiver le masquage de contenu a également été ajoutée, ce qui facilite le prototypage.

Pour plus d’informations, voir Scrolling Object Collection .

Scrolling, collection d’objets

Animation, gestion et améliorations sonores du pointeur de téléport

Le pointeur de téléport a désormais amélioré les animations et les commentaires audio. Nous avons également amélioré la gestion du pointeur de téléport afin qu’il gère plus facilement lors de la transition de pointer vers des surfaces proches vers 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

Aide-mémoire sur la simulation d’entrée

Regard visuel 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 du profil de simulation d’entrée et définissez-le sur Souris. Cela remplace le champ précédent Simulate Eye Position .

Souris du regard

Contrôleur de mouvement de simulation d’entrée en mode lecture de l’éditeur

Les utilisateurs peuvent désormais simuler un 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 saisie conique

Les pointeurs de récupération peuvent désormais être configurés pour interroger des objets proches à l’aide d’un cône à partir du point de saisie plutôt qu’une sphère. Cela ressemble plus étroitement au comportement de l’interface HoloLens 2 par défaut, qui interroge les objets proches à l’aide d’un cône. DefaultHoloLens2InputSystemProfile a également été ajusté pour utiliser le nouveau ConicalGrabPointer.

Pointeur de saisie conique

Package TestUtilities

Il existe maintenant un package (Microsoft.MixedReality.Toolkit.Unity.TestUtilities.2.5.0.unitypackage) qui contient l’infrastructure de test PlayMode et TestMode utilisée par MRTK 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 utilisent cette fonctionnalité pour ajouter la couverture des tests à leurs propres projets.

Le code suivant montre comment créer une main de test, l’afficher à un certain emplacement, le déplacer, puis pincer et 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 Leap Motion Unity version 4.5.1 a été ajoutée et la prise en charge des ressources 4.4.0 a été supprimée. Les versions prises en charge actuelles 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, voir How to Configure the Leap Motion Hand Tracking dans MRTK pour plus d’informations.

Spatial Awareness Mesh Observer mieux gère la personnalisation des matériaux

Avec cette version, les composants et les Windows Mixed Reality Spatial Mesh Observer composants 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ù, précédemment, ils ont été réinitialisés au VisibleMaterial par défaut tel qu’il est configuré dans le profil.

Cela permet aux développeurs de modifier le matériau de maillage et de ne pas remplacer de manière inattendue les modifications.

Link.xml créé dans le dossier MixedRealityToolkit.Generated

Avec l’introduction de Unity Package Manager MRTK, MRTK écrit désormais un link.xml fichier dans le Assets/MixedRealityToolkit.Generated dossier, s’il n’en existe aucun. Il est recommandé d’ajouter ce fichier (et link.xml.meta) à ajouter au contrôle de code source. Link.xml est utilisé pour influencer la fonctionnalité de suppression de code managé de l’éditeur de liens Unity.

Pour plus d’informations sur le fichier link.xml MRTK, consultez l’article sur la suppression de code managé et MRTK .

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 > desparamètres> XR dulecteur>de paramètres> de projet prisen 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 dans la vitesse de développement de boucle interne. Les gestionnaires InitializeOnLoad s’exécutent chaque fois qu’un script est compilé, avant d’entrer en mode lecture et également lors du 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 :

Contrôle des limites gradué

Contrôle des limites

Le contrôle des limites est sorti de l’expérimentation et vient avec un tas de nouvelles fonctionnalités et 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 par le biais d’objets scriptables
  • chaque propriété /propriété scriptable est configurable au moment de l’exécution
  • la plateforme de contrôle bounds n’est plus recréée sur les 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 désormais déprécié et les objets de jeu existants à l’aide d’un 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 manipulateur de contraintes et par le manipulateur d’objets via le nouveau composant du gestionnaire de contraintes. Les deux composants créent un gestionnaire de contraintes par défaut et traitent automatiquement toutes les contraintes attachées.

En outre, le 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 des contraintes dans l’inspecteur de propriété a changé un peu.

Vue Inspecteur montrant la sélection manuelle du gestionnaire de contraintes

Les contraintes appliquées au composant sont désormais affichées sous la forme d’une liste dans le composant du gestionnaire de contraintes, tandis que le composant qui utilise le gestionnaire de contraintes (contrôle lié ou manipulateur d’objet) affiche désormais le gestionnaire de contraintes et le mode sélectionnés (automatique ou manuel). Pour plus d’informations, consultez la section du gestionnaire de contraintes dans notre documentation.

HoloLens 2 mise à jour du matériel du bouton

Mise à jour HoloLens 2 matériau de cage avant du bouton pour supprimer la couleur noire dans LA MRC.

HoloLens 2 mise à jour du matériel du bouton

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 attrapable qui permet à l’utilisateur d’ajuster/déplacer toute la scène.

Mise à jour du panneau description

Visualisation de maillage spatial - impulsions sur l’air

Exemple de nuanceur d’impulsions mis à jour pour que le maillage spatial corresponde au comportement de l’interpréteur de commandes de HoloLens 2.

Impulsions sur air-tap

Système élastique (expérimental)

Système élastique 2

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 de quaternion 4 dimensions, des ressorts de volume 3 dimensions et des systèmes de ressort linéaire simples.

Actuellement, les composants MRTK suivants prenant en charge le gestionnaire d’élastiques peuvent tirer parti des fonctionnalités élastiques :

Développement d’un menu élastiqueSaisir une tasse de café élastique

Joystick (expérimental)

Exemple d’interface joystick qui peut contrôler un objet cible volumineux.

Joystick

Sélecteur de couleurs (expérimental)

Contrôle expérimental qui facilite la modification des couleurs des matériaux sur n’importe quel objet au moment de l’exécution.

Trois méthodes différentes de contrôle sélecteur de couleurs

Quatre méthodes différentes de contrôle sélecteur de couleurs

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. Cela peut être résolu en accédant à Assets\MRTK\Providers\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.asmdef 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 disposez d’un médiateur de pointeur personnalisé qui ne sous-classe pas DefaultPointerMediator, vous devez implémenter cette nouvelle fonction. Pour plus d’informations sur la raison de l’ajout de ce problème, consultez ce problème . Cela a été ajouté pour s’assurer que les préférences de pointeur seraient transmises explicitement au médiateur, plutôt que de l’avoir implicitement effectuée en fonction de la présence d’un constructeur qui prenait un IPointerPreferences.

API Rest/ Device Portal

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 préservation du code, l’ouverture du projet dans Unity une fois 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.

Modifications des contraintes de transformation

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 en 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 world pose worldPoseOnManipulationStart initial stocké est passé de MixedRealityPose à 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 se tournent vers le bas

Les façades de services sont refusées en 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 in-game et d’essayer de les garder synchronisés (comme la synchronisation des données et les problèmes 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 afin de s’assurer que la mise à niveau du projet s’effectue sans problème : 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 lecture de l’éditeur en même temps que la simulation de main existante. Pour activer cette modification, de nombreuses fonctions/champs/propriétés actuels sont désormais marquées comme obsolètes et InputSimulationService.csMixedRealityInputSimulationProfile.cs obtiennent les modifications les plus importantes. La logique et le comportement du code pertinent restent en grande partie identiques, et la majorité des fonctions obsolètes, etc. sont liés au remplacement de la référence à « hand » au terme plus générique « contrôleur » (par exemple, de DefaultHandSimulationMode ).DefaultControllerSimulationMode Outre l’obtention 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 de l’original GetHandDevice retourne BaseController 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 de clavier de certains boutons de 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 que CameraCache recrée le MainCamera à l’arrêt. Pour plus d’informations, consultez ce problème .

FileNotFoundException lorsque des exemples sont importés via le Gestionnaire de package Unity

Selon la longueur du chemin du projet, l’importation d’exemples via le Gestionnaire de package Unity peut générer des messages FileNotFoundException dans la console Unity. La cause de ce problème est le chemin d’accès au fichier « manquant » étant plus long que MAX_PATH (256 caractères). Pour résoudre ce problème, raccourcissez la longueur du chemin du projet.

Aucun spatialiseur n’a été spécifié. L’application ne prend pas en charge Spatial Sound

Un avertissement « Aucun spatializer 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>Le Gestionnaire de package a un ou plusieurs packages XR installés

  • Mixed Reality Toolkit>Utilities>Configure Unity Project et effectuez une sélection pour Audio Spatializer

    Sélectionner un spatialiseur audio

NullReferenceException : Référence d’objet non définie sur une instance d’un objet (SceneTransitionService.Initialize)

Dans certains cas, l’ouverture EyeTrackingDemo-00-RootScene peut entraîner 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éder à l’objet MixedRealityToolkit dans la hiérarchie
  • Dans la fenêtre Inspector, sélectionnez Extensions
  • S’il n’est pas développé, développez Scene Transition Service
  • Définir la valeur de Configuration ProfileMRTKExamplesHubSceneTransitionServiceProfile

Correction de la transition de scène

Oculus Quest

Il existe actuellement un problème connu pour l’utilisation du plug-in Personnalisations XR avec lequel vous ciblez des plateformes autonomes. Consultez les notes de suivi de bogues/forums/mises à jour d’Ergonomies.

Le bogue est signalé avec cet ensemble d’erreurs 3 :

Erreur du plug-in Tableaux XR

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 de police gras a été modifiée.

Image TMP

Vous pouvez contourner ce problème en rétrogradant vers une version antérieure de TextMeshPro. Pour plus d’informations, consultez le problème n° 8556 .