Anmerkungen zum Microsoft Mixed Reality Toolkit 2.5

Wichtig

Es gibt ein bekanntes Compilerproblem, das sich auf Anwendungen auswirkt, die für Microsoft HoloLens 2 mit ARM64 erstellt wurden. Dieses Problem wurde behoben, indem Visual Studio 2019 auf Version 16.8 oder höher aktualisiert wird. Wenn Sie Visual Studio nicht aktualisieren können, importieren Sie das com.microsoft.mixedreality.toolkit.tools Paket, um eine Problemumgehung anzuwenden.

Neuerungen in 2.5.4

Behebt einen Fehler bei der Oculus-Integration bei Verwendung von UPM

Bei verwendung von UPM hätte das OculusXRSDKDeviceManagerProfile immer seine Prefabs auf "None" festgelegt. In dieser Version wird die Geräte-Manager so konfiguriert, dass sie auf einen funktionierenden Satz von Vorzeichen beim Start verweist.

Behebt ein Problem mit OpenXR über UPM

Behebt ein Problem, bei dem die OpenXR-Anbieter standardmäßig nicht zur link.xml hinzugefügt wurden, wodurch neue Projekte beim Verwenden von OpenXR und MRTK über die Paket-Manager von Unity nicht ausgeführt werden. Vorhandene Projekte, die aktualisiert werden, benötigen diese noch manuell hinzugefügt.

Neuerungen in 2.5.3

Behebt eine Regression mit Oculus, die in 2.5.2 eingeführt wurde

2.5.2 hat beim Integrieren des Oculus SDK ein Buildproblem eingeführt. Dieses Problem wird in dieser Version wiederhergestellt.

Neuerungen in 2.5.2

Hinzufügen von Support für OpenXR

Die anfängliche Unterstützung für das OpenXR-Vorschaupaket von Unity und das Mixed Reality OpenXR-Paket von Microsoft wurde hinzugefügt. Weitere Informationen finden Sie auf der Seite MRTK/XRSDK, demForumbeitrag von Unity oder der Dokumentation von Microsoft .

Wichtig

OpenXR in Unity wird nur für Unity 2020.3 und höher unterstützt. Es unterstützt auch nur x64-, ARM- und ARM64-Builds.

Fehler bei der Begrenzungsvisualisierung wurden behoben

Begrenzungsvisualisierungen wie Boden oder Wände werden jetzt ordnungsgemäß konfiguriert und zur Laufzeit entsprechend dem Begrenzungsprofil sichtbar.

MSBuild für Unity-Unterstützung

Die Unterstützung für MSBuild für Unity wurde ab der Version 2.5.2 entfernt, um den neuen Paketleitfaden von Unity zu entsprechen.

Neuerungen in 2.5.1

Behobene Paketabhängigkeitsfehler

Diese Version behebt falsche Interpaketdateiabhängigkeiten (z. B. Dateien in Standardressourcen, die nicht mehr falsch auf Dateien in Foundation verweisen). Version 2.5.1 fügt auch eine explizite Abhängigkeit von Text Mesh Pro hinzu.

Standardressourcenpaket-Shader, die in Assets/MRTK/Shader kopiert wurden

Wenn das Standardressourcenpaket über UPM installiert wird, werden die Shader in den Ordner "Assets/MRTK/Shaders" kopiert, sodass sie nicht mehr unveränderlich sind. Dadurch wird das Problem von Shadern behoben, die für die Universelle Renderpipeline (URP) aktualisiert wurden, um das Legacyverhalten beim nächsten Laden des Projekts wiederhergestellt zu haben.

Fixer Teleportcursor, der an händen hält

Diese Version behebt ein Problem , bei dem der Teleport-Zielcursor an Hand-Visuellen bleiben kann.

Neuerungen in 2.5.0

Unterstützung von Unity Paket-Manager (UPM)

Das Mixed Reality Toolkit kann jetzt mithilfe der Unity-Paket-Manager verwaltet werden.

MRTK Foundation UPM Package

Hinweis

Zum Importieren der MRTK UPM-Pakete sind einige manuelle Schritte erforderlich. Weitere Informationen finden Sie unter Mixed Reality Toolkit und Unity Paket-Manager.

