Sistemi, servizi di estensione e provider di dati - MRTK2

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

-

I sistemi sono servizi che forniscono la funzionalità principale 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, fare riferimento all'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, per 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 richiedono provider di dati. I sistemi di Realtà mista Toolkit, i sistemi di consapevolezza degli input e dello spazio sono gli unici servizi a usare 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 vengono registrati con .MixedRealityServiceRegistry Per accedere ai provider di dati, il codice dell'applicazione deve eseguire query sull'istanza del servizio per cui sono stati registrati (ad esempio: sistema di input).

Input

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

Provider di dati di sistema di input

Nell'esempio seguente viene illustrato l'accesso al provider di simulazione di input e attivare 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 la creazione di un provider di dati di sistema di input.

Consapevolezza spaziale

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

Provider di dati del sistema di consapevolezza spaziale

Nell'esempio seguente viene illustrato l'accesso ai provider di dati mesh spaziali 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 consapevolezza spaziale 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 consapevolezza spaziale MRTK, vedere la creazione di un provider di dati del sistema di consapevolezza spaziale.

Vedi anche