Sistemas, servicios de extensión y proveedores de datos: MRTK2

En Mixed Reality Toolkit, muchas de las características se entregan en forma de servicios. Los servicios se agrupan en tres categorías principales: sistemas, servicios de extensión y proveedores de datos.

Sistemas

Los sistemas son servicios que proporcionan la funcionalidad básica de Mixed Reality Toolkit. Todos los sistemas son implementaciones de la IMixedRealityService interfaz .

Cada uno de los sistemas enumerados se muestra en el perfil de configuración del componente MixedRealityToolkit.

Extensiones

Los servicios de extensión son componentes que amplían la funcionalidad de Mixed Reality Toolkit. Todos los servicios de extensión deben especificar que implementen la IMixedRealityExtensionService interfaz .

Para obtener información sobre cómo crear servicios de extensión, consulte el artículo Servicios de extensión .

Para que sea accesible para MRTK, los servicios de extensión se registran y configuran mediante la sección Extensiones del perfil de configuración del componente MixedRealityToolkit.

Configuración de un servicio de extensión

Proveedores de datos

Los proveedores de datos son componentes que, por su nombre, proporcionan datos a un servicio Mixed Reality Toolkit. Todos los proveedores de datos deben especificar que implementen la IMixedRealityDataProvider interfaz .

Nota

No todos los servicios requerirán proveedores de datos. De los sistemas de Mixed Reality Toolkit, los sistemas input y spatial awareness son los únicos servicios para utilizar proveedores de datos.

Para que sea accesible para el servicio MRTK específico, los proveedores de datos se registran en el perfil de configuración del servicio.

El código de aplicación accede a los proveedores de datos a través de la IMixedRealityDataProviderAccess interfaz . Para simplificar el acceso, los proveedores de datos también se pueden recuperar a través de la CoreServices clase auxiliar.

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

Importante

Aunque IMixedRealityDataProvider hereda de , los proveedores de IMixedRealityServicedatos no se registran con .MixedRealityServiceRegistry Para acceder a los proveedores de datos, el código de aplicación debe consultar la instancia de servicio para la que se registraron (por ejemplo: sistema de entrada).

Entrada

El sistema de entrada de MRTK solo utiliza proveedores de datos que implementan .IMixedRealityInputDeviceManager

Proveedores de datos del sistema de entrada

En el ejemplo siguiente se muestra cómo obtener acceso al proveedor de simulación de entrada y alternar la propiedad SmoothEyeTracking.

IMixedRealityDataProviderAccess dataProviderAccess = CoreServices.InputSystem as IMixedRealityDataProviderAccess;

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

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

El acceso a un proveedor de datos para el sistema de entrada principal también se puede simplificar mediante el uso de la CoreServices clase auxiliar.

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

Nota

El sistema de entrada solo devuelve proveedores de datos compatibles con la plataforma en la que se ejecuta la aplicación.

Para obtener información sobre cómo escribir un proveedor de datos para el sistema de entrada de MRTK, consulte creación de un proveedor de datos del sistema de entrada.

Reconocimiento espacial

El sistema de reconocimiento espacial de MRTK solo utiliza proveedores de datos que implementan la IMixedRealitySpatialAwarenessObserver interfaz.

Proveedores de datos del sistema de reconocimiento espacial

En el ejemplo siguiente se muestra cómo acceder a los proveedores de datos de malla espacial registrados y cambiar la visibilidad de las mallas.

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

El acceso a un proveedor de datos para el sistema de reconocimiento espacial principal también se puede simplificar mediante el uso de la CoreServices clase auxiliar.

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

Nota

El sistema de reconocimiento espacial solo devuelve proveedores de datos compatibles con la plataforma en la que se ejecuta la aplicación.

Para obtener información sobre cómo escribir un proveedor de datos para el sistema de reconocimiento espacial de MRTK, consulte creación de un proveedor de datos del sistema de reconocimiento espacial.

Consulte también