Oculus Quest XR SDK-Unterstützung

MRTK unterstützt jetzt die Ausführung von Oculus Quest Headsets und Controllern mithilfe der nativen XR SDK-Pipeline. Die Handverfolgung wird auch mit dem Oculus Integration Unity-Paket unterstützt, dank der Arbeit von Eric Provencher an MRTK-Quest!

Anweisungen zum Bereitstellen Ihres Geräts auf der Oculus Quest mithilfe der neuen Pipeline finden Sie im Oculus Quest Setup Guide

Scrolling-Objektsammlung

Die MRTK UX-Komponente wurde von einem experimentellen Feature aktualisiert und bietet mehr Freiheit für das Layout von 3D-Inhalten verschiedener Größen mit hinzugefügter Unterstützung für Objekte, die keine Kollidierungen aufweisen. Außerdem wurde eine neue Option zum Deaktivieren der Inhaltsmaske hinzugefügt, wodurch die Prototyperstellung vereinfacht wird.

Weitere Informationen finden Sie unter "Scrolling Object Collection ".

Scrolling Object Collection

Teleport-Zeigeranimation, Handhabung und Soundverbesserungen

Der Teleportpointer hat jetzt verbesserte Animationen und Audiofeedback. Wir haben auch die Handhabung des Teleportzeigers verbessert, sodass es beim Übergang von einem Zeiger auf nahe gelegenen Oberflächen zu weiter entfernten Oberflächen reibungsloser verarbeitet wird.

Eingabesimulations-Cheatsheet

Die HandInteractionExamples-Szene verfügt jetzt über eine konfigurierbare Verknüpfung, um eine Hilfeseite für die Eingabesimulation anzuzeigen.

Input Simulation Cheat Sheet

Eingabesimulations-Augenblick mit Maus

Benutzer können jetzt die Maus zum Simulieren der Eye Tracking verwenden. Sehen Sie sich das Eye Simulation Mode Feld im Eingabesimulationsprofil an, und legen Sie es auf "Maus" fest. Dadurch wird das vorherige Simulate Eye Position Feld ersetzt.

Eye Gaze Mouse

Eingabesimulations-Bewegungscontroller im Editor -Wiedergabemodus

Benutzer können jetzt Bewegungscontroller wie Hände im Editor-Wiedergabemodus simulieren. Die Trigger-, Grab- und Menüschaltflächen werden derzeit unterstützt.

Konischer Ziehpunkt

Grabzeiger können jetzt so konfiguriert werden, dass sie mithilfe eines Kegels aus dem Grabpunkt anstelle einer Kugel abfragen können. Dies ähnelt dem Verhalten aus der Standardschnittstelle HoloLens 2, die mithilfe eines Kegels abfragen, um objekte in der Nähe zu suchen. Die DefaultHoloLens2InputSystemProfile wurde ebenfalls angepasst, um das neue ConicalGrabPointerzu verwenden.

Conical Grab Pointer

TestUtilities-Paket

Es gibt jetzt ein Paket (Microsoft.MixedReality.Toolkit.Unity.TestUtilities.2.5.0.unitypackage), das die PlayMode- und TestMode-Testinfrastruktur enthält, die der MRTK zum Erstellen von End-to-End-Tests verwendet. Diese Infrastruktur ist für das MRTK-Team selbst äußerst praktisch, und wir freuen uns, dass die Verbraucher dies nutzen können, um testabdeckungen zu ihren eigenen Projekten hinzuzufügen.

Der folgende Code zeigt, wie Sie eine Testhand erstellen, an einer bestimmten Position anzeigen, sie an einer bestimmten Stelle verschieben und dann anheften und öffnen.

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);

Anweisungen zum Schreiben eines Tests mithilfe dieser TestUtilities finden Sie in diesem Abschnitt zum Schreiben von Tests.

Beispiele für vorhandene Tests, die diese Infrastruktur verwenden, finden Sie unter " PlayModeTests" von MRTK.

Unterstützung für die Schaltbewegung 4.5.1 Unity Module

