System, tilläggstjänster och dataleverantörer – MRTK2
I Mixed Reality Toolkit levereras många av funktionerna i form av tjänster. Tjänsterna är indelade i tre primära kategorier: system, tilläggstjänster och dataleverantörer.
-system
System är tjänster som tillhandahåller kärnfunktionerna i Mixed Reality Toolkit. Alla system är implementeringar av IMixedRealityService
gränssnittet.
- BoundarySystem
- CameraSystem
- DiagnosticsSystem
- InputSystem
- SceneSystem
- SpatialAwarenessSystem
- TeleportSystem
Vart och ett av de listade systemen visas i mixedrealityToolkit-komponentens konfigurationsprofil.
Tillägg
Tilläggstjänster är komponenter som utökar funktionerna i Mixed Reality Toolkit. Alla tilläggstjänster måste ange att de implementerar IMixedRealityExtensionService
gränssnittet.
Information om hur du skapar tilläggstjänster finns i artikeln Tilläggstjänster .
För att vara tillgängliga för MRTK registreras och konfigureras tilläggstjänster med hjälp av avsnittet Tillägg i MixedRealityToolkit-komponentens konfigurationsprofil.
Dataprovidrar
Dataleverantörer är komponenter som per namn tillhandahåller data till en Mixed Reality Toolkit-tjänst. Alla dataleverantörer måste ange att de implementerar IMixedRealityDataProvider
gränssnittet.
Anteckning
Alla tjänster kräver inte dataprovidrar. Av Mixed Reality Toolkits system är indata- och spatialmedvetenhetssystemen de enda tjänsterna som använder dataleverantörer.
För att vara tillgängliga för den specifika MRTK-tjänsten registreras dataleverantörer i tjänstens konfigurationsprofil.
Programkoden ansluter till dataprovidrar via IMixedRealityDataProviderAccess
gränssnittet. För att förenkla åtkomsten kan dataleverantörer också hämtas via hjälpklassen CoreServices
.
var inputSimulationService = CoreServices.GetDataProvider<IInputSimulationService>(CoreServices.InputSystem);
Viktigt
Även om IMixedRealityDataProvider
ärver från IMixedRealityService
registreras inte dataprovidrar med MixedRealityServiceRegistry
. För att få åtkomst till dataleverantörer måste programkoden fråga tjänstinstansen som de registrerades för (t.ex. indatasystem).
Indata
MRTK-indatasystemet använder endast dataprovidrar som implementerar IMixedRealityInputDeviceManager
.
I följande exempel visas hur du kommer åt indatasimuleringsprovidern och växlar egenskapen SmoothEyeTracking.
IMixedRealityDataProviderAccess dataProviderAccess = CoreServices.InputSystem as IMixedRealityDataProviderAccess;
if (dataProviderAccess != null)
{
IInputSimulationService inputSimulation =
dataProviderAccess.GetDataProvider<IInputSimulationService>();
if (inputSimulation != null)
{
inputSimulation.SmoothEyeTracking = !inputSimulation.SmoothEyeTracking;
}
}
Åtkomst till en dataprovider för kärnindatasystemet kan också förenklas via hjälpklassen CoreServices
.
var inputSimulationService = CoreServices.GetInputSystemDataProvider<IInputSimulationService>();
if (inputSimulationService != null)
{
// do something here
}
Anteckning
Indatasystemet returnerar endast dataprovidrar som stöds för den plattform där programmet körs.
Information om hur du skriver en dataprovider för MRTK-indatasystemet finns i Skapa en dataprovider för indatasystem.
Rumslig medvetenhet
MRTK-systemet för rumslig medvetenhet använder endast dataprovidrar som implementerar IMixedRealitySpatialAwarenessObserver
gränssnittet.
I följande exempel visas hur du får åtkomst till registrerade dataproviders för rumsliga nät och ändrar nätens synlighet.
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;
}
}
Åtkomst till en dataleverantör för kärnsystemet för rumslig medvetenhet kan också förenklas via hjälpklassen CoreServices
.
var dataProvider = CoreServices.GetSpatialAwarenessSystemDataProvider<IMixedRealitySpatialAwarenessMeshObserver>();
if (dataProvider != null)
{
// do something here
}
Anteckning
Systemet för rumslig medvetenhet returnerar endast dataprovidrar som stöds för den plattform där programmet körs.
Information om hur du skriver en dataleverantör för MRTK-systemet för rumslig medvetenhet finns i Skapa en dataleverantör för rumslig medvetenhet.