MRTK2-Profilkonfigurationshandbuch

Mixed Reality Toolkit zentralisiert so viel wie möglich von der Konfiguration, die zum Verwalten des Toolkits erforderlich ist (mit Ausnahme von True Runtime "Things").

Dieser Leitfaden ist eine einfache exemplarische Vorgehensweise für die einzelnen Konfigurationsprofilbildschirme, die derzeit für das Toolkit verfügbar sind.

Konfigurationsprofil des Standard Mixed Reality Toolkits

Das Standard Konfigurationsprofil, das an das MixedRealityToolkit GameObject in Ihrer Szene angefügt ist, stellt den Standard Einstiegspunkt für das Toolkit in Ihrem Projekt bereit.

Hinweis

Mixed Reality Toolkit "sperrt" die Standardkonfigurationsbildschirme, um sicherzustellen, dass Sie immer einen gemeinsamen Ausgangspunkt für Ihr Projekt haben, und es wird empfohlen, ihre eigenen Einstellungen zu definieren, während sich Ihr Projekt weiterentwickelt. Die MRTK-Konfiguration kann während des Wiedergabemodus nicht bearbeitet werden.

MRTK-Konfigurationsprofil

Alle Standardprofile für Mixed Reality Toolkit finden Sie im SDK-Projekt im Ordner Assets/MRTK/SDK/Profiles.

Wichtig

DefaultHoloLens2ConfigurationProfile ist für HoloLens 2 optimiert. Weitere Informationen finden Sie unter Profile .

Wenn Sie das Standard Mixed Reality Toolkit-Konfigurationsprofil öffnen, wird der folgende Bildschirm im Inspektor angezeigt:

MRTK-Konfigurationsszene

Wenn Sie ein MixedRealityToolkitConfigurationProfile-Medienobjekt ohne mixedRealityToolkit in der Szene auswählen, werden Sie gefragt, ob MRTK die Szene automatisch für Sie einrichten soll. Dies ist optional; Es muss jedoch ein aktives MixedRealityToolkit-Objekt in der Szene vorhanden sein, um auf alle Konfigurationsbildschirme zugreifen zu können.

Hier ist die aktuelle aktive Laufzeitkonfiguration für das Projekt enthalten.

Von hier aus können Sie zu allen Konfigurationsprofilen für das MRTK navigieren, einschließlich:

Diese Konfigurationsprofile werden unten in den relevanten Abschnitten beschrieben:


Einstellungen für die Benutzererfahrung

Diese Einstellung befindet sich auf der Seite Standard Mixed Reality Toolkit-Konfiguration und definiert den Standardvorgang der Mixed Reality Umgebungsskala für Ihr Projekt.

Experiance-Einstellungen

Kameraeinstellungen

Die Kameraeinstellungen definieren, wie die Kamera für Ihr Mixed Reality-Projekt eingerichtet wird, und definieren die allgemeinen Beschneidungs-, Qualitäts- und Transparenzeinstellungen.

Kameraprofil

Eingabesystemeinstellungen

Die Mixed Reality Project bietet ein robustes und gut trainiertes Eingabesystem zum Weiterleiten aller Eingabeereignisse um das standardmäßig ausgewählte Projekt.

Eingabesystemeinstellungen 1

Hinter dem von MRTK bereitgestellten Eingabesystem befinden sich mehrere andere Systeme, die dazu beitragen, die komplexen Verwebungen zu steuern und zu verwalten, die erforderlich sind, um die Komplexität eines Multi-Plattform/Mixed Reality-Frameworks zu abstrahieren.

Eingabesystemeinstellungen 2

Jedes der einzelnen Profile ist unten aufgeführt:


Einstellungen für die Begrenzungsvisualisierung

Das Begrenzungssystem übersetzt die wahrgenommene Grenze, die vom zugrunde liegenden Plattformbegrenzungs-/Wächtersystem gemeldet wird. Mit der Konfiguration der Boundary-Schnellansicht können Sie die aufgezeichnete Grenze in Ihrer Szene automatisch relativ zur Position des Benutzers anzeigen. Die Grenze reagiert/aktualisiert auch basierend darauf, wo der Benutzer innerhalb der Szene teleportiert.

