Системы, службы расширений и поставщики данных — MRTK2

В наборе средств Смешанная реальность многие функции предоставляются в виде служб. Службы сгруппированы по трем основным категориям: системы, службы расширений и поставщики данных.

системы

Системы — это службы, которые предоставляют основные функциональные возможности набора средств Смешанная реальность. Все системы являются реализациями IMixedRealityService интерфейса.

Каждая из перечисленных систем отображается в профиле конфигурации компонента MixedRealityToolkit.

Модули

Службы расширений — это компоненты, расширяющие функциональные возможности набора средств Смешанная реальность. Все службы расширений должны указывать, что они реализуют IMixedRealityExtensionService интерфейс.

Сведения о создании служб расширений см. в статье о службах расширений .

Для доступа к MRTK службы расширений регистрируются и настраиваются с помощью раздела "Расширения" профиля конфигурации компонента MixedRealityToolkit.

Configuring an extension service

Поставщики данных

Поставщики данных — это компоненты, которые по их имени предоставляют данные службе Смешанная реальность Toolkit. Все поставщики данных должны указать, что они реализуют IMixedRealityDataProvider интерфейс.

Примечание

Не все службы требуют поставщиков данных. Из систем Смешанная реальность Toolkit системы ввода и пространственной осведомленности являются единственными службами для использования поставщиков данных.

Чтобы быть доступным для конкретной службы MRTK, поставщики данных регистрируются в профиле конфигурации службы.

Код приложения обращается к поставщикам данных через IMixedRealityDataProviderAccess интерфейс. Чтобы упростить доступ, поставщики данных также можно получить с помощью вспомогательного CoreServices класса.

var inputSimulationService = CoreServices.GetDataProvider<IInputSimulationService>(CoreServices.InputSystem);

Важно!

Хотя IMixedRealityDataProvider наследуется от IMixedRealityService, поставщики данных не регистрируются в .MixedRealityServiceRegistry Чтобы получить доступ к поставщикам данных, код приложения должен запросить экземпляр службы, для которого они были зарегистрированы (например, систему ввода).

Входные данные

Система ввода MRTK использует только поставщиков данных, реализующих .IMixedRealityInputDeviceManager

Input system data providers

В следующем примере демонстрируется доступ к поставщику моделирования входных данных и переключение свойства 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 интерфейс.

Spatial awareness system data providers

В следующем примере показано, как получить доступ к зарегистрированным поставщикам данных пространственной сетки и изменить видимость сетки.

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 см. в статье о создании поставщика данных системы пространственной осведомленности.

См. также статью