Unterstützung für die Leap Motion Unity Modules Version 4.5.1 wurde hinzugefügt und die Unterstützung für die Ressourcen 4.4.0 wurde entfernt. Die aktuellen unterstützten Versionen der Leap Motion Unity Module sind 4.5.0 und 4.5.1.

Es gibt auch einen zusätzlichen Schritt für die anfängliche Integration von Leap Motion, siehe Konfigurieren der Sprungbewegungs-Handverfolgung in MRTK für weitere Informationen.

Räumliches Bewusstsein Mesh Beobachter bessere Anpassung von Materialien

Mit dieser Veröffentlichung haben die Komponenten Generic XR SDK Spatial Mesh Observer die Windows Mixed Reality Spatial Mesh Observer visuelle Materialbehandlung verbessert. Materialien bleiben nun erhalten, wenn ein Gitter vom Beobachter aktualisiert wurde, wo sie zuvor auf das Standard-VisibleMaterial zurückgesetzt wurden, wie im Profil konfiguriert.

Dadurch können Entwickler das Gittermaterial ändern und die Änderungen nicht unerwartet überschrieben haben.

Link.xml im MixedRealityToolkit.Generierten Ordner erstellt

Mit der Einführung von Unity Package Manger MRTK schreibt MRTK nun eine link.xml Datei in den Assets/MixedRealityToolkit.Generated Ordner, wenn keine vorhanden ist. Es wird empfohlen, diese Datei (und link.xml.meta) zur Quellcodeverwaltung hinzuzufügen. Link.xml wird verwendet, um die Funktionalität des Managed Code Stripping der Unity-Linker zu beeinflussen.

Weitere Informationen zur MRTK-link.xml-Datei finden Sie im MRTK- und Managed Code Stripping-Artikel .

Unity 2019.3+: MRTK-Konfigurationsdialogfeld versucht nicht mehr, ältere XR-Unterstützung zu aktivieren

Um potenzielle Konflikte beim Verwenden der XR-Plattform von Unity zu vermeiden, wurde die Option zum Aktivieren der älteren XR-Unterstützung aus dem MRTK-Konfigurationsdialogfeld entfernt. Wenn gewünscht, kann die ältere XR-Unterstützung in Unity 2019 mit Edit>Project Einstellungen>Player>XR Einstellungen>Virtual Reality unterstützt werden.

Reduzierung des InitializeOnLoad-Aufwands

Wir haben gearbeitet, um die Menge der Arbeit zu reduzieren, die in InitializeOnLoad-Handlern ausgeführt wird, was zu Verbesserungen der Geschwindigkeit der inneren Schleifenentwicklung führen sollte. InitializeOnLoad-Handler werden jedes Mal ausgeführt, wenn ein Skript kompiliert wird, bevor er den Wiedergabemodus eingibt, und auch beim Editorstart. Diese Handler werden jetzt in weit weniger Fällen ausgeführt, was zu allgemeinen Verbesserungen der Reaktionsfähigkeit von Unity führt.

In einigen Fällen gab es einen Handel, der gemacht werden musste:

Gebundenes Steuerelement mit Graduierten

Bounds control

Bounds-Steuerelement , das aus experimentellem Grad abgestuft wurde und enthält eine Reihe neuer Features und Tonnen von Bugfixes. Hier eine Liste der Highlights dieses Updates:

  • Eigenschaften werden in Konfigurationen unterteilt, wodurch das Einrichten von Begrenzungssteuerelementen erleichtert wird.
  • Konfigurationen können über skriptfähige Objekte freigegeben werden.
  • jede Eigenschaft / Skriptable-Eigenschaft ist konfigurierbar
  • bounds Control Rig wird nicht mehr auf Eigenschaftenänderungen neu erstellt.
  • Übersetzungshandpunkte unterstützen
  • Vollständige Einschränkungsunterstützung durch Einschränkungs-Manager
  • Elastics Systemintegration (experimentell)

Das alte Begrenzungsfeld ist jetzt veraltet und vorhandene Spielobjekte mit gebundenen Feldern können mithilfe des Migrationstools oder des Begrenzungsfeldinspektors aktualisiert werden.

Einschränkungs-Manager-Komponente