Einstellungen für die Begrenzungsvisualisierung

Auswahl des Teleportationssystems

Das Mixed Reality-Projekt bietet ein vollständiges Teleportationssystem für die Verwaltung von Teleportationsereignissen in dem standardmäßig ausgewählten Projekt.

Teleportsystemeinstellungen

Einstellungen für räumliches Bewusstsein

Das Mixed Reality-Projekt stellt ein neu erstelltes Raumerkennungssystem für die Arbeit mit räumlichen Scansystemen im standardmäßig ausgewählten Projekt bereit.

Einstellungen für räumliches Bewusstsein 1

mit Mixed Reality Toolkit spatial awareness configuration können Sie anpassen, wie das System gestartet wird, unabhängig davon, ob es automatisch beim Starten der Anwendung oder später programmgesteuert erfolgt. Außerdem können Sie die Blöcke für das Sichtfeld festlegen.

Außerdem können Sie die Gitter- und Oberflächeneinstellungen konfigurieren und so die Art und Weise, wie Ihr Projekt die Umgebung um Sie herum versteht, weiter anpassen.

Dies gilt nur für Geräte, die eine gescannte Umgebung bereitstellen können.

Einstellungen für räumliches Bewusstsein 2

Diagnoseeinstellungen

Ein optionales, aber äußerst nützliches Feature von MRTK ist das Plug-In Diagnose Funktionalität.

Diagnoseeinstellungen

Das Diagnose-Profil bietet mehrere einfache Systeme, die überwacht werden können, während das Projekt ausgeführt wird, einschließlich eines praktischen Ein/Aus-Schalters zum Aktivieren/Deaktivieren des Anzeigebereichs in der Szene.

Diagnoseeinstellungen Systemeinstellungen 2

Szenensystemeinstellungen

MRTK bietet diesen optionalen Dienst, um Sie bei der Verwaltung komplexer Additivszenen beim Laden/Entladen zu unterstützen. Um zu entscheiden, ob das Szenensystem für Ihr Projekt geeignet wäre, lesen Sie den Leitfaden für Szenensystem Erste Schritte.

Szenensystemeinstellungen 1

Einstellungen für zusätzliche Dienste

Einer der fortgeschritteneren Bereiche von Mixed Reality Toolkit ist die Implementierung von Dienstlocatormustern, die die Registrierung eines beliebigen "Diensts" beim Framework ermöglicht. Dies ermöglicht es, das Framework sowohl mit neuen Features/Systemen zu erweitern, als auch, dass Projekte diese Funktionen nutzen können, um ihre eigenen Laufzeitkomponenten zu registrieren.

Jeder registrierte Dienst nutzt weiterhin den vollen Vorteil aller Unity-Ereignisse, ohne den Mehraufwand und die Kosten für die Implementierung eines MonoBehaviour- oder klobigen Singletonmusters. Dies ermöglicht reine C#-Komponenten ohne Szenenmehraufwand für die Ausführung von Vordergrund- und Hintergrundprozessen, z. B. Spawningsysteme, Laufzeitspiellogik oder praktisch alles andere.

zusätzliche Systemeinstellungen

Einstellungen für Eingabeaktionen

Eingabeaktionen bieten eine Möglichkeit, physische Interaktionen und Eingaben aus einem Laufzeitprojekt zu abstrahieren. Alle physischen Eingaben (von Controllern/Händen/Maus/etc.) werden in eine logische Eingabeaktion zur Verwendung in Ihrem Laufzeitprojekt übersetzt. Dadurch wird sichergestellt, dass Ihr Projekt, egal woher die Eingabe kommt, diese Aktionen einfach als "Dinge zu tun" oder "Interagieren mit" in Ihren Szenen implementiert.

