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.

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.

Konfigurieren eines Erweiterungsdiensts

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 IMixedRealityInputDeviceManagerimplementieren.

Eingabesystemdatenanbieter

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.

Anbieter räumlicher Sensibilisierungssystemdaten

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.

Weitere Informationen