Einschränkungen können jetzt sowohl von Steuerelementen als auch vom Objektmanipulator über die neue Einschränkungs-Manager-Komponente verwendet werden. Beide Komponenten erstellen einen Einschränkungs-Manager pro Standard und verarbeiten alle angefügten Einschränkungen automatisch.

Zusätzlich zum Manager für automatische Verhaltenseinschränkungen ist auch ein manueller Modus verfügbar, mit dem Benutzer entscheiden können, welche Einschränkung verarbeitet werden soll. Aus diesem Grund hat sich die Art und Weise, wie Einschränkungen im Eigenschafteninspektor angezeigt werden, etwas geändert.

Inspector view showing manual constraint manager selection

Die Einschränkungen, die auf die Komponente angewendet werden, werden jetzt als Liste in der Einschränkungs-Manager-Komponente angezeigt, während die Komponente mit dem Einschränkungs-Manager (entweder Begrenzungssteuerelement oder Objektmanipulator) den ausgewählten Einschränkungs-Manager und den Modus (automatisch oder manuell) anzeigt. Weitere Informationen finden Sie im Abschnitt " Einschränkungs-Manager " in unseren Dokumenten.

HoloLens 2 Schaltflächenmaterialaktualisierung

Aktualisiert HoloLens 2 Frontkorbmaterial der Schaltfläche, um schwarze Farbe in MRC zu entfernen.

HoloLens 2 button material update

Beschreibungsbereichsupdate, bewegliche Beispielszene

Aktualisierter Beschreibungsbereich. (SceneDescriptionPanelRev.prefab) Neues Design bietet eine grabbbare obere Leiste, mit der der Benutzer die gesamte Szene anpassen/verschieben kann.

Description panel update

Räumliche Gittervisualisierung - Puls auf Luft tippen

Aktualisiertes Pulse-Shaderbeispiel für das räumliche Gitter, um dem Verhalten der Shell HoloLens 2 zu entsprechen.

Pulse on air-tap

Elastisches System (experimentell)

Elastic System2

MRTK verfügt jetzt über ein elastisches Simulationssystem , das eine Vielzahl von erweiterbaren und flexiblen Unterklassen umfasst, die Bindungen für 4dimensionale Quaternionquellen, 3-dimensionale Volumenquellen und einfache lineare Springsysteme bieten.

Derzeit können die folgenden MRTK-Komponenten, die den Elastics-Manager unterstützen, elastische Funktionen nutzen:

Expanding an elastic menuGrabbing an elastic coffee cup

Joystick (experimentell)

Ein Beispiel für die Joystickschnittstelle, die ein großes Zielobjekt steuern kann.

Joystick

Farbauswahl (experimentell)

Ein experimentelles Steuerelement, das es einfach macht, Materialfarben auf jedem Objekt zur Laufzeit zu ändern.

Three different methods of color picker control

Four different methods of color picker control

Aktuelle Änderungen

Änderungen der Assemblydefinitionsdateien

Einige Asmdef-Dateien werden geändert und unterstützen jetzt nur Unity 2018.4.13f1 oder höher. Kompilierungsfehler werden beim Aktualisieren auf MRTK 2.5 in früheren Versionen von Unity angezeigt. Dies kann behoben werden, indem Assets\MRTK\Providers\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.asmdef Sie im Projektfenster wechseln und den fehlenden Verweis im Inspektor entfernen. Wiederholen Sie diese Schritte mit Assets\MRTK\Providers\Oculus\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.Oculus.asmdef und Assets\MRTK\Providers\WindowsMixedReality\XRSDK\Microsoft.MixedReality.Toolkit.Providers.XRSDK.WMR.asmdef. Beachten Sie, dass Sie die Änderungen zurücksetzen müssen, indem Sie diese drei Asmdef-Dateien durch originale (d. h. nicht geänderte) Ersetzen, wenn Sie auf Unity 2019 aktualisieren.

IMixedRealityPointerMediator

Diese Schnittstelle wurde aktualisiert, um eine neue Funktion zu haben:

void SetPointerPreferences(IPointerPreferences pointerPreferences);

