Systeme, Erweiterungsdienste und Datenanbieter — MRTK2
In Mixed Reality Toolkit werden viele der Features in Form von Diensten bereitgestellt. Dienste werden in drei primäre Kategorien unterteilt: Systeme, Erweiterungsdienste und Datenanbieter.
Systeme
Systeme sind Dienste, die die Kernfunktionalität von Mixed Reality Toolkit bereitstellen. Alle Systeme sind Implementierungen der IMixedRealityService
Schnittstelle.
- BoundarySystem
- CameraSystem
- DiagnosticsSystem
- InputSystem
- SceneSystem
- SpatialAwarenessSystem
- TeleportSystem
Jedes der aufgeführten Systeme wird im Konfigurationsprofil der MixedRealityToolkit-Komponente angezeigt.
Erweiterungen
Erweiterungsdienste sind Komponenten, die die Funktionalität von Mixed Reality Toolkit erweitern. Alle Erweiterungsdienste müssen angeben, dass sie die IMixedRealityExtensionService
Schnittstelle implementieren.
Informationen zum Erstellen von Erweiterungsdiensten finden Sie im Artikel Erweiterungsdienste .
Um für das MRTK zugänglich zu sein, werden Erweiterungsdienste über den Abschnitt Erweiterungen des Konfigurationsprofils der MixedRealityToolkit-Komponente registriert und konfiguriert.
Datenanbieter
Datenanbieter sind Komponenten, die gemäß ihrem Namen Daten für einen Mixed Reality Toolkit-Dienst bereitstellen. Alle Datenanbieter müssen angeben, dass sie die IMixedRealityDataProvider
Schnittstelle implementieren.
Hinweis
Nicht für alle Dienste sind Datenanbieter erforderlich. Von Mixed Reality Toolkit-Systemen sind die Input- und Spatial Awareness-Systeme die einzigen Dienste, die Datenanbieter nutzen.
Um auf den spezifischen MRTK-Dienst zugreifen zu können, werden Datenanbieter im Konfigurationsprofil des Diensts registriert.
Anwendungscode greift über die IMixedRealityDataProviderAccess
Schnittstelle auf Datenanbieter zu. Um den Zugriff zu vereinfachen, können Datenanbieter auch über die CoreServices
Hilfsklasse abgerufen werden.
var inputSimulationService = CoreServices.GetDataProvider<IInputSimulationService>(CoreServices.InputSystem);
Wichtig
Datenanbieter erben zwar von IMixedRealityService
, werden jedoch IMixedRealityDataProvider
nicht bei registriertMixedRealityServiceRegistry
. Um auf Datenanbieter zuzugreifen, muss der Anwendungscode den Dienst instance abfragen, für den er registriert wurde (z. B. Eingabesystem).
Eingabe
Das MRTK-Eingabesystem verwendet nur Datenanbieter, die die IMixedRealityInputDeviceManager
implementieren.
Das folgende Beispiel veranschaulicht den Zugriff auf den Eingabesimulationsanbieter und das Umschalten der SmoothEyeTracking-Eigenschaft.
IMixedRealityDataProviderAccess dataProviderAccess = CoreServices.InputSystem as IMixedRealityDataProviderAccess;
if (dataProviderAccess != null)
{
IInputSimulationService inputSimulation =
dataProviderAccess.GetDataProvider<IInputSimulationService>();
if (inputSimulation != null)
{
inputSimulation.SmoothEyeTracking = !inputSimulation.SmoothEyeTracking;
}
}
Der Zugriff auf einen Datenanbieter für das Kerneingabesystem kann auch mithilfe der CoreServices
Hilfsklasse vereinfacht werden.
var inputSimulationService = CoreServices.GetInputSystemDataProvider<IInputSimulationService>();
if (inputSimulationService != null)
{
// do something here
}
Hinweis
Das Eingabesystem gibt nur Datenanbieter zurück, die für die Plattform unterstützt werden, auf der die Anwendung ausgeführt wird.
Informationen zum Schreiben eines Datenanbieters für das MRTK-Eingabesystem finden Sie unter Erstellen eines Eingabesystemdatenanbieters.
Räumliche Wahrnehmung
Das MRTK-Raumerkennungssystem verwendet nur Datenanbieter, die die IMixedRealitySpatialAwarenessObserver
Schnittstelle implementieren.
Das folgende Beispiel veranschaulicht den Zugriff auf die registrierten Räumlichen Gitterdatenanbieter und das Ändern der Sichtbarkeit der Gitter.
IMixedRealityDataProviderAccess dataProviderAccess =
CoreServices.SpatialAwarenessSystem as IMixedRealityDataProviderAccess;
if (dataProviderAccess != null)
{
IReadOnlyList<IMixedRealitySpatialAwarenessMeshObserver> observers =
dataProviderAccess.GetDataProviders<IMixedRealitySpatialAwarenessMeshObserver>();
foreach (IMixedRealitySpatialAwarenessMeshObserver observer in observers)
{
// Set the mesh to use the occlusion material
observer.DisplayOption = SpatialMeshDisplayOptions.Occlusion;
}
}
Der Zugriff auf einen Datenanbieter für das kernbezogene Raumerkennungssystem kann auch durch die Verwendung der CoreServices
Hilfsklasse vereinfacht werden.
var dataProvider = CoreServices.GetSpatialAwarenessSystemDataProvider<IMixedRealitySpatialAwarenessMeshObserver>();
if (dataProvider != null)
{
// do something here
}
Hinweis
Das Spatial Awareness-System gibt nur Datenanbieter zurück, die für die Plattform unterstützt werden, auf der die Anwendung ausgeführt wird.
Informationen zum Schreiben eines Datenanbieters für das MRTK-Raumerkennungssystem finden Sie unter Erstellen eines Datenanbieters für ein Räumliches Bewusstseinssystem.