Systèmes, services d’extension et fournisseurs de données — MRTK2
Dans Mixed Reality Toolkit, de nombreuses fonctionnalités sont fournies sous forme de services. Les services sont regroupés en trois catégories principales : systèmes, services d’extension et fournisseurs de données.
Systèmes
Les systèmes sont des services qui fournissent les fonctionnalités de base de Mixed Reality Toolkit. Tous les systèmes sont des implémentations de l’interface IMixedRealityService
.
- BoundarySystem
- CameraSystem
- DiagnosticsSystem
- InputSystem
- SceneSystem
- SpatialAwarenessSystem
- TeleportSystem
Chacun des systèmes répertoriés est exposé dans le profil de configuration du composant MixedRealityToolkit.
Extensions
Les services d’extension sont des composants qui étendent les fonctionnalités de Mixed Reality Toolkit. Tous les services d’extension doivent spécifier qu’ils implémentent l’interface IMixedRealityExtensionService
.
Pour plus d’informations sur la création de services d’extension, reportez-vous à l’article Services d’extension .
Pour être accessibles au MRTK, les services d’extension sont inscrits et configurés à l’aide de la section Extensions du profil de configuration du composant MixedRealityToolkit.
Fournisseurs de données
Les fournisseurs de données sont des composants qui, selon leur nom, fournissent des données à un service Mixed Reality Toolkit. Tous les fournisseurs de données doivent spécifier qu’ils implémentent l’interface IMixedRealityDataProvider
.
Notes
Tous les services n’auront pas besoin de fournisseurs de données. Parmi les systèmes de Mixed Reality Toolkit, les systèmes d’entrée et de sensibilisation spatiale sont les seuls services à utiliser des fournisseurs de données.
Pour être accessibles au service MRTK spécifique, les fournisseurs de données sont inscrits dans le profil de configuration du service.
Le code d’application accède aux fournisseurs de données via l’interface IMixedRealityDataProviderAccess
. Pour simplifier l’accès, les fournisseurs de données peuvent également être récupérés via la classe d’assistance CoreServices
.
var inputSimulationService = CoreServices.GetDataProvider<IInputSimulationService>(CoreServices.InputSystem);
Important
Bien qu’hérite IMixedRealityDataProvider
de IMixedRealityService
, les fournisseurs de données ne sont pas inscrits auprès de MixedRealityServiceRegistry
. Pour accéder aux fournisseurs de données, le code d’application doit interroger le service instance pour lequel ils ont été inscrits (par exemple, système d’entrée).
Entrée
Le système d’entrée MRTK utilise uniquement les fournisseurs de données qui implémentent le IMixedRealityInputDeviceManager
.
L’exemple suivant montre comment accéder au fournisseur de simulation d’entrée et activer la propriété SmoothEyeTracking.
IMixedRealityDataProviderAccess dataProviderAccess = CoreServices.InputSystem as IMixedRealityDataProviderAccess;
if (dataProviderAccess != null)
{
IInputSimulationService inputSimulation =
dataProviderAccess.GetDataProvider<IInputSimulationService>();
if (inputSimulation != null)
{
inputSimulation.SmoothEyeTracking = !inputSimulation.SmoothEyeTracking;
}
}
L’accès à un fournisseur de données pour le système d’entrée principal peut également être simplifié via l’utilisation de la classe d’assistance CoreServices
.
var inputSimulationService = CoreServices.GetInputSystemDataProvider<IInputSimulationService>();
if (inputSimulationService != null)
{
// do something here
}
Notes
Le système d’entrée retourne uniquement les fournisseurs de données pris en charge pour la plateforme sur laquelle l’application s’exécute.
Pour plus d’informations sur l’écriture d’un fournisseur de données pour le système d’entrée MRTK, consultez Création d’un fournisseur de données de système d’entrée.
Reconnaissance spatiale
Le système de reconnaissance spatiale MRTK utilise uniquement les fournisseurs de données qui implémentent l’interface IMixedRealitySpatialAwarenessObserver
.
L’exemple suivant illustre l’accès aux fournisseurs de données de maillage spatial inscrits et la modification de la visibilité des maillages.
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’accès à un fournisseur de données pour le système de reconnaissance spatiale de base peut également être simplifié via l’utilisation de la classe d’assistance CoreServices
.
var dataProvider = CoreServices.GetSpatialAwarenessSystemDataProvider<IMixedRealitySpatialAwarenessMeshObserver>();
if (dataProvider != null)
{
// do something here
}
Notes
Le système de reconnaissance spatiale retourne uniquement les fournisseurs de données pris en charge pour la plateforme sur laquelle l’application s’exécute.
Pour plus d’informations sur l’écriture d’un fournisseur de données pour le système de sensibilisation spatiale MRTK, consultez Création d’un fournisseur de données de système de sensibilisation spatiale.