Systemy, usługi rozszerzeń i dostawcy danych — MRTK2

W Mixed Reality Toolkit wiele funkcji jest dostarczanych w formie usług. Usługi są pogrupowane w trzy główne kategorie: systemy, usługi rozszerzeń i dostawców danych.

Systemy

Systemy to usługi, które zapewniają podstawowe funkcje zestawu narzędzi Mixed Reality Toolkit. Wszystkie systemy są implementacjami interfejsu IMixedRealityService .

Każdy z wymienionych systemów jest widoczny w profilu konfiguracji składnika MixedRealityToolkit.

Rozszerzenia

Usługi rozszerzeń to składniki rozszerzające funkcjonalność zestawu narzędzi Mixed Reality Toolkit. Wszystkie usługi rozszerzeń muszą określać, że implementują IMixedRealityExtensionService interfejs.

Aby uzyskać informacje na temat tworzenia usług rozszerzeń, zapoznaj się z artykułem Usługi rozszerzeń .

Aby zapewnić dostęp do zestawu narzędzi MRTK, usługi rozszerzeń są rejestrowane i konfigurowane przy użyciu sekcji Rozszerzenia profilu konfiguracji składnika MixedRealityToolkit.

Konfigurowanie usługi rozszerzenia

Dostawcy danych

Dostawcy danych to składniki, które zgodnie z ich nazwą dostarczają dane do usługi Mixed Reality Toolkit. Wszyscy dostawcy danych muszą określić, że implementują IMixedRealityDataProvider interfejs.

Uwaga

Nie wszystkie usługi będą wymagać dostawców danych. Spośród systemów Mixed Reality Toolkit systemy wprowadzania danych i rozpoznawania przestrzennego to jedyne usługi do korzystania z dostawców danych.

Aby zapewnić dostęp do określonej usługi MRTK, dostawcy danych są zarejestrowani w profilu konfiguracji usługi.

Kod aplikacji uzyskuje dostęp do dostawców danych za pośrednictwem interfejsu IMixedRealityDataProviderAccess . Aby uprościć dostęp, dostawcy danych można również pobrać za pośrednictwem CoreServices klasy pomocnika.

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

Ważne

Mimo że IMixedRealityDataProvider dziedziczy z IMixedRealityServiceelementu , dostawcy danych nie są zarejestrowani w obiekcie MixedRealityServiceRegistry. Aby uzyskać dostęp do dostawców danych, kod aplikacji musi wykonywać zapytania dotyczące wystąpienia usługi, dla którego zostały zarejestrowane (np. system wejściowy).

Dane wejściowe

System wejściowy zestawu narzędzi MRTK korzysta tylko z dostawców danych, którzy implementują element IMixedRealityInputDeviceManager.

Dostawcy danych systemu wejściowego

W poniższym przykładzie pokazano uzyskiwanie dostępu do dostawcy symulacji danych wejściowych i przełączanie właściwości SmoothEyeTracking.

IMixedRealityDataProviderAccess dataProviderAccess = CoreServices.InputSystem as IMixedRealityDataProviderAccess;

if (dataProviderAccess != null)
{
    IInputSimulationService inputSimulation =
        dataProviderAccess.GetDataProvider<IInputSimulationService>();

    if (inputSimulation != null)
    {
        inputSimulation.SmoothEyeTracking = !inputSimulation.SmoothEyeTracking;
    }
}

Dostęp do dostawcy danych dla podstawowego systemu wejściowego można również uprościć za pomocą CoreServices klasy pomocnika.

var inputSimulationService = CoreServices.GetInputSystemDataProvider<IInputSimulationService>();
if (inputSimulationService != null)
{
    // do something here
}

Uwaga

System wejściowy zwraca tylko dostawców danych obsługiwanych przez platformę, na której działa aplikacja.

Aby uzyskać informacje na temat pisania dostawcy danych dla systemu wejściowego zestawu narzędzi MRTK, zobacz tworzenie dostawcy danych systemu wejściowego.

Świadomość przestrzenna

System rozpoznawania przestrzennego zestawu narzędzi MRTK korzysta tylko z dostawców danych, którzy implementują IMixedRealitySpatialAwarenessObserver interfejs.

Dostawcy danych systemu rozpoznawania przestrzennego

W poniższym przykładzie pokazano, jak uzyskać dostęp do zarejestrowanych dostawców danych siatki przestrzennej i zmienić widoczność siatki.

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;
    }
}

Dostęp do dostawcy danych dla podstawowego systemu rozpoznawania przestrzennego można również uprościć za pomocą klasy pomocniczej CoreServices .

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

Uwaga

System rozpoznawania przestrzennego zwraca tylko dostawców danych obsługiwanych dla platformy, na której działa aplikacja.

Aby uzyskać informacje na temat pisania dostawcy danych dla systemu rozpoznawania przestrzennego zestawu narzędzi MRTK, zobacz tworzenie dostawcy danych systemu rozpoznawania przestrzennego.

Zobacz też