Systemen, extensieservices en gegevensproviders — MRTK2

In Mixed Reality Toolkit worden veel van de functies geleverd in de vorm van services. Services zijn gegroepeerd in drie primaire categorieën: systemen, extensieservices en gegevensproviders.

-systemen

Systemen zijn services die de kernfunctionaliteit van Mixed Reality Toolkit bieden. Alle systemen zijn implementaties van de IMixedRealityService interface.

Elk van de vermelde systemen wordt weergegeven in het configuratieprofiel van het onderdeel MixedRealityToolkit.

Uitbreidingen

Extensieservices zijn onderdelen die de functionaliteit van Mixed Reality Toolkit uitbreiden. Alle extensieservices moeten opgeven dat ze de IMixedRealityExtensionService interface implementeren.

Raadpleeg het artikel Extensieservices voor informatie over het maken van extensieservices .

Om toegankelijk te zijn voor de MRTK, worden extensieservices geregistreerd en geconfigureerd met behulp van de sectie Extensies van het configuratieprofiel van het MixedRealityToolkit-onderdeel.

Een extensieservice configureren

Gegevensproviders

Gegevensproviders zijn onderdelen die, volgens hun naam, gegevens leveren aan een Mixed Reality Toolkit-service. Alle gegevensproviders moeten opgeven dat ze de IMixedRealityDataProvider interface implementeren.

Notitie

Niet voor alle services zijn gegevensproviders vereist. Van de systemen van Mixed Reality Toolkit zijn de systemen Input en Spatial Awareness de enige services die gebruikmaken van gegevensproviders.

Om toegankelijk te zijn voor de specifieke MRTK-service, worden gegevensproviders geregistreerd in het configuratieprofiel van de service.

Toepassingscode opent gegevensproviders via de IMixedRealityDataProviderAccess interface. Om de toegang te vereenvoudigen, kunnen gegevensproviders ook worden opgehaald via de CoreServices helperklasse.

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

Belangrijk

Hoewel IMixedRealityDataProvider ze worden overgenomen van IMixedRealityService, worden gegevensproviders niet geregistreerd bij de MixedRealityServiceRegistry. Voor toegang tot gegevensproviders moet toepassingscode een query uitvoeren op het service-exemplaar waarvoor ze zijn geregistreerd (bijvoorbeeld invoersysteem).

Invoer

Het MRTK-invoersysteem maakt alleen gebruik van gegevensproviders die de IMixedRealityInputDeviceManagerimplementeren.

Invoersysteemgegevensproviders

In het volgende voorbeeld ziet u de toegang tot de invoersimulatieprovider en schakelt u de eigenschap SmoothEyeTracking in.

IMixedRealityDataProviderAccess dataProviderAccess = CoreServices.InputSystem as IMixedRealityDataProviderAccess;

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

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

Toegang tot een gegevensprovider voor het kerninvoersysteem kan ook worden vereenvoudigd door gebruik te maken van de CoreServices helperklasse.

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

Notitie

Het invoersysteem retourneert alleen gegevensproviders die worden ondersteund voor het platform waarop de toepassing wordt uitgevoerd.

Zie Een invoersysteemgegevensprovider maken voor informatie over het schrijven van een gegevensprovider voor het MRTK-invoersysteem.

Ruimtelijk bewustzijn

Het MRTK-systeem voor ruimtelijk bewustzijn maakt alleen gebruik van gegevensproviders die de IMixedRealitySpatialAwarenessObserver interface implementeren.

Gegevensproviders voor ruimtelijk bewustzijnssysteem

In het volgende voorbeeld ziet u de toegang tot de geregistreerde gegevensproviders voor ruimtelijke mesh en het wijzigen van de zichtbaarheid van de meshes.

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

Toegang tot een gegevensprovider voor het kernsysteem voor ruimtelijk bewustzijn kan ook worden vereenvoudigd door gebruik te maken van de CoreServices helperklasse.

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

Notitie

Het systeem voor ruimtelijke kennis retourneert alleen gegevensproviders die worden ondersteund voor het platform waarop de toepassing wordt uitgevoerd.

Zie Een gegevensprovider voor ruimtelijk bewustzijn maken voor informatie over het schrijven van een gegevensprovider voor het MRTK-systeem voor ruimtelijk bewustzijn.

Zie ook