Sistemi, servizi di estensione e provider di dati - MRTK2

In Realtà mista Toolkit molte delle funzionalità sono disponibili sotto forma di servizi. I servizi sono raggruppati in tre categorie principali: sistemi, servizi di estensione e provider di dati.

-

I sistemi sono servizi che forniscono le funzionalità di base di Realtà mista Toolkit. Tutti i sistemi sono implementazioni dell'interfaccia IMixedRealityService .

Ognuno dei sistemi elencati viene visualizzato nel profilo di configurazione del componente MixedRealityToolkit.

Estensioni

I servizi di estensione sono componenti che estendono la funzionalità di Realtà mista Toolkit. Tutti i servizi di estensione devono specificare che implementano l'interfaccia IMixedRealityExtensionService .

Per informazioni sulla creazione di servizi di estensione, vedere l'articolo Servizi di estensione .

Per essere accessibili a MRTK, i servizi di estensione vengono registrati e configurati usando la sezione Estensioni del profilo di configurazione del componente MixedRealityToolkit.

Configurazione di un servizio di estensione

Provider di dati

I provider di dati sono componenti che, in base al nome, forniscono dati a un servizio Realtà mista Toolkit. Tutti i provider di dati devono specificare che implementano l'interfaccia IMixedRealityDataProvider .

Nota

Non tutti i servizi richiederanno provider di dati. Dei sistemi di Realtà mista Toolkit, i sistemi input e sensibilizzazione spaziale sono gli unici servizi a utilizzare i provider di dati.

Per essere accessibili al servizio MRTK specifico, i provider di dati vengono registrati nel profilo di configurazione del servizio.

Il codice dell'applicazione accede ai provider di dati tramite l'interfaccia IMixedRealityDataProviderAccess . Per semplificare l'accesso, i provider di dati possono essere recuperati anche tramite la CoreServices classe helper.

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

Importante

Anche se IMixedRealityDataProvider eredita da IMixedRealityService, i provider di dati non sono registrati con .MixedRealityServiceRegistry Per accedere ai provider di dati, il codice dell'applicazione deve eseguire una query sull'istanza del servizio per la quale sono stati registrati (ad esempio, sistema di input).

Input

Il sistema di input MRTK utilizza solo provider di dati che implementano .IMixedRealityInputDeviceManager

Provider di dati di sistema di input

Nell'esempio seguente viene illustrato come accedere al provider di simulazione di input e attivare o disattivare la proprietà SmoothEyeTracking.

IMixedRealityDataProviderAccess dataProviderAccess = CoreServices.InputSystem as IMixedRealityDataProviderAccess;

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

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

L'accesso a un provider di dati per il sistema di input principale può essere semplificato anche tramite l'uso della CoreServices classe helper.

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

Nota

Il sistema di input restituisce solo i provider di dati supportati per la piattaforma in cui è in esecuzione l'applicazione.

Per informazioni sulla scrittura di un provider di dati per il sistema di input MRTK, vedere Creazione di un provider di dati di sistema di input.

Consapevolezza spaziale

Il sistema di consapevolezza spaziale MRTK usa solo provider di dati che implementano l'interfaccia IMixedRealitySpatialAwarenessObserver .

Provider di dati del sistema di consapevolezza spaziale

L'esempio seguente illustra l'accesso ai provider di dati della mesh spaziale registrati e la modifica della visibilità delle mesh.

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

L'accesso a un provider di dati per il sistema di consapevolezza spaziale principale può essere semplificato anche tramite l'uso della CoreServices classe helper.

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

Nota

Il sistema di riconoscimento spaziale restituisce solo provider di dati supportati per la piattaforma in cui è in esecuzione l'applicazione.

Per informazioni sulla scrittura di un provider di dati per il sistema di consapevolezza spaziale MRTK, vedere Creazione di un provider di dati del sistema di consapevolezza spaziale.

Vedi anche