Um eine neue Eingabeaktion zu erstellen, klicken Sie einfach auf die Schaltfläche "Neue Aktion hinzufügen", und geben Sie einen Anzeigetextnamen für das ein, was sie darstellt. Sie müssen dann nur eine Achse (den Typ der Daten) auswählen, die die Aktion übermitteln soll, oder bei physischen Controllern den physischen Eingabetyp, an den sie angefügt werden kann, z. B.:

Achseneinschränkung Datentyp BESCHREIBUNG Beispielverwendung
Keine Keine Daten Wird für eine leere Aktion oder ein leeres Ereignis verwendet Ereignisauslöser
Roh (reserviert) Objekt (object) Für die zukünftige Verwendung reserviert
Digital bool Boolesche Daten vom Typ "Ein" oder "Off" Eine Controllerschaltfläche
Einzelne Achse float Ein einzelner Genauigkeitsdatenwert Eine bereichsgesteuerte Eingabe, z. B. ein Trigger
Zwei Achsen Vector2 Ein duales Gleitkommatypdatum für mehrere Achsen Ein Dpad oder Thumbstick
Drei Dof-Position Vector3 Positionstypdaten mit 3 Floatachsen Controller nur für 3D-Positionen
Drei Dof-Drehungen Quaternion Nur Drehungseingabe mit 4 Floatachsen Ein Drei-Grad-Stilcontroller, z. B. Oculus Go-Controller
Sechs Dof Mixed Reality Pose (Vector3, Quaternion) Eine Positions- und Rotationsformateingabe mit Vector3- und Quaternion-Komponenten Bewegungscontroller oder Zeiger

Ereignisse, die Eingabeaktionen verwenden, sind nicht auf physische Controller beschränkt und können weiterhin innerhalb des Projekts verwendet werden, damit Laufzeiteffekte neue Aktionen generieren.

Hinweis

Eingabeaktionen sind eine der wenigen Komponenten, die zur Laufzeit nicht bearbeitet werden können, sie sind nur eine Entwurfszeitkonfiguration. Dieses Profil sollte nicht ausgetauscht werden, während das Projekt ausgeführt wird, da das Framework (und Ihre Projekte) von der ID abhängig ist, die für jede Aktion generiert wurde.

Konfigurationsprofil

Regeln für Eingabeaktionen

Eingabeaktionsregeln bieten eine Möglichkeit, ein ereignis, das für eine Eingabeaktion ausgelöst wird, basierend auf dem Datenwert automatisch in verschiedene Aktionen zu übersetzen. Diese werden innerhalb des Frameworks nahtlos verwaltet und verursachen keine Leistungskosten.

Beispiel: Konvertieren des einachsigen Eingabeereignisses von einem DPad in in die 4 entsprechenden Aktionen "Dpad Up" / "DPad Down" / "Dpad Left" / "Dpad Right" (wie in der abbildung unten gezeigt).

Dies kann auch in Ihrem eigenen Code erfolgen. Da dies jedoch ein sehr häufiges Muster war, bietet das Framework einen Mechanismus, um dies "out of the box" zu tun.

Eingabeaktionsregeln können für jede der verfügbaren Eingabeachsen konfiguriert werden. Eingabeaktionen eines Achsentyps können jedoch in eine andere Eingabeaktion desselben Achsentyps übersetzt werden. Sie können eine Zweiachsenaktion einer anderen Aktion mit zwei Achsen zuordnen, aber nicht einer digitalen oder keiner Aktion.

Eingabeaktionsregelnprofil


Zeigerkonfiguration

Zeiger werden verwendet, um die Interaktivität in der Szene von einem beliebigen Eingabegerät aus zu steuern und einen Richtungs- und Treffertest mit jedem Objekt in einer Szene zu ermöglichen (bei dem ein Collider angefügt ist oder eine UI-Komponente ist). Zeiger werden standardmäßig automatisch für Controller, Headsets (Blick/Fokus) und Maus-/Toucheingabe konfiguriert.

