MRTK-Profilkonfigurations-Leitfaden


Einstellungen für die Benutzererfahrung

Auf der Hauptseite Mixed Reality Toolkit-Konfiguration definiert diese Einstellung den Standardvorgang der Mixed Reality-Umgebungsskalierung für Ihr Projekt.

Erfahrungseinstellungen

Kameraeinstellungen

Die Kameraeinstellungen definieren, wie die Kamera für Ihr Mixed Reality-Projekt eingerichtet wird, und definieren die allgemeinen Einstellungen für Clipping, Qualität und Transparenz.

Kameraprofil

Eingabesystemeinstellungen

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

Eingabesystemeinstellungen 1

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

Eingabesystemeinstellungen 2

Die einzelnen Profile werden im Folgenden ausführlich beschrieben:


Einstellungen für die Begrenzungsvisualisierung

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

Boundry Visualization Einstellungen

Teleportation-Systemauswahl

Die Mixed Reality Project bietet ein umfassendes Teleportation-System zum Verwalten von Teleportationsereignissen im Projekt, das standardmäßig ausgewählt ist.

Teleport-Systemeinstellungen

Einstellungen für räumliche Wahrnehmung

Der Mixed Reality Project stellt ein neu erstelltes raumbezogenes Wahrnehmungssystem für die Arbeit mit Raumscansystemen im Projekt zur Verfügung, das standardmäßig ausgewählt ist.

Einstellungen für räumliche Wahrnehmung 1

Mit der Mixed Reality Toolkit-Konfiguration für räumliche Wahrnehmung können Sie den Systemstart anpassen, unabhängig davon, ob die Anwendung automatisch gestartet wird oder später programmgesteuert gestartet wird, sowie die Extent für das Sichtfeld festlegen.

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

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

Einstellungen für räumliche Wahrnehmung 2

Diagnoseeinstellungen

Ein optionales, aber äußerst nützliches Feature des MRTK ist die Plug-In-Diagnosefunktion.

Diagnoseeinstellungen

Das Diagnoseprofil bietet mehrere einfache Systeme, die während der Ausführung des Projekts überwacht werden können, einschließlich eines praktischen Ein-/Aus-Schalters zum Aktivieren/Deaktivieren des Anzeigebereichs in der Szene.

Diagnoseeinstellungen Systemeinstellungen 2

Szenensystemeinstellungen

Das MRTK bietet diesen optionalen Dienst, mit dem Sie komplexe additive Szenen laden/entladen können. Um zu entscheiden, ob das Szenensystem für Ihr Projekt geeignet ist, lesen Sie den Leitfaden zum Szenensystem Erste Schritte.

Szenensystemeinstellungen 1

Zusätzliche Diensteinstellungen

Einer der erweiterten Bereiche des Mixed Reality Toolkits ist die Implementierung des Dienstlocatormusters, die die Registrierung eines beliebigen "Diensts" beim Framework ermöglicht. Dadurch kann das Framework problemlos um neue Features/Systeme erweitert werden, aber auch Projekte können diese Funktionen nutzen, um ihre eigenen Laufzeitkomponenten zu registrieren.

Jeder registrierte Dienst erhält weiterhin den vollen Nutzen aller Unity-Ereignisse, ohne den Aufwand und die Kosten für die Implementierung eines MonoBehaviour- oder clunky-Singletonmusters. Dies ermöglicht reine C#-Komponenten ohne Szenenaufwand für die Ausführung von Vordergrund- und Hintergrundprozessen, z. B. Lawningsysteme, 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 usw.) werden in eine logische Eingabeaktion übersetzt, die in Ihrem Laufzeitprojekt verwendet werden kann. Dadurch wird sichergestellt, dass Ihr Projekt unabhängig davon, woher die Eingabe stammt, diese Aktionen einfach als "Zu tunde Dinge" 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 benutzerfreundlichen Textnamen für das ein, was sie darstellt. Sie müssen dann nur eine Achse (den Datentyp) auswählen, die die Aktion vermitteln soll, oder im Fall von physischen Controllern den physischen Eingabetyp, an den sie angefügt werden kann, z. B.:

Achseneinschränkung Datentyp Beschreibung Beispiel für die Verwendung
Keine Keine Daten Wird für eine leere Aktion oder ein leeres Ereignis verwendet. Ereignistrigger
Rohdaten (reserviert) Objekt (object) Für die zukünftige Verwendung reserviert Nicht zutreffend
Digital bool Ein boolescher Wert für bzw. aus Typdaten Controllerschaltfläche
Einzelne Achse float Ein Einzelner Genauigkeitsdatenwert Eine Bereichseingabe, z. B. ein Trigger
Duale Achse Vector2 Ein Datum vom Typ "dual float" für mehrere Achsen Ein Dpad oder Thumbstick
Drei Dof-Position Vector3 Positionstypdaten aus mit 3 Gleitkommaachsen Nur 3D-Positionsformatcontroller
Drei-Dof-Drehung Quaternion Nur Drehungseingabe mit 4 Gleitkommaachsen Ein Drei-Grad-Stilcontroller, z.B. Oculus Go-Controller
Sechs Dof Mixed Reality Pose (Vector3, Quaternion) Eine Positions- und Drehungsformateingabe mit Vector3- und Quaternion-Komponenten Ein 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, sondern nur eine Entwurfszeitkonfiguration. Dieses Profil sollte aufgrund der Abhängigkeit des Frameworks (und Ihrer Projekte) von den für jede Aktion generierten IDs nicht ausgetauscht werden, während das Projekt ausgeführt wird.