Wenn Sie über einen benutzerdefinierten Zeigervermittler verfügen, der keine Unterklasse DefaultPointerMediator enthält, müssen Sie diese neue Funktion implementieren. Weitere Hintergründe finden Sie in diesem Problem , warum dies hinzugefügt wurde. Dies wurde hinzugefügt, um sicherzustellen, dass Zeigereinstellungen explizit an den Vermittler übergeben werden, anstatt auf der Grundlage der Anwesenheit eines Konstruktors, der einen IPointerPreferences verwendet hat, implizit zu erledigen.

Rest/ Device Portal-API

Die UseSSL statische Eigenschaft wurde von zu RestDevicePortal.

Wenn Sie dies zuvor getan haben...

Rest.UseSSL = true

Führen Sie dies jetzt aus...

DevicePortal.UseSSL = true

Link.xml

Wenn eine Anwendung zuvor die NuGet Verteilung des MRTK verwendet hat, wurde die link.xml Datei aus dem Foundation-Paket entfernt. Zum Wiederherstellen von Codekonservierungsregeln erstellt das Projekt in Unity einmal eine Standarddatei link.xml in Assets/MixedRealityToolkit.Generated. Es wird empfohlen, diese Datei (und link.xml.meta) zur Quellcodeverwaltung hinzuzufügen.

Transformationsbeschränkungsänderungen

TargetTransform-Eigenschaft wurde als veraltet gekennzeichnet, da sie nicht vom Einschränkungssystem verwendet wurde. Einschränkungslogik basiert auf der Transformation, die in Initialize- und Apply-Methoden übergeben wird. Abgeleitete Benutzereinschränkungen, die auf diese Eigenschaft basieren, können die TargetTransform in ihrer Implementierung zwischenspeichern, indem die Transformation der Einschränkungskomponente gespeichert wird, um das gleiche Verhalten zu erzielen.

Der gespeicherte Erste worldPoseOnManipulationStart Welt-Pose-Datentyp wurde von MixedRealityPose in MixedRealityTransform geändert, das den lokalen Skalierungswert des bearbeiteten Objekts umfasst. Mit dieser Änderung ist es nicht erforderlich, alle anfänglichen Skalierungswerte mehr zwischenzuspeichern.

Neue Eigenschaft in IMixedRealityDictationSystem

Eine neue Eigenschaft AudioClip wurde der IMixedRealityDictationSystem-Schnittstelle hinzugefügt. Die AudioClip Eigenschaft ermöglicht den Zugriff auf den Audioclip, der der aktuellen Diktatsitzung zugeordnet ist. Benutzer müssen die Eigenschaft in ihren Skripts implementieren, die die Schnittstelle implementieren.

Dienstfassaden deaktivieren

Dienstleistungsfassaden werden in 2,5 abgeschaltet. Dieses Feature wurde ursprünglich hinzugefügt, um die Konfiguration der MRTK-Profile zu vereinfachen (indem gefälschte In-Szene-GameObjects erstellt werden, die jede DER MRTK-Dienste darstellt). Langfristig möchten wir es vermeiden, gefälschte In-Game-Objekte zu erstellen und zu versuchen, sie synchron zu halten (da Datensynchronisierung und "Quelle der Wahrheit" Probleme notorisch schwierig zu skalieren und richtig zu erhalten sind).

In 2.5 werden die Dienstfassadenhandler beibehalten, um sicherzustellen, dass das Projektupgrade reibungslos funktioniert – alle Fassaden, die im Projekt vorhanden sind, werden vom Dienstfassadenhandler gelöscht, um sicherzustellen, dass Szenen in 2.5 automatisch behoben werden.

Der verbleibende Code, der der Dienstfassadenfunktion zugeordnet ist, wird in einer zukünftigen Version entfernt.

Ergänzung des Bewegungscontrollers zum Eingabesimulationsdienst

