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 .
- BoundarySystem
- CameraSystem
- DiagnosticsSystem
- InputSystem
- SceneSystem
- SpatialAwarenessSystem
- TeleportSystem
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.
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 IMixedRealityService
datos 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
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.
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.