Konfigurationsprofil

Regeln für Eingabeaktionen

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

Konvertieren Sie z. B. das Eingabeereignis mit einer einzelnen dualen Achse von einem DPad in die 4 entsprechenden Aktionen "Dpad Up" /"DPad Down" / "Dpad Left" / "Dpad Right" (wie in der folgenden Abbildung dargestellt).

Dies kann auch in Ihrem eigenen Code erfolgen. Da dies jedoch ein sehr gängiges Muster war, bietet das Framework einen Mechanismus, um dies "vor der 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 Aktion mit zwei Achsen einer anderen Aktion mit zwei Achsen zuordnen, jedoch nicht einer digitalen oder keiner Aktion.

Profil für Eingabeaktionsregeln


Zeigerkonfiguration

Zeiger werden verwendet, um die Interaktivität in der Szene von jedem Eingabegerät aus zu bewegen, was sowohl eine Richtung als auch einen Treffertest mit jedem Objekt in einer Szene (das einen Collider angefügt hat oder eine Ui-Komponente ist) bietet. Zeiger werden standardmäßig automatisch für Controller, Headsets (Anvieren/Fokus) und Maus-/Toucheingaben konfiguriert.

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

Eingabezeigerprofil
  • Zeigende Extent: Bestimmt den globalen Zeigendpunkt für alle Zeiger, einschließlich Anvieren.
  • Zeigende Raycastebenenmasken: Bestimmt, mit welchen Ebenenzeigern ein Raycast verwendet wird.
  • Debuggen von Draw Pointing Ray: Ein Debug-Hilfsgerät zum Visualisieren der für Raycasting verwendeten Lichtstrahle.
  • Debuggen von Farben für Zeichnen zeigender Lichtstrahle: Eine Reihe von Farben, die für die Visualisierung verwendet werden.
  • Prefab für den Anvistikcursor: Vereinfacht die Angabe eines globalen Anvistikcursors für jede Szene.

Es gibt eine zusätzliche Hilfsschaltfläche, mit der Sie schnell zum Anvinganbieter springen können, um bei Bedarf einige bestimmte Werte für Anvieren zu überschreiben.


Gestenkonfiguration

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

Hinweis

Die aktuelle Gestenimplementierung ist nur für die HoloLens und wird für andere Systeme verbessert, wenn sie dem Toolkit in Zukunft hinzugefügt werden (noch keine Datumsangaben).

Gestenkonfiguration

Speech-Befehle

Wie Gesten bieten einige Laufzeitplattformen auch intelligente "Spracherkennung"-Funktionalität 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: Wenn "Startverhalten" auf "Automatischer Start" oder "Manueller Start" festgelegt ist, wird bestimmt, ob KeywordRecognizer beim Start des Eingabesystems initialisiert werden soll oder ob das Projekt entscheiden kann, wann das KeywordRecognizer initialisiert werden soll. "Recognition Confidence Level" 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 Sprache, wenn es auf Windows 10-Plattformen ausgeführt wird, z. B. HoloLens und Windows 10 Desktop, und wird für andere Systeme verbessert, wenn sie in Zukunft dem MRTK hinzugefügt werden (noch keine Datumsangaben).

Konfigurationsprofilbildschirme

Konfiguration der Controllerzuordnung

Einer der Hauptkonfigurationsbildschirme für das Mixed Reality Toolkit ist die Möglichkeit, die verschiedenen Controllertypen zu konfigurieren und zu zuordnen, 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

Das MRTK stellt eine Standardkonfiguration für die folgenden Controller/Systeme zur Verfügung:

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

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

Bildschirm

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


Controllervisualisierungseinstellungen

Zusätzlich zur Controllerzuordnung wird ein separates Konfigurationsprofil bereitgestellt, um anzupassen, wie Ihre Controller innerhalb Ihrer Szenen dargestellt werden.

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

Das MRTK unterstützt auch native SDK-Controllermodelle für Windows Mixed Reality OpenVR. Diese werden als GameObjects in Ihre Szene geladen und mithilfe der Controllernachverfolgung 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-Konfigurationsprogramme

Dienstinspektoren