Zeiger können auch innerhalb der aktiven Szene mithilfe einer der vielen Zeilenkomponenten visualisiert werden, die von Mixed Reality Toolkit bereitgestellt werden, oder mit einer ihrer eigenen, wenn sie die MRTK IMixedRealityPointer-Schnittstelle implementieren.

Eingabezeigerprofil
  • Zeigeausdehnung: Bestimmt den globalen Zeigeausdehnung für alle Zeiger, einschließlich des Blicks.
  • Zeigende Raycast-Ebenenmasken: Bestimmt, auf welche Ebenen Zeiger raycasts angezeigt werden.
  • Debug Draw Pointing Rays: Ein Debughilfsprogramm zum Visualisieren der für raycasting verwendeten Strahlen.
  • Debug Draw Pointing Rays Colors: Ein Satz von Farben, die für die Visualisierung verwendet werden sollen.
  • Blickcursor-Prefab: Vereinfacht die Angabe eines globalen Blickcursors für jede Szene.

Es gibt eine zusätzliche Hilfsschaltfläche, um schnell zum Blickanbieter zu springen, um bei Bedarf einige bestimmte Werte für Gaze außer Kraft zu setzen.


Gestenkonfiguration

Gesten sind eine systemspezifische Implementierung, mit der Sie den verschiedenen "Gesten"-Eingabemethoden Eingabeaktionen zuweisen können, die von verschiedenen SDKs (z. B. HoloLens) bereitgestellt werden.

Hinweis

Die aktuelle Gestenimplementierung gilt nur für holoLens und wird für andere Systeme verbessert, da sie dem Toolkit in Zukunft hinzugefügt werden (noch keine Daten).

Gestenkonfiguration

Sprachbefehle

Ähnlich wie Gesten bieten einige Laufzeitplattformen auch intelligente "Speech to Text"-Funktionen mit der Möglichkeit, Befehle zu generieren, die von einem Unity-Projekt empfangen werden können. Mit diesem Konfigurationsprofil können Sie Folgendes konfigurieren:

  1. Allgemeine Einstellungen: "Startverhalten", festgelegt auf Automatischer Start oder Manueller Start, bestimmt, ob KeywordRecognizer beim Start des Eingabesystems initialisiert werden soll oder ob das Projekt entscheiden soll, wann das KeywordRecognizer initialisiert werden soll. "Erkennungsvertrauensstufe" wird verwendet, um die KeywordRecognizer-API von Unity zu initialisieren.
  2. Sprachbefehle: Registriert "Wörter" und übersetzt sie in Eingabeaktionen, die von Ihrem Projekt empfangen werden können. Sie können bei Bedarf auch an Tastaturaktionen angefügt werden.

Wichtig

Das System unterstützt derzeit nur Die Spracherkennung bei der Ausführung auf Windows 10 Plattformen, z. B. HoloLens und Windows 10 Desktop, und wird für andere Systeme verbessert, da sie in Zukunft zu MRTK hinzugefügt werden (noch keine Daten).

Konfigurationsprofilbildschirme

Konfiguration der Controllerzuordnung

Einer der wichtigsten Konfigurationsbildschirme für Mixed Reality Toolkit ist die Möglichkeit, die verschiedenen Typen von Controllern zu konfigurieren und zuzuordnen, die von Ihrem Projekt verwendet werden können.

Auf dem folgenden Konfigurationsbildschirm können Sie alle Controller konfigurieren, die derzeit vom Toolkit erkannt werden.

Controllerzuordnung

MRTK bietet eine Standardkonfiguration für die folgenden Controller/Systeme:

  • Maus (einschließlich 3D-Unterstützung für räumliche Maus)
  • Touch Screen
  • Xbox-Controller
  • Windows Mixed Reality Controller
  • HoloLens-Gesten
  • HTC Vive Wandcontroller
  • Oculus Touch-Controller
  • Oculus Remote Controller
  • Generische OpenVR-Geräte (nur fortgeschrittene Benutzer)