Die Bewegungscontrollersimulation wird nun im Editor-Wiedergabemodus neben der vorhandenen Handsimulation angeboten. Um diese Änderung zu aktivieren, sind viele aktuelle Funktionen/Eigenschaften jetzt veraltet und InputSimulationService.csMixedRealityInputSimulationProfile.cs erhalten die wichtigsten Änderungen. Die Logik und das Verhalten des relevanten Codes bleiben weitgehend identisch, und die mehrheit der veralteten Funktionen usw. beziehen sich auf das Ersetzen von Verweis auf "hand" auf den generischen Begriff "Controller" (z. B. von DefaultHandSimulationModeDefaultControllerSimulationModezu ). Neben dem Abrufen neuer Namen werden die Rückgabetypen bestimmter neuer Funktionen aktualisiert, um die Änderung des Namens/Verhaltens zu entsprechen (z. B. GetControllerDevice basierend auf dem ursprünglichen GetHandDevice Jetzt zurückzugeben BaseControllerSimulatedHandstatt ).

IInputSimulationService Jetzt verfügt über neue Eigenschaften MotionControllerDataLeft und MotionControllerDataRight. MixedRealityInputSimulationProfile Enthält jetzt neue Felder für die Tastaturzuordnung bestimmter Bewegungscontrollerschaltflächen.

Bekannte Probleme

CameraCache kann eine neue Kamera beim Herunterfahren erstellen.

In einigen Situationen (z. B. beim Verwenden des LeapMotion-Anbieters im Unity-Editor) ist es möglich, den CameraCache erneut zu erstellen, um die MainCamera zum Herunterfahren neu zu erstellen. Weitere Informationen finden Sie in diesem Problem .

FileNotFoundException, wenn Beispiele über Unity Paket-Manager importiert werden

Je nach Länge des Projektpfads kann das Importieren von Beispielen über Unity Paket-Manager FileNotFoundException-Nachrichten in der Unity-Konsole generiert werden. Die Ursache hierfür ist der Pfad zur "fehlenden" Datei, die länger als MAX_PATH (256 Zeichen) ist. Um zu beheben, kürzen Sie die Länge des Projektpfads.

Es wurde kein Räumlicher angegeben. Die Anwendung unterstützt keine räumlichen Sound

Eine Warnung "Kein Räumlicher wurde angegeben" wird angezeigt, wenn ein Audio-Spatializer nicht konfiguriert ist. Dies kann auftreten, wenn kein XR-Paket installiert ist, da Unity Räumlicher in diesen Paketen enthält.

Um zu beheben, stellen Sie sicher, dass:

  • Fenster>Paket-Manager ein oder mehrere XR-Pakete installiert sind

  • Mixed RealityToolkit-Dienstprogramme>>konfigurieren Unity Project und eine Auswahl für Audio Spatializer vornehmen

    Select Audio Spatializer

NullReferenceException: Objektverweis wird nicht auf eine Instanz eines Objekts festgelegt (SceneTransitionService.Initialize)

In einigen Situationen kann das Öffnen EyeTrackingDemo-00-RootScene eine NullReferenceException in der Initialize-Methode der SceneTransitionService-Klasse verursachen. Dieser Fehler liegt daran, dass das Konfigurationsprofil des Scene Transition Service nicht festgelegt ist. Um zu beheben, verwenden Sie die folgenden Schritte:

  • Navigieren zum MixedRealityToolkit Objekt in der Hierarchie
  • Wählen Sie im Fenster "Inspektor" die Option "Inspektor" aus. Extensions
  • Wenn nicht erweitert, erweitern Sie Scene Transition Service
  • Festlegen des Werts von Configuration ProfileMRTKExamplesHubSceneTransitionServiceProfile

Fix Scene Transition

Oculus Quest

Es gibt derzeit ein bekanntes Problem für die Verwendung des Oculus XR-Plug-Ins mit dem Ziel eigenständiger Plattformen. Überprüfen Sie die Oculus-Bug-Tracker/Foren/Releasenotizen für Updates.

Der Fehler wird mit diesem Satz von 3 Fehlern signiert:

Oculus XR Plugin Error

UnityUI und TextMeshPro

Es gibt ein bekanntes Problem für neuere Versionen von TextMeshPro (1.5.0+ oder 2.1.1+), wobei die Standardschriftartgröße für Dropdowns und fetten Schriftabstand geändert wurde.

TMP image

Dies kann durch Nachgrade auf eine frühere Version von TextMeshPro bearbeitet werden. Weitere Details finden Sie unter Problem #8556 .