Systemy, usługi rozszerzeń i dostawcy danych — MRTK2
W Mixed Reality Toolkit wiele funkcji jest dostarczanych w formie usług. Usługi są pogrupowane w trzy główne kategorie: systemy, usługi rozszerzeń i dostawców danych.
Systemy
Systemy to usługi, które zapewniają podstawowe funkcje zestawu narzędzi Mixed Reality Toolkit. Wszystkie systemy są implementacjami interfejsu IMixedRealityService
.
- BoundarySystem
- CameraSystem
- DiagnosticsSystem
- InputSystem
- SceneSystem
- SpatialAwarenessSystem
- TeleportSystem
Każdy z wymienionych systemów jest widoczny w profilu konfiguracji składnika MixedRealityToolkit.
Rozszerzenia
Usługi rozszerzeń to składniki rozszerzające funkcjonalność zestawu narzędzi Mixed Reality Toolkit. Wszystkie usługi rozszerzeń muszą określać, że implementują IMixedRealityExtensionService
interfejs.
Aby uzyskać informacje na temat tworzenia usług rozszerzeń, zapoznaj się z artykułem Usługi rozszerzeń .
Aby zapewnić dostęp do zestawu narzędzi MRTK, usługi rozszerzeń są rejestrowane i konfigurowane przy użyciu sekcji Rozszerzenia profilu konfiguracji składnika MixedRealityToolkit.
Dostawcy danych
Dostawcy danych to składniki, które zgodnie z ich nazwą dostarczają dane do usługi Mixed Reality Toolkit. Wszyscy dostawcy danych muszą określić, że implementują IMixedRealityDataProvider
interfejs.
Uwaga
Nie wszystkie usługi będą wymagać dostawców danych. Spośród systemów Mixed Reality Toolkit systemy wprowadzania danych i rozpoznawania przestrzennego to jedyne usługi do korzystania z dostawców danych.
Aby zapewnić dostęp do określonej usługi MRTK, dostawcy danych są zarejestrowani w profilu konfiguracji usługi.
Kod aplikacji uzyskuje dostęp do dostawców danych za pośrednictwem interfejsu IMixedRealityDataProviderAccess
. Aby uprościć dostęp, dostawcy danych można również pobrać za pośrednictwem CoreServices
klasy pomocnika.
var inputSimulationService = CoreServices.GetDataProvider<IInputSimulationService>(CoreServices.InputSystem);
Ważne
Mimo że IMixedRealityDataProvider
dziedziczy z IMixedRealityService
elementu , dostawcy danych nie są zarejestrowani w obiekcie MixedRealityServiceRegistry
. Aby uzyskać dostęp do dostawców danych, kod aplikacji musi wykonywać zapytania dotyczące wystąpienia usługi, dla którego zostały zarejestrowane (np. system wejściowy).
Dane wejściowe
System wejściowy zestawu narzędzi MRTK korzysta tylko z dostawców danych, którzy implementują element IMixedRealityInputDeviceManager
.
W poniższym przykładzie pokazano uzyskiwanie dostępu do dostawcy symulacji danych wejściowych i przełączanie właściwości SmoothEyeTracking.
IMixedRealityDataProviderAccess dataProviderAccess = CoreServices.InputSystem as IMixedRealityDataProviderAccess;
if (dataProviderAccess != null)
{
IInputSimulationService inputSimulation =
dataProviderAccess.GetDataProvider<IInputSimulationService>();
if (inputSimulation != null)
{
inputSimulation.SmoothEyeTracking = !inputSimulation.SmoothEyeTracking;
}
}
Dostęp do dostawcy danych dla podstawowego systemu wejściowego można również uprościć za pomocą CoreServices
klasy pomocnika.
var inputSimulationService = CoreServices.GetInputSystemDataProvider<IInputSimulationService>();
if (inputSimulationService != null)
{
// do something here
}
Uwaga
System wejściowy zwraca tylko dostawców danych obsługiwanych przez platformę, na której działa aplikacja.
Aby uzyskać informacje na temat pisania dostawcy danych dla systemu wejściowego zestawu narzędzi MRTK, zobacz tworzenie dostawcy danych systemu wejściowego.
Świadomość przestrzenna
System rozpoznawania przestrzennego zestawu narzędzi MRTK korzysta tylko z dostawców danych, którzy implementują IMixedRealitySpatialAwarenessObserver
interfejs.
W poniższym przykładzie pokazano, jak uzyskać dostęp do zarejestrowanych dostawców danych siatki przestrzennej i zmienić widoczność siatki.
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;
}
}
Dostęp do dostawcy danych dla podstawowego systemu rozpoznawania przestrzennego można również uprościć za pomocą klasy pomocniczej CoreServices
.
var dataProvider = CoreServices.GetSpatialAwarenessSystemDataProvider<IMixedRealitySpatialAwarenessMeshObserver>();
if (dataProvider != null)
{
// do something here
}
Uwaga
System rozpoznawania przestrzennego zwraca tylko dostawców danych obsługiwanych dla platformy, na której działa aplikacja.
Aby uzyskać informacje na temat pisania dostawcy danych dla systemu rozpoznawania przestrzennego zestawu narzędzi MRTK, zobacz tworzenie dostawcy danych systemu rozpoznawania przestrzennego.