Systeme, Erweiterungsdienste und Datenanbieter

Im Mixed Reality Toolkit werden viele der Features in Form von Diensten bereitgestellt. Dienste sind in drei Hauptkategorien unterteilt: Systeme, Erweiterungsdienste und Datenanbieter.

Systeme

Systeme sind Dienste, die die Kernfunktionen des Mixed Reality Toolkits 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 des Mixed Reality-Toolkits erweitern. Alle Erweiterungsdienste müssen angeben, dass sie die -Schnittstelle IMixedRealityExtensionService implementieren.

Informationen zum Erstellen von Erweiterungsdiensten finden Sie im Artikel Erweiterungsdienste.

Um für das MRTK zugänglich zu sein, werden Erweiterungsdienste mithilfe des Abschnitts Erweiterungen des Konfigurationsprofils der MixedRealityToolkit-Komponente registriert und konfiguriert.

Konfigurieren eines Erweiterungsdiensts

Datenanbieter

Datenanbieter sind Komponenten, die nach ihrem Namen Daten für einen Mixed Reality Toolkit-Dienst bereitstellen. Alle Datenanbieter müssen angeben, dass sie die -Schnittstelle IMixedRealityDataProvider implementieren.

Hinweis

Nicht alle Dienste erfordern Datenanbieter. Von den Mixed Reality Toolkits sind die Eingabe- und räumlichen Wahrnehmungssysteme die einzigen Dienste, die Datenanbieter nutzen.

Um für den spezifischen MRTK-Dienst zugänglich zu sein, werden Datenanbieter im Konfigurationsprofil des Diensts registriert.

Anwendungscode greifen über die -Schnittstelle auf Datenanbieter IMixedRealityDataProviderAccess zu. Um den Zugriff zu vereinfachen, können Datenanbieter auch über die CoreServices Hilfsklasse abgerufen werden.

var inputSimulationService = CoreServices.GetDataProvider<IInputSimulationService>(CoreServices.InputSystem);

Wichtig

Obwohl IMixedRealityDataProvider von IMixedRealityService erbt, werden Datenanbieter nicht bei MixedRealityServiceRegistry registriert. Für den Zugriff auf Datenanbieter muss der Anwendungscode die Dienstinstanz abfragen, für die sie registriert wurden (z. B. Eingabesystem).

Eingabe

Das MRTK-Eingabesystem verwendet nur Datenanbieter, die IMixedRealityInputDeviceManager implementieren.

Eingabesystemdatenanbieter

Im folgenden Beispiel wird der Zugriff auf den Eingabesimulationsanbieter und das Umschalten der SmoothEyeTracking-Eigenschaft veranschaulicht.

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 Eingabesystem-Datenanbieters.

Räumliche Wahrnehmung

Das MRTK-Raumerkennsystem nutzt nur Datenanbieter, die die -Schnittstelle IMixedRealitySpatialAwarenessObserver implementieren.

Anbieter von Räumlichen Wahrnehmungssystemdaten

Im folgenden Beispiel wird der Zugriff auf die registrierten Räumlichen Gitternetz-Datenanbieter und das Ändern der Sichtbarkeit der Gitternetze veranschaulicht.

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 zentrale räumliche Bewusstseinssystem kann auch mithilfe der CoreServices Hilfsklasse vereinfacht werden.

var dataProvider = CoreServices.GetSpatialAwarenessSystemDataProvider<IMixedRealitySpatialAwarenessMeshObserver>();
if (dataProvider != null)
{
    // do something here
}

Hinweis

Das Räumliche Bewusstseinssystem 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-System für räumliche Wahrnehmung finden Sie unter Erstellen eines Systemdatenanbieters für räumliche Wahrnehmung.

Siehe auch