Dienstinspektoren sind ein Nur-Editor-Feature, das Szenenobjekte generiert, die aktive Dienste darstellen. Wenn Sie diese Objekte auswählen, werden Inspektoren angezeigt, die Dokumentationslinks, die Kontrolle über Editorvisualisierungen und Einblicke in den Zustand des Diensts bieten.

Dienstinspektoren

Sie können Dienstinspektoren aktivieren, indem Sie die Option Dienstinspektoren verwenden unter Editor Einstellungen 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 während der Zeit, die zum Rendern eines Frames gezeitet hat, kleine Kopfbewegungen zu berücksichtigen. 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 das Feature Tiefenpuffer rendern unter Editor Einstellungen im Konfigurationsprofil umschalten. Dadurch wird der aktuelle Tiefenpuffer als Farbe für die Szenenansicht gerendert, indem ein Nachbearbeitungseffekt ( ) auf die DepthBufferRenderer Hauptkamera verwendet wird.

Hilfsprogramm für Tiefenpuffer rendernDer blaue Zylinder in der Szene verfügt über ein Material mitdeaktiviertem ZWrite, sodass keine Tiefendaten geschrieben werden

Ändern von Profilen zur Laufzeit

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

  1. Switch für das Pre MRTK-Initialisierungsprofil:Ersetzen Sie beim Start, bevor das MRTK initialisiert und das Profil aktiv wird, das noch nicht verwendete Profil, um verschiedene Features basierend auf den Gerätefunktionen zu aktivieren/deaktivieren. Wenn die Umgebung beispielsweise in VR ohne Hardware für die räumliche Zuordnung ausgeführt wird, ist es wahrscheinlich nicht sinnvoll, die Komponente für die räumliche Zuordnung zu aktivieren.
  2. Aktiver Profilwechsel:Tauschen Sie nach dem Start, nachdem das MRTK initialisiert und ein Profil aktiv wurde, das aktuell verwendete Profil aus, um das Verhalten bestimmter Features zu ändern. Es kann z. B. eine bestimmte untergeordnete Erfahrung in der Anwendung geben, die möchte, dass die zeigerweiten Zeiger vollständig entfernt werden.

Pre MRTK-Initialisierungsprofilschalter

Dies kann durch Anfügen eines MonoBehaviour -Werts (beispiel unten) erreicht werden, der vor der MRTK-Initialisierung (d. h. "Awake()") ausgeführt wird. Beachten Sie, dass das Skript (d. h. der Aufruf von ) vor dem Skript ausgeführt werden muss. Dies kann durch Festlegen der Einstellungen für die SetProfileBeforeInitializationMixedRealityToolkit Skriptausführungs reihenfolge erreicht SetProfileBeforeInitialization

using Microsoft.MixedReality.Toolkit;
using UnityEngine;

/// <summary>
/// Sample MonoBehaviour that will run before the MixedRealityToolkit object, and change
/// the profile, so that when the 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 verwenden, 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 (z. B. oder ob die Kamera nicht transparent ist) zu verwenden, um herauszufinden, welches Profil https://docs.unity3d.com/ScriptReference/SystemInfo.html geladen werden soll.

Aktiver Profilwechsel

Dies kann durch Festlegen der -Eigenschaft MixedRealityToolkit.Instance.ActiveProfile auf ein neues Profil erreicht werden, das das aktive Profil ersetzt.

MixedRealityToolkit.Instance.ActiveProfile = profileToUse;

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

Während dieses Prozesses kann es zu einer spürbaren Anwendungshregung kommen. Außerdem kann jedes Skript mit einer höheren Priorität als das Skript das Update eingeben, MixedRealityToolkit bevor das neue Profil ordnungsgemäß eingerichtet wird. Weitere Informationen zur Skriptpriorität finden Sie unter Skriptausführungsauftragseinstellungen.

Während des Profilwechselprozesses bleibt die vorhandene UI-Kamera unverändert, um sicherzustellen, dass Unity UI-Komponenten, die Canvas erfordern, auch nach dem Wechsel weiterhin funktionieren.

Siehe auch

Das Mixed Reality Toolkit zentralisiert so viel wie möglich der Konfiguration, die für die Verwaltung des Toolkits erforderlich ist (mit Ausnahme echter Runtime-"Dinge").

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

Das Hauptkonfigurationsprofil Mixed Reality Toolkit

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

Hinweis

Das Mixed Reality Toolkit "sperrt" die Standardkonfigurationsbildschirme, um sicherzustellen, dass Sie immer über einen gemeinsamen Startpunkt für Ihr Projekt verfügen, und es wird empfohlen, mit der Definition Ihrer eigenen Einstellungen zu beginnen, wenn sich Ihr Projekt weiterentwickelt. Die MRTK-Konfiguration kann während des Wiedergabemodus nicht bearbeitet werden.

MRTK-Konfigurationsprofil

Alle Standardprofile für das 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 den Haupt-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 das 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 angegeben.

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

Diese Konfigurationsprofile werden unten in den relevanten Abschnitten ausführlich beschrieben: