System, tilläggstjänster och dataleverantörer – MRTK2

I Mixed Reality Toolkit levereras många av funktionerna i form av tjänster. Tjänsterna är indelade i tre primära kategorier: system, tilläggstjänster och dataleverantörer.

-system

System är tjänster som tillhandahåller kärnfunktionerna i Mixed Reality Toolkit. Alla system är implementeringar av IMixedRealityService gränssnittet.

Vart och ett av de listade systemen visas i mixedrealityToolkit-komponentens konfigurationsprofil.

Tillägg

Tilläggstjänster är komponenter som utökar funktionerna i Mixed Reality Toolkit. Alla tilläggstjänster måste ange att de implementerar IMixedRealityExtensionService gränssnittet.

Information om hur du skapar tilläggstjänster finns i artikeln Tilläggstjänster .

För att vara tillgängliga för MRTK registreras och konfigureras tilläggstjänster med hjälp av avsnittet Tillägg i MixedRealityToolkit-komponentens konfigurationsprofil.

Konfigurera en tilläggstjänst

Dataprovidrar

Dataleverantörer är komponenter som per namn tillhandahåller data till en Mixed Reality Toolkit-tjänst. Alla dataleverantörer måste ange att de implementerar IMixedRealityDataProvider gränssnittet.

Anteckning

Alla tjänster kräver inte dataprovidrar. Av Mixed Reality Toolkits system är indata- och spatialmedvetenhetssystemen de enda tjänsterna som använder dataleverantörer.

För att vara tillgängliga för den specifika MRTK-tjänsten registreras dataleverantörer i tjänstens konfigurationsprofil.

Programkoden ansluter till dataprovidrar via IMixedRealityDataProviderAccess gränssnittet. För att förenkla åtkomsten kan dataleverantörer också hämtas via hjälpklassen CoreServices .

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

Viktigt

Även om IMixedRealityDataProvider ärver från IMixedRealityServiceregistreras inte dataprovidrar med MixedRealityServiceRegistry. För att få åtkomst till dataleverantörer måste programkoden fråga tjänstinstansen som de registrerades för (t.ex. indatasystem).

Indata

MRTK-indatasystemet använder endast dataprovidrar som implementerar IMixedRealityInputDeviceManager.

Dataprovidrar för indatasystem

I följande exempel visas hur du kommer åt indatasimuleringsprovidern och växlar egenskapen SmoothEyeTracking.

IMixedRealityDataProviderAccess dataProviderAccess = CoreServices.InputSystem as IMixedRealityDataProviderAccess;

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

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

Åtkomst till en dataprovider för kärnindatasystemet kan också förenklas via hjälpklassen CoreServices .

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

Anteckning

Indatasystemet returnerar endast dataprovidrar som stöds för den plattform där programmet körs.

Information om hur du skriver en dataprovider för MRTK-indatasystemet finns i Skapa en dataprovider för indatasystem.

Rumslig medvetenhet

MRTK-systemet för rumslig medvetenhet använder endast dataprovidrar som implementerar IMixedRealitySpatialAwarenessObserver gränssnittet.

Dataleverantörer för rumslig medvetenhet

I följande exempel visas hur du får åtkomst till registrerade dataproviders för rumsliga nät och ändrar nätens synlighet.

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

Åtkomst till en dataleverantör för kärnsystemet för rumslig medvetenhet kan också förenklas via hjälpklassen CoreServices .

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

Anteckning

Systemet för rumslig medvetenhet returnerar endast dataprovidrar som stöds för den plattform där programmet körs.

Information om hur du skriver en dataleverantör för MRTK-systemet för rumslig medvetenhet finns i Skapa en dataleverantör för rumslig medvetenhet.

Se även