Wenn Sie auf das Bild für eines der vordefinierten Controllersysteme klicken, können Sie eine einzelne Eingabeaktion für alle entsprechenden Eingaben konfigurieren, z. B. sehen Sie sich den Konfigurationsbildschirm des Oculus Touch-Controllers unten an:

Controllerkonfigurationsbildschirm

Es gibt auch einen erweiterten Bildschirm zum Konfigurieren anderer OpenVR- oder Unity-Eingabecontroller, die oben nicht identifiziert sind.


Controllervisualisierungseinstellungen

Zusätzlich zur Controllerzuordnung wird ein separates Konfigurationsprofil bereitgestellt, um die Darstellung Ihrer Controller in Ihren Szenen anzupassen.

Dies kann an einem "Global" (alle Instanzen eines Controllers für eine bestimmte Hand) oder spezifisch für einen einzelnen Controllertyp/eine einzelne Hand konfiguriert werden.

MRTK unterstützt auch native SDK-Controllermodelle für Windows Mixed Reality und OpenVR. Diese werden als GameObjects in Ihrer Szene geladen und mithilfe der Controllerverfolgung der Plattform positioniert.

Wenn Ihre Controllerdarstellung in der Szene von der position des physischen Controllers versetzt werden muss, legen Sie diesen Offset einfach auf das Prefab des Controllermodells fest (z. B. Festlegen der Transformationsposition des Controller-Prefabs mit einer Offsetposition).

Visualisierungsprofil

Editor-Hilfsprogramme

Die folgenden Hilfsprogramme funktionieren nur im Editor und sind nützlich, um die Entwicklungsproduktivität zu verbessern.

MRTK-Editor-Konfigurationshilfsprogramme

Dienstinspektoren

Dienstinspektoren sind ein reines Editorfeature, das In-Szenen-Objekte generiert, die aktive Dienste darstellen. Wenn Sie diese Objekte auswählen, werden Inspektoren angezeigt, die Dokumentationslinks, Kontrolle über Editorvisualisierungen und Einblicke in den Status des Diensts bieten.

Dienstinspektoren

Sie können Dienstinspektoren aktivieren, indem Sie dienstinspektoren verwenden unter Editoreinstellungen im Konfigurationsprofil aktivieren.

Tiefenpufferrenderer

Die Gemeinsame Nutzung des Tiefenpuffers mit einigen Mixed Reality-Plattformen kann die Hologrammstabilisierung verbessern. Beispielsweise kann die Windows Mixed Reality Plattform die gerenderte Szene pro Pixel ändern, um subtile Kopfbewegungen während der Zeit zu berücksichtigen, die zum Rendern eines Frames benötigt wurde. Diese Techniken erfordern jedoch Tiefenpuffer mit genauen Daten, um zu wissen, wo und wie weit die Geometrie vom Benutzer entfernt ist.

Um sicherzustellen, dass eine Szene alle erforderlichen Daten im Tiefenpuffer rendert, können Entwickler die Funktion Rendertiefepuffer unter Editoreinstellungen im Konfigurationsprofil umschalten. Dadurch wird der aktuelle Tiefenpuffer als Farbe für die Szenenansicht gerendert, DepthBufferRendererindem der Nachverarbeitungseffekt auf die Standard Kamera angewendet wird.

Render-Tiefenpuffer-Hilfsprogramm Der blaue Zylinder in der Szene verfügt über ein Material mit ZWrite off, sodass keine Tiefendaten geschrieben werden.

Ändern von Profilen zur Laufzeit

