Системы, службы расширений и поставщики данных — MRTK2
В Смешанная реальность Toolkit многие функции предоставляются в виде служб. Службы группируются в три основные категории: системы, службы расширений и поставщики данных.
системы
Системы — это службы, предоставляющие основные функциональные возможности Смешанная реальность Toolkit. Все системы являются реализациями IMixedRealityService
интерфейса .
- BoundarySystem
- CameraSystem
- DiagnosticsSystem
- InputSystem
- SceneSystem
- SpatialAwarenessSystem
- TeleportSystem
Каждая из перечисленных систем отображается в профиле конфигурации компонента MixedRealityToolkit.
Расширения
Службы расширений — это компоненты, расширяющие функциональные возможности Смешанная реальность Toolkit. Все службы расширений должны указать, что они реализуют IMixedRealityExtensionService
интерфейс .
Сведения о создании служб расширений см. в статье Службы расширений .
Чтобы получить доступ к MRTK, службы расширений регистрируются и настраиваются с помощью раздела Расширения профиля конфигурации компонента MixedRealityToolkit.
Поставщики данных
Поставщики данных — это компоненты, которые по имени предоставляют данные в службу Смешанная реальность Toolkit. Все поставщики данных должны указать, что они реализуют IMixedRealityDataProvider
интерфейс .
Примечание
Не всем службам потребуются поставщики данных. Из систем Смешанная реальность Toolkit единственными службами, использующими поставщики данных, являются системы ввода и пространственной осведомленности.
Чтобы быть доступными для конкретной службы MRTK, поставщики данных регистрируются в профиле конфигурации службы.
Код приложения обращается к поставщикам данных через IMixedRealityDataProviderAccess
интерфейс . Чтобы упростить доступ, поставщики данных также можно получить с помощью вспомогательного CoreServices
класса.
var inputSimulationService = CoreServices.GetDataProvider<IInputSimulationService>(CoreServices.InputSystem);
Важно!
Несмотря IMixedRealityDataProvider
на то, что наследуется от IMixedRealityService
, поставщики данных не регистрируются в MixedRealityServiceRegistry
. Чтобы получить доступ к поставщикам данных, код приложения должен запрашивать экземпляр службы, для которого они были зарегистрированы (например, система ввода).
Входные данные
Система ввода MRTK использует только поставщики данных, реализующие IMixedRealityInputDeviceManager
.
В следующем примере демонстрируется доступ к поставщику имитации входных данных и переключение свойства SmoothEyeTracking.
IMixedRealityDataProviderAccess dataProviderAccess = CoreServices.InputSystem as IMixedRealityDataProviderAccess;
if (dataProviderAccess != null)
{
IInputSimulationService inputSimulation =
dataProviderAccess.GetDataProvider<IInputSimulationService>();
if (inputSimulation != null)
{
inputSimulation.SmoothEyeTracking = !inputSimulation.SmoothEyeTracking;
}
}
Доступ к поставщику данных для основной системы ввода также можно упростить с помощью вспомогательного CoreServices
класса.
var inputSimulationService = CoreServices.GetInputSystemDataProvider<IInputSimulationService>();
if (inputSimulationService != null)
{
// do something here
}
Примечание
Система ввода возвращает только поставщиков данных, поддерживаемых для платформы, на которой выполняется приложение.
Сведения о записи поставщика данных для системы ввода MRTK см. в статье Создание поставщика данных системы ввода.
Отслеживание пространственного положения
Система пространственной осведомленности MRTK использует только поставщики данных, реализующие IMixedRealitySpatialAwarenessObserver
интерфейс .
В следующем примере демонстрируется доступ к зарегистрированным поставщикам данных пространственной сетки и изменение видимости сетки.
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;
}
}
Доступ к поставщику данных для основной системы пространственной осведомленности также можно упростить с помощью вспомогательного CoreServices
класса.
var dataProvider = CoreServices.GetSpatialAwarenessSystemDataProvider<IMixedRealitySpatialAwarenessMeshObserver>();
if (dataProvider != null)
{
// do something here
}
Примечание
Система пространственной осведомленности возвращает только поставщиков данных, поддерживаемых для платформы, на которой выполняется приложение.
Сведения о написании поставщика данных для системы пространственной осведомленности MRTK см. в статье Создание поставщика данных системы пространственной осведомленности.