시스템, 확장 서비스 및 데이터 공급자 - MRTK2

Mixed Reality 도구 키트에서는 많은 기능이 서비스 형태로 제공됩니다. 서비스는 시스템, 확장 서비스 및 데이터 공급자의 세 가지 기본 범주로 그룹화됩니다.

시스템

시스템은 Mixed Reality 도구 키트의 핵심 기능을 제공하는 서비스입니다. 모든 시스템은 인터페이스의 구현입니다 IMixedRealityService .

나열된 각 시스템은 MixedRealityToolkit 구성 요소의 구성 프로필에 표시됩니다.

확장

확장 서비스는 Mixed Reality 도구 키트의 기능을 확장하는 구성 요소입니다. 모든 확장 서비스는 인터페이스를 구현 IMixedRealityExtensionService 할 것을 지정해야 합니다.

확장 서비스를 만드는 방법에 대한 자세한 내용은 확장 서비스 문서를 참조하세요.

MRTK에 액세스할 수 있도록 확장 서비스는 MixedRealityToolkit 구성 요소 구성 프로필의 확장 섹션을 사용하여 등록되고 구성됩니다.

확장 서비스 구성

데이터 공급자

데이터 공급자는 이름에 따라 Mixed Reality Toolkit 서비스에 데이터를 제공하는 구성 요소입니다. 모든 데이터 공급자는 인터페이스를 구현 IMixedRealityDataProvider 할 것을 지정해야 합니다.

참고

모든 서비스에 데이터 공급자가 필요한 것은 아닙니다. Mixed Reality 도구 키트 시스템 중에서 입력 및 공간 인식 시스템은 데이터 공급자를 활용하는 유일한 서비스입니다.

특정 MRTK 서비스에 액세스할 수 있도록 데이터 공급자는 서비스의 구성 프로필에 등록됩니다.

애플리케이션 코드는 인터페이스를 통해 데이터 공급자에 IMixedRealityDataProviderAccess 액세스합니다. 액세스를 간소화하기 위해 도우미 클래스를 통해 데이터 공급자를 CoreServices 검색할 수도 있습니다.

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

중요

는 에서 IMixedRealityService상속되지만 IMixedRealityDataProvider 데이터 공급자는 에 등록되지 MixedRealityServiceRegistry않습니다. 데이터 공급자에 액세스하려면 애플리케이션 코드가 등록된 서비스 instance 쿼리해야 합니다(예: 입력 시스템).

입력

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 공간 인식 시스템에 대한 데이터 공급자를 작성하는 방법에 대한 자세한 내용은 공간 인식 시스템 데이터 공급자 만들기를 참조하세요.

추가 정보