Es ist möglich, Profile zur Laufzeit zu aktualisieren, und es gibt in der Regel zwei verschiedene Szenarien und Zeiten, in denen dies hilfreich ist:

  1. Vor dem MRTK-Initialisierungsprofilwechsel: Beim Start, bevor MRTK initialisiert und das Profil aktiv wird, ersetzen Sie das noch nicht verwendete Profil, um verschiedene Features basierend auf den Gerätefunktionen zu aktivieren/zu deaktivieren. Wenn die Umgebung beispielsweise in VR ausgeführt wird, die keine Hardware für die räumliche Zuordnung aufweist, ist es wahrscheinlich nicht sinnvoll, die Komponente für die räumliche Zuordnung zu aktivieren.
  2. Aktiver Profilwechsel: Nach dem Start, nachdem MRTK initialisiert und ein Profil aktiv wurde, wird das derzeit verwendete Profil ausgetauscht, um das Verhalten bestimmter Features zu ändern. Beispielsweise kann es eine bestimmte Unterumgebung in der Anwendung geben, für die zeiger von weit entfernten Handzeigern vollständig entfernt werden sollen.

Pre MRTK-Initialisierungsprofilswitch

Dies kann durch Anfügen eines MonoBehaviour (Beispiel unten) erreicht werden, das vor der MRTK-Initialisierung (d. h. Awake()) ausgeführt wird. Beachten Sie, dass das Skript (d. h. der Aufruf von SetProfileBeforeInitialization) vor dem Skript ausgeführt werden muss, was durch Festlegen der Einstellungen für die MixedRealityToolkitSkriptausführungsreihenfolge erreicht werden kann.

using Microsoft.MixedReality.Toolkit;
using UnityEngine;

/// <summary>
/// Sample MonoBehaviour that will run before the MixedRealityToolkit object, and change
/// the profile, so that when MRTK initializes it uses the profile specified below
/// rather than the one that is saved in its scene.
/// </summary>
/// <remarks>
/// Note that this script must have a higher priority in the script execution order compared
/// to that of MixedRealityToolkit.cs. See https://docs.unity3d.com/Manual/class-MonoManager.html
/// for more information on script execution order.
/// </remarks>
public class PreInitProfileSwapper : MonoBehaviour
{

    [SerializeField]
    private MixedRealityToolkitConfigurationProfile profileToUse = null;

    private void Awake()
    {
        // Here you could choose any arbitrary MixedRealityToolkitConfigurationProfile (for example, you could
        // add some platform checking code here to determine which profile to load).
        MixedRealityToolkit.SetProfileBeforeInitialization(profileToUse);
    }
}

Anstelle von "profileToUse" ist es möglich, einen beliebigen Satz von Profilen zu haben, die für bestimmte Plattformen gelten (z. B. eines für HoloLens 1, eines für VR, eines für HoloLens 2 usw.). Es ist möglich, verschiedene andere Indikatoren zu verwenden (z. B. https://docs.unity3d.com/ScriptReference/SystemInfo.html, oder ob die Kamera undurchsichtig/transparent ist), um herauszufinden, welches Profil geladen werden soll.

Aktiver Profilwechsel

Dies kann erreicht werden, indem Sie die MixedRealityToolkit.Instance.ActiveProfile -Eigenschaft auf ein neues Profil festlegen, das das aktive Profil ersetzt.

MixedRealityToolkit.Instance.ActiveProfile = profileToUse;

Beachten Sie, dass beim Festlegen ActiveProfile während der Laufzeit die Zerstörung der derzeit ausgeführten Dienste nach dem letzten LateUpdate() aller Dienste erfolgt, und die Instanziierung und Initialisierung der Dienste, die dem neuen Profil zugeordnet sind, erfolgt vor dem ersten Update() aller Dienste.

Während dieses Vorgangs kann ein spürbares Zögern bei der Anwendung auftreten. Außerdem kann jedes Skript mit höherer Priorität als das MixedRealityToolkit Skript sein Update eingeben, bevor das neue Profil ordnungsgemäß eingerichtet wird. Weitere Informationen zur Skriptpriorität finden Sie unter Einstellungen für die Skriptausführungsreihenfolge .

Beim Profilwechsel bleibt die vorhandene UI-Kamera unverändert, sodass Unity-UI-Komponenten, die canvas erfordern, auch nach dem Wechsel weiterhin funktionieren.

Weitere Informationen