Share via


システム、拡張機能サービス、およびデータ プロバイダー — MRTK2

Mixed Reality Toolkit では、多くの機能がサービスの形式で提供されます。 これらのサービスは、システム、拡張サービス、データ プロバイダーの 3 つの主要なカテゴリにグループ化されています。

システム

システムは、Mixed Reality Toolkit のコア機能を提供するサービスです。 すべてのシステムは、IMixedRealityService インターフェイスの実装です。

一覧表示されている各システムは、MixedRealityToolkit コンポーネントの構成プロファイルに表示されます。

拡張機能

拡張機能サービスは、Mixed Reality Toolkit の機能を拡張するコンポーネントです。 すべての拡張サービスで、IMixedRealityExtensionService インターフェイスの実装が指定されている必要があります。

拡張サービスの作成に関する詳細については、「拡張サービス」の記事を参照してください。

MRTK からアクセスできるようにするために、拡張サービスは、MixedRealityToolkit コンポーネントの構成プロファイルの「拡張機能」セクションを使用して登録および構成されます。

拡張機能サービスの構成

データ プロバイダー

データ プロバイダーは、その名前のとおり、データを Mixed Reality Toolkit サービスに提供するコンポーネントです。 すべてのデータ プロバイダーで、IMixedRealityDataProvider インターフェイスの実装が指定されている必要があります。

Note

すべてのサービスでデータ プロバイダーが必要になるわけではありません。 Mixed Reality Toolkit のシステムのうち、入力と空間認識システムは、データ プロバイダーを利用する唯一のサービスです。

特定の MRTK サービスからアクセスできるようにするために、データ プロバイダーはサービスの構成プロファイルに登録されます。

アプリケーション コードは、IMixedRealityDataProviderAccess インターフェイスを介してデータ プロバイダーにアクセスします。 アクセスを容易にするために、CoreServices ヘルパー クラスを使用してデータ プロバイダーを取得することもできます。

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

重要

IMixedRealityDataProviderIMixedRealityService から継承されますが、データ プロバイダーは 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
}

Note

入力システムは、アプリケーションが実行されているプラットフォームでサポートされているデータ プロバイダーのみ返します。

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
}

Note

空間認識システムは、アプリケーションが実行されているプラットフォームでサポートされているデータ プロバイダーのみ返します。

MRTK 空間認識システム用のデータ プロバイダーの作成については、「空間認識システム データ プロバイダーの作成」を参照してください。

関連項目