Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mixed Reality Toolkit zentralisiert so viel von der Konfiguration, die für die Verwaltung des Toolkits erforderlich ist, wie möglich (mit Ausnahme von true runtime"-Dingen).
Dieser Leitfaden ist eine einfache exemplarische Vorgehensweise für die einzelnen Konfigurationsprofilbildschirme, die derzeit für das Toolkit verfügbar sind.
Das Hauptkonfigurationsprofil für 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 dar.
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, wenn sich Ihr Projekt weiterentwickelt. Die MRTK-Konfiguration kann während des Wiedergabemodus nicht bearbeitet werden.
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 Haupt-Mixed Reality Toolkit-Konfigurationsprofil öffnen, wird der folgende Bildschirm im Inspektor angezeigt:
Wenn Sie ein MixedRealityToolkitConfigurationProfile-Objekt 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:
- Das Hauptkonfigurationsprofil für Mixed Reality Toolkit
- Einstellungen für die Benutzeroberfläche
- Kameraeinstellungen
- Eingabesystemeinstellungen
- Begrenzungsvisualisierungseinstellungen
- Auswahl des Teleportierungssystems
- Einstellungen für räumliche Wahrnehmung
- Diagnoseeinstellungen
- Szenensystemeinstellungen
- Einstellungen für zusätzliche Dienste
- Einstellungen für Eingabeaktionen
- Eingabeaktionsregeln
- Zeigerkonfiguration
- Gestenkonfiguration
- Sprachbefehle
- Konfiguration der Controllerzuordnung
- Controllervisualisierungseinstellungen
- Editor-Hilfsprogramme
- Ändern von Profilen zur Laufzeit
- Siehe auch
Diese Konfigurationsprofile werden unten in ihren relevanten Abschnitten ausführlich beschrieben:
Einstellungen für die Benutzeroberfläche
Diese Einstellung befindet sich auf der Hauptseite Mixed Reality Toolkitkonfiguration und definiert den Standardvorgang der Mixed Reality Umgebungsskala für Ihr Projekt.
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.
Eingabesystemeinstellungen
Das Mixed Reality Project bietet ein stabiles und gut trainiertes Eingabesystem zum Weiterleiten aller Eingabeereignisse um das standardmäßig ausgewählte Projekt.
Hinter dem vom MRTK bereitgestellten Eingabesystem befinden sich mehrere andere Systeme, die dazu beitragen, die komplexen Interwebungen zu steuern und zu verwalten, die erforderlich sind, um die Komplexität eines Multiplattform- / Mixed Reality-Frameworks zu abstrahieren.
Jedes der einzelnen Profile ist unten aufgeführt:
- Fokuseinstellungen
- Einstellungen für Eingabeaktionen
- Eingabeaktionsregeln
- Zeigerkonfiguration
- Gestenkonfiguration
- Sprachbefehle
- Konfiguration der Controllerzuordnung
- Controllervisualisierungseinstellungen
Begrenzungsvisualisierungseinstellungen
Das Begrenzungssystem übersetzt die wahrgenommene Grenze, die von der zugrunde liegenden Plattformgrenze/dem Überwachungssystem gemeldet wird. Die Boundary-Schnellansichtskonfiguration bietet Ihnen die Möglichkeit, die aufgezeichnete Grenze innerhalb Ihrer Szene in Bezug auf die Position des Benutzers automatisch anzuzeigen. Die Grenze reagiert/aktualisiert auch basierend darauf, wo sich der Benutzer innerhalb der Szene teleportiert.
Auswahl des Teleportierungssystems
Die Mixed Reality Project bietet ein vollständiges Teleportierungssystem zum Verwalten von Teleportationsereignissen in dem Projekt, das standardmäßig ausgewählt ist.
Einstellungen für räumliche Wahrnehmung
Das Mixed Reality-Projekt stellt ein neu erstelltes Räumliches Bewusstseinssystem für die Arbeit mit räumlichen Scansystemen in dem Projekt bereit, das standardmäßig ausgewählt ist.
mit Mixed Reality Toolkit spatial awareness configuration können Sie den Start des Systems anpassen, unabhängig davon, ob die Anwendung automatisch gestartet oder später programmgesteuert gestartet wird, sowie die Blöcke für das Sichtfeld festlegen.
Außerdem können Sie die Gitter- und Oberflächeneinstellungen konfigurieren und so anpassen, wie Ihr Projekt die Umgebung um Sie herum versteht.
Dies gilt nur für Geräte, die eine gescannte Umgebung bereitstellen können.
Diagnoseeinstellungen
Ein optionales, aber sehr nützliches Feature von MRTK ist das Plug-In Diagnose Funktionalität.
Das Diagnose-Profil 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.
Szenensystemeinstellungen
MRTK bietet diesen optionalen Dienst, um Das Laden/Entladen komplexer additiver Szenen zu verwalten. Um zu entscheiden, ob das Szenensystem für Ihr Projekt geeignet wäre, lesen Sie den Leitfaden Erste Schritte Szenensystem.
Einstellungen für zusätzliche Dienste
Einer der fortgeschritteneren Bereiche von Mixed Reality Toolkit ist die Implementierung des Dienstlocatormusters, das die Registrierung eines beliebigen "Diensts" beim Framework ermöglicht. Dies ermöglicht es, das Framework sowohl um neue Features/Systeme zu erweitern, aber auch, dass Projekte diese Funktionen nutzen können, um ihre eigenen Laufzeitkomponenten zu registrieren.
Jeder registrierte Dienst hat weiterhin den vollen Vorteil aller Unity-Ereignisse, ohne den Aufwand 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.
Einstellungen für Eingabeaktionen
Eingabeaktionen bieten eine Möglichkeit, physische Interaktionen und Eingaben aus einem Laufzeitprojekt 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 unabhängig davon, woher die Eingabe stammt, 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 dessen Darstellung ein. Sie müssen dann nur eine Achse (den Typ der Daten) auswählen, die die Aktion vermitteln 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 | Ereignistrigger |
| Roh (reserviert) | Objekt | Reserviert für zukünftige Verwendung | Nicht zutreffend |
| Digital | bool | Boolesche Daten vom Typ "Ein" oder "Aus" | Controllerschaltfläche |
| Einzelachse | Gleitkommazahl | Ein einzelner Genauigkeitsdatenwert | Eine Bereichseingabe, z. B. ein Trigger |
| Doppelachse | Vector2 | Ein duales Gleitkommadatum für mehrere Achsen | Dpad oder Thumbstick |
| Drei Dof-Position | Vector3 | Positionstypdaten von mit 3 Gleitkommaachsen | Nur 3D-Positionsformat-Controller |
| Drehung mit drei Dof | Quaternion | Nur Drehungseingabe mit 4 Gleitkommaachsen | Ein Drei-Grad-Stilcontroller, z. B. Oculus Go-Controller |
| Sechs Dof | Mixed Reality Pose (Vector3, Quaternion) | Eine Eingabe des Positions- und Drehungsstils 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 vertauscht 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 wird.
Eingabeaktionsregeln
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.
Beispiel: Konvertieren des einachsigen Zweiachseneingabeereignisses von einem DPad in 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 "sofort einsatzbereit" zu tun.
Eingabeaktionsregeln können für jede der verfügbaren Eingabeachsen konfiguriert werden. Eingabeaktionen von einem Achsentyp können jedoch in eine andere Eingabeaktion desselben Achsentyps übersetzt werden. Sie können eine Doppelachsenaktion einer anderen Aktion mit zwei Achsen zuordnen, jedoch nicht einer digitalen oder keiner Aktion.
Zeigerkonfiguration
Zeiger werden verwendet, um die Interaktivität in der Szene von jedem Eingabegerät aus zu fördern und einen Richtungs- und Treffertest mit jedem Objekt in einer Szene (das einen Collider angefügt hat oder eine UI-Komponente ist) zu geben. Zeiger werden standardmäßig automatisch für Controller, Headsets (Anvisieren/Fokus) und Maus-/Toucheingaben konfiguriert.
Zeiger können auch innerhalb der aktiven Szene mithilfe einer der vielen Zeilenkomponenten visualisiert werden, die von Mixed Reality Toolkit bereitgestellt werden, oder eine ihrer eigenen, wenn sie die MRTK-Schnittstelle IMixedRealityPointer implementieren.
- Zeigeausdehnung: Bestimmt den globalen Zeigeausdehnungsumfang für alle Zeiger, einschließlich Anvisieren.
- Zeigende Raycastebenenmasken: Bestimmt, für welche Ebenen zeiger ein Raycast ausgeführt wird.
- Debuggen von Zeichnen von Zeigestrahlen: Ein Debughilfsprogramm zum Visualisieren der strahlen, die für Raycasting verwendet werden.
- Debuggen von Farben zum Zeichnen von Zeigestrahlen: Eine Reihe von Farben, die für die Visualisierung verwendet werden sollen.
- Anvisieren des Cursor-Prefabs: Vereinfacht die Angabe eines globalen Anvisierens für jede Szene.
Es gibt eine zusätzliche Hilfsschaltfläche, mit der Sie schnell zum Anvisieren von Anvisieren wechseln können, um bei Bedarf einige bestimmte Werte für Anvisieren außer Kraft zu setzen.
Gestenkonfiguration
Gesten sind eine systemspezifische Implementierung, mit der Sie eingabeaktionen den verschiedenen "Gesten"-Eingabemethoden 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 Datumsangaben).
Sprachbefehle
Wie Gesten bieten auch einige Laufzeitplattformen intelligente "Spracherkennung"-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:
- Allgemeine Einstellungen: Die Einstellung "Startverhalten" 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. "Recognition Confidence Level" wird verwendet, um die KeywordRecognizer-API von Unity zu initialisieren.
- 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 angeschlossen werden.
Wichtig
Das System unterstützt sprache derzeit nur, wenn es auf Windows 10 Plattformen wie HoloLens und Windows 10 Desktop ausgeführt wird, und wird für andere Systeme verbessert, da sie in Zukunft zu MRTK hinzugefügt werden (noch keine Datumsangaben).
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.
MRTK bietet eine Standardkonfiguration für die folgenden Controller/Systeme:
- Maus (einschließlich 3D-Unterstützung für räumliche Maus)
- Touchscreen
- Xbox-Controller
- Windows Mixed Reality Controller
- HoloLens-Gesten
- HTC Vive Wand Controller
- Oculus Touch-Controller
- Oculus Remote-Controller
- Generische OpenVR-Geräte (nur fortgeschrittene Benutzer)
Wenn Sie auf das Bild 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:
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 in Ihren Szenen dargestellt werden.
Dies kann auf 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 Controllernachverfolgung der Plattform positioniert.
Wenn Ihre Controllerdarstellung in der Szene von der position des physischen Controllers versetzt werden muss, legen Sie diesen Offset einfach für das Prefab des Controllermodells fest (z. B. Festlegen der Transformationsposition des Controller-Prefabs mit einer Offsetposition).
Editor-Hilfsprogramme
Die folgenden Hilfsprogramme funktionieren nur im Editor und sind nützlich, um die Entwicklungsproduktivität zu verbessern.
Dienstinspektoren
Dienstinspektoren sind ein reines Editorfeature, das In-Scene-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.
Sie können Dienstinspektoren aktivieren, indem Sie im Konfigurationsprofil unter Editoreinstellungen die Option Dienstinspektoren verwenden aktivieren.
Tiefenpufferrenderer
Die Gemeinsame Nutzung des Tiefenpuffers mit einigen Mixed Reality-Plattformen kann die Stabilisierung des Hologramms 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 das Feature Rendern der Tiefenpuffer im Konfigurationsprofil unter Editoreinstellungen umschalten. Dadurch wird der aktuelle Tiefenpuffer als Farbe für die Szenenansicht gerendert, indem ein Nachbearbeitungseffekt auf DepthBufferRendererdie Hauptkamera angewendet wird.
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 im Allgemeinen zwei verschiedene Szenarien und Zeiten, in denen dies hilfreich ist:
- Pre MRTK-Initialisierungsprofilschalter: 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/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.
- 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. Es kann z. B. eine bestimmte Unterumgebung in der Anwendung geben, die entfernte Handzeiger vollständig entfernen möchte.
Pre MRTK-Initialisierungsprofilschalter
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 MixedRealityToolkit Skript ausgeführt werden muss, was durch Festlegen der Einstellungen für die Skriptausfü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 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. https://docs.unity3d.com/ScriptReference/SystemInfo.htmloder ob die Kamera undurchsichtig/transparent ist) zu verwenden, 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 Vernichtung der derzeit ausgeführten Dienste nach dem letzten LateUpdate() aller Dienste erfolgt, und die Instanziierung und Initialisierung der dem neuen Profil zugeordneten Dienste erfolgt vor dem ersten Update() aller Dienste.
Während dieses Prozesses kann ein merkliches 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 Skriptausführungsreihenfolgeeinstellungen .
Während des Profilwechselprozesses bleibt die vorhandene UI-Kamera unverändert, sodass Unity-UI-Komponenten, die canvas erfordern, auch nach dem Wechsel weiterhin funktionieren.