MRTK2 프로필 구성 가이드

Mixed Reality 도구 키트는 도구 키트를 관리하는 데 필요한 구성을 최대한 많이 중앙 집중화합니다(진정한 런타임 "things"제외).

이 가이드는 현재 도구 키트에 사용할 수 있는 각 구성 프로필 화면에 대한 간단한 연습입니다.

기본 Mixed Reality 도구 키트 구성 프로필

장면의 MixedRealityToolkit GameObject에 연결된 기본 구성 프로필은 프로젝트의 도구 키트에 대한 기본 진입점을 제공합니다.

참고

Mixed Reality 도구 키트는 기본 구성 화면을 "잠금"하여 항상 프로젝트에 대한 공통 시작점을 갖도록 하고 프로젝트가 발전함에 따라 사용자 고유의 설정을 정의하는 것이 좋습니다. MRTK 구성은 재생 모드 중에 편집할 수 없습니다.

MRTK 구성 프로필

Mixed Reality 도구 키트에 대한 모든 "기본" 프로필은 Assets/MRTK/SDK/Profiles 폴더의 SDK 프로젝트에서 찾을 수 있습니다.

중요

DefaultHoloLens2ConfigurationProfile은 HoloLens 2 최적화되어 있습니다. 자세한 내용은 프로필을 참조하세요.

기본 Mixed Reality 도구 키트 구성 프로필을 열면 검사기에서 다음 화면이 표시됩니다.

MRTK 구성 장면

장면에서 MixedRealityToolkit 없이 MixedRealityToolkitConfigurationProfile 자산을 선택하면 MRTK가 자동으로 장면을 설정할지 묻는 메시지가 표시됩니다. 선택 사항입니다. 그러나 모든 구성 화면에 액세스하려면 장면에 활성 MixedRealityToolkit 개체가 있어야 합니다.

프로젝트에 대한 현재 활성 런타임 구성이 저장됩니다.

여기에서 다음을 포함하여 MRTK에 대한 모든 구성 프로필로 이동할 수 있습니다.

이러한 구성 프로필은 관련 섹션에서 아래에 자세히 설명되어 있습니다.


환경 설정

기본 Mixed Reality 도구 키트 구성 페이지에 있는 이 설정은 프로젝트에 대한 Mixed Reality 환경 확장의 기본 작업을 정의합니다.

Experiance 설정

카메라 설정

카메라 설정은 Mixed Reality 프로젝트에 대해 카메라를 설정하는 방법을 정의하여 일반 클리핑, 품질 및 투명도 설정을 정의합니다.

카메라 프로필

입력 시스템 설정

Mixed Reality 프로젝트는 기본적으로 선택된 프로젝트 주변의 모든 입력 이벤트를 라우팅하기 위한 강력하고 잘 학습된 입력 시스템을 제공합니다.

입력 시스템 설정 1

MRTK에서 제공하는 입력 시스템 뒤에는 여러 다른 시스템이 있으며, 다중 플랫폼/혼합 현실 프레임워크의 복잡성을 추상화하는 데 필요한 복잡한 직조를 구동하고 관리하는 데 도움이 됩니다.

입력 시스템 설정 2

각 개별 프로필은 아래에 자세히 설명되어 있습니다.


경계 시각화 설정

경계 시스템은 기본 플랫폼 경계/보호 시스템에 의해 보고된 인식된 경계를 변환합니다. 경계 시각화 도우미 구성을 사용하면 사용자의 위치를 기준으로 장면 내에서 기록된 경계를 자동으로 표시할 수 있습니다. 또한 경계는 사용자가 장면 내에서 텔레포트하는 위치에 따라 반응/업데이트됩니다.

경계 시각화 설정

텔레포트 시스템 선택

Mixed Reality 프로젝트는 기본적으로 선택된 프로젝트에서 텔레포트 이벤트를 관리하기 위한 완전한 기능을 갖춘 텔레포트 시스템을 제공합니다.

Teleport 시스템 설정

공간 인식 설정

Mixed Reality 프로젝트는 기본적으로 선택된 프로젝트에서 공간 검색 시스템을 사용하기 위해 다시 빌드된 공간 인식 시스템을 제공합니다.

공간 인식 설정 1

Mixed Reality 도구 키트 공간 인식 구성을 사용하면 애플리케이션이 자동으로 시작되는지 또는 나중에 프로그래밍 방식으로 시작할지 여부와 보기 필드의 익스텐트를 설정하여 시스템이 시작되는 방식을 조정할 수 있습니다.

또한 메시 및 표면 설정을 구성하여 프로젝트가 주변 환경을 이해하는 방법을 추가로 사용자 지정할 수 있습니다.

이는 스캔된 환경을 제공할 수 있는 디바이스에만 적용됩니다.

공간 인식 설정 2

진단 설정

MRTK의 선택적이지만 매우 유용한 기능은 플러그 인 진단 기능입니다.

진단 설정

진단 프로필은 프로젝트가 실행되는 동안 모니터링할 수 있는 몇 가지 간단한 시스템을 제공합니다. 여기에는 장면에서 디스플레이 패널을 사용하거나 사용하지 않도록 설정하는 편리한 켜기/끄기 스위치가 포함됩니다.

진단 설정 시스템 설정 2

장면 시스템 설정

MRTK는 복잡한 가산 장면 로드/언로드를 관리하는 데 도움이 되는 이 선택적 서비스를 제공합니다. 장면 시스템이 프로젝트에 적합한지 여부를 결정하려면 장면 시스템 시작 가이드를 참조하세요.

장면 시스템 설정 1

추가 서비스 설정

Mixed Reality 도구 키트의 고급 영역 중 하나는 프레임워크에 "서비스"를 등록할 수 있는 서비스 로케이터 패턴 구현입니다. 이렇게 하면 프레임워크를 새로운 기능/시스템으로 쉽게 확장할 수 있을 뿐만 아니라 프로젝트가 이러한 기능을 활용하여 자체 런타임 구성 요소를 등록할 수도 있습니다.

등록된 모든 서비스는 MonoBehaviour 또는 어설픈 싱글톤 패턴을 구현하는 데 드는 오버헤드와 비용 없이 모든 Unity 이벤트를 최대한 활용할 수 있습니다. 이를 통해 포그라운드 및 백그라운드 프로세스(예: 시스템 생성, 런타임 게임 논리 또는 거의 모든 것)를 실행하기 위한 장면 오버헤드가 없는 순수 C# 구성 요소를 사용할 수 있습니다.

추가 시스템 설정

입력 작업 설정

입력 작업은 런타임 프로젝트의 물리적 상호 작용 및 입력을 추상화할 수 있는 방법을 제공합니다. 모든 물리적 입력(컨트롤러/손/마우스/등)은 런타임 프로젝트에서 사용하기 위한 논리적 입력 작업으로 변환됩니다. 이렇게 하면 입력의 원본에 관계없이 프로젝트에서 이러한 작업을 장면에서 "수행할 작업" 또는 "상호 작용"으로 구현합니다.

새 입력 작업을 만들려면 "새 작업 추가" 단추를 클릭하고 표시되는 항목에 대한 친숙한 텍스트 이름을 입력하면 됩니다. 그런 다음 동작이 전달하기 위한 축(데이터 형식)만 선택하거나 물리적 컨트롤러의 경우 연결할 수 있는 실제 입력 형식을 선택해야 합니다. 예를 들면 다음과 같습니다.

축 제약 조건 데이터 형식 Description 예제 사용
없음 데이터 없음 빈 작업 또는 이벤트에 사용됩니다. 이벤트 트리거
원시(예약됨) object 나중에 사용하도록 예약되어 있습니다. 해당 없음
디지털 bool 부울 켜기 또는 끄기 형식 데이터 컨트롤러 단추
단일 축 float 단일 정밀도 데이터 값 범위 입력(예: 트리거)
이중 축 Vector2 여러 축에 대한 이중 부동 소수자 형식 날짜 Dpad 또는 Thumbstick
Dof 위치 3개 Vector3 부동 소수자 축이 3개인 위치 형식 데이터 3D 위치 스타일 전용 컨트롤러
Dof 회전 3개 Quaternion 4개 부동 축이 있는 회전 전용 입력 3도 스타일 컨트롤러(예: 오큘러스 Go 컨트롤러)
식스 도프 Mixed Reality 포즈(Vector3, Quaternion) Vector3 및 Quaternion 구성 요소가 모두 포함된 위치 및 회전 스타일 입력 동작 컨트롤러 또는 포인터

입력 작업을 활용하는 이벤트는 물리적 컨트롤러로 제한되지 않으며, 런타임 효과가 새 작업을 생성하도록 프로젝트 내에서 계속 활용할 수 있습니다.

참고

입력 작업은 런타임에 편집할 수 없는 몇 안 되는 구성 요소 중 하나이며 디자인 타임 구성에만 해당합니다. 각 작업에 대해 생성된 ID에 대한 프레임워크(및 프로젝트) 종속성으로 인해 프로젝트가 실행되는 동안에는 이 프로필을 교환해서는 안 됩니다.

구성 프로필

입력 작업 규칙

입력 작업 규칙은 하나의 입력 작업에 대해 발생한 이벤트를 해당 데이터 값에 따라 다른 작업으로 자동으로 변환하는 방법을 제공합니다. 프레임워크 내에서 원활하게 관리되며 성능 비용이 발생하지 않습니다.

예를 들어 DPad의 단일 이중 축 입력 이벤트를 4개의 해당 "Dpad Up" / "DPad Down" / "Dpad Left" / "Dpad Right" 작업으로 변환합니다(아래 이미지와 같이).

사용자 고유의 코드에서도 이 작업을 수행할 수 있습니다. 그러나 이 패턴이 매우 일반적인 패턴인 것을 볼 때 프레임워크는 이 작업을 "기본 제공"하는 메커니즘을 제공합니다.

사용 가능한 입력 축에 대해 입력 작업 규칙을 구성할 수 있습니다. 그러나 한 축 형식의 입력 동작을 동일한 축 형식의 다른 입력 동작으로 변환할 수 있습니다. 이중 축 동작을 다른 이중 축 동작에 매핑할 수 있지만 디지털 또는 없음 동작에는 매핑할 수 없습니다.

입력 작업 규칙 프로필


포인터 구성

포인터는 입력 장치에서 장면의 대화형 작업을 구동하는 데 사용되며, 장면의 모든 개체(충돌체가 연결되어 있거나 UI 구성 요소)를 사용하여 방향과 적중 테스트를 모두 제공합니다. 포인터는 기본적으로 컨트롤러, 헤드셋(응시/포커스) 및 마우스/터치 입력에 대해 자동으로 구성됩니다.

포인터는 Mixed Reality 도구 키트에서 제공하는 여러 줄 구성 요소 중 하나를 사용하거나 MRTK IMixedRealityPointer 인터페이스를 구현하는 경우 사용자 고유의 요소를 사용하여 활성 장면 내에서 시각화할 수도 있습니다.

입력 포인터 프로필
  • 포인팅 익스텐트: 응시를 비롯한 모든 포인터의 전역 포인팅 익스텐트 결정
  • 포인팅 레이캐스트 레이어 마스크: 레이캐스트할 레이어 포인터를 결정합니다.
  • 그리기 포인팅 광선 디버그: 광선 캐스팅에 사용되는 광선을 시각화하기 위한 디버그 도우미입니다.
  • 그리기 포인팅 광선 색 디버그: 시각화에 사용할 색 집합입니다.
  • 응시 커서 프리팹: 모든 장면에 대해 전역 응시 커서를 쉽게 지정할 수 있습니다.

필요한 경우 응시에 대한 특정 값을 재정의하기 위해 응시 공급자로 빠르게 이동하는 추가 도우미 단추가 있습니다.


제스처 구성

제스처는 다양한 SDK(예: HoloLens)에서 제공하는 다양한 "제스처" 입력 메서드에 입력 작업을 할당할 수 있는 시스템별 구현입니다.

참고

현재 제스처 구현은 HoloLens 전용이며 나중에 도구 키트에 추가될 때 다른 시스템에 대해 향상됩니다(아직 날짜 없음).

제스처 구성

음성 명령

제스처와 마찬가지로 일부 런타임 플랫폼은 Unity 프로젝트에서 수신할 수 있는 명령을 생성할 수 있는 지능형 "음성 텍스트 변환" 기능도 제공합니다. 이 구성 프로필을 사용하면 다음을 구성할 수 있습니다.

  1. 일반 설정 - 자동 시작 또는 수동 시작으로 설정된 "시작 동작"은 입력 시스템 시작 시 KeywordRecognizer를 초기화할지 또는 프로젝트에서 KeywordRecognizer를 초기화할 시기를 결정하도록 할지를 결정합니다. Unity의 KeywordRecognizer API를 초기화하는 데 "인식 신뢰 수준"이 사용됩니다.
  2. 음성 명령 - "단어"를 등록하고 프로젝트에서 수신할 수 있는 입력 작업으로 변환합니다. 필요한 경우 키보드 작업에 연결할 수도 있습니다.

중요

이 시스템은 현재 Windows 10 플랫폼에서 실행되는 경우에만 음성을 지원합니다(예: HoloLens 및 Windows 10 데스크톱). 향후 MRTK에 추가될 때 다른 시스템에 대해 개선될 예정입니다(아직 날짜 없음).

구성 프로필 화면

컨트롤러 매핑 구성

Mixed Reality 도구 키트의 핵심 구성 화면 중 하나는 프로젝트에서 활용할 수 있는 다양한 유형의 컨트롤러를 구성하고 매핑하는 기능입니다.

아래 구성 화면에서는 도구 키트에서 현재 인식되는 컨트롤러를 구성할 수 있습니다.

컨트롤러 매핑

MRTK는 다음 컨트롤러/시스템에 대한 기본 구성을 제공합니다.

  • 마우스(3D 공간 마우스 지원 포함)
  • 터치 스크린
  • Xbox 컨트롤러
  • Windows Mixed Reality 컨트롤러
  • HoloLens 제스처
  • HTC Vive wand 컨트롤러
  • 오큘러스 터치 컨트롤러
  • Oculus 원격 컨트롤러
  • 일반 OpenVR 디바이스(고급 사용자만 해당)

미리 빌드된 컨트롤러 시스템의 이미지를 클릭하면 해당하는 모든 입력에 대해 단일 입력 작업을 구성할 수 있습니다. 예를 들어 아래의 Oculus Touch 컨트롤러 구성 화면을 참조하세요.

컨트롤러 구성 화면

위에서 식별되지 않은 다른 OpenVR 또는 Unity 입력 컨트롤러를 구성하기 위한 고급 화면도 있습니다.


컨트롤러 시각화 설정

컨트롤러 매핑 외에도 장면 내에서 컨트롤러가 표시되는 방식을 사용자 지정하기 위해 별도의 구성 프로필이 제공됩니다.

이는 "전역"(특정 손에 대한 컨트롤러의 모든 인스턴스) 또는 개별 컨트롤러 유형/핸드에 한정하여 구성할 수 있습니다.

MRTK는 Windows Mixed Reality 및 OpenVR에 대한 네이티브 SDK 컨트롤러 모델도 지원합니다. 이러한 항목은 장면에 GameObjects로 로드되고 플랫폼의 컨트롤러 추적을 사용하여 배치됩니다.

장면의 컨트롤러 표현을 실제 컨트롤러 위치에서 오프셋해야 하는 경우 컨트롤러 모델의 프리팹에 대해 오프셋을 설정하기만 하면 됩니다(예: 오프셋 위치로 컨트롤러 프리팹의 변환 위치 설정).

시각화 프로필

편집기 유틸리티

다음 유틸리티는 편집기에서만 작동하며 개발 생산성을 향상시키는 데 유용합니다.

MRTK 편집기 구성 유틸리티

서비스 검사기

서비스 검사자는 활성 서비스를 나타내는 장면 내 개체를 생성하는 편집기 전용 기능입니다. 이러한 개체를 선택하면 설명서 링크, 편집기 시각화 제어 및 서비스 상태에 대한 인사이트를 제공하는 검사기가 표시됩니다.

서비스 검사기

구성 프로필의 편집기 설정에서 서비스 검사기 사용을 확인하여 서비스 검사기를 사용하도록 설정할 수 있습니다.

깊이 버퍼 렌더러

일부 혼합 현실 플랫폼과 깊이 버퍼를 공유하면 홀로그램 안정화가 향상될 수 있습니다. 예를 들어 Windows Mixed Reality 플랫폼은 프레임을 렌더링하는 데 걸리는 시간 동안의 미묘한 머리 움직임을 고려하여 픽셀당 렌더링된 장면을 수정할 수 있습니다. 그러나 이러한 기술에는 정확한 데이터가 포함된 깊이 버퍼가 필요하며, 기하 도형이 사용자로부터 얼마나 멀리 떨어져 있는지를 알 수 있습니다.

장면에서 필요한 모든 데이터를 깊이 버퍼로 렌더링하도록 개발자는 구성 프로필의 편집기 설정에서 렌더링 깊이 버퍼 기능을 전환할 수 있습니다. 그러면 현재 깊이 버퍼를 가져와서 후처리 효과를 DepthBufferRenderer주 카메라에 적용하여 장면 보기에 색으로 렌더링합니다.

렌더링 깊이 버퍼 유틸리티장면의 파란색 실린더에는 ZWrite가 꺼진 재질이 있으므로 깊이 데이터가 기록되지 않습니다.

런타임 시 프로필 변경

런타임에 프로필을 업데이트할 수 있으며 일반적으로 다음과 같은 두 가지 시나리오와 시간이 있습니다.

  1. 사전 MRTK 초기화 프로필 스위치: 시작 시 MRTK가 초기화되고 프로필이 활성화되기 전에 아직 사용되지 않는 프로필을 대체하여 디바이스 기능에 따라 다른 기능을 사용하거나 사용하지 않도록 설정합니다. 예를 들어 공간 매핑 하드웨어가 없는 VR에서 환경이 실행되는 경우 공간 매핑 구성 요소를 사용하도록 설정하는 것은 의미가 없을 수 있습니다.
  2. 활성 프로필 스위치: 시작 후 MRTK가 초기화되고 프로필이 활성화된 후 현재 사용 중인 프로필을 교환하여 특정 기능의 동작 방식을 변경합니다. 예를 들어 애플리케이션에서 원거리 포인터를 완전히 제거하려는 특정 하위 환경이 있을 수 있습니다.

MRTK 초기화 프로필 전환 전

이 작업은 MRTK 초기화 전에 실행되는 MonoBehaviour(아래 예제)를 연결하여 수행할 수 있습니다(예: Awake()). 스크립트 실행 순서 설정을 통해 수행할 수 있는 스크립트(예: 호출SetProfileBeforeInitialization)를 스크립트보다 MixedRealityToolkit 일찍 실행해야 합니다.

using Microsoft.MixedReality.Toolkit;
using UnityEngine;

/// <summary>
/// Sample MonoBehaviour that will run before the MixedRealityToolkit object, and change
/// the profile, so that when MRTK initializes it uses the profile specified below
/// rather than the one that is saved in its scene.
/// </summary>
/// <remarks>
/// Note that this script must have a higher priority in the script execution order compared
/// to that of MixedRealityToolkit.cs. See https://docs.unity3d.com/Manual/class-MonoManager.html
/// for more information on script execution order.
/// </remarks>
public class PreInitProfileSwapper : MonoBehaviour
{

    [SerializeField]
    private MixedRealityToolkitConfigurationProfile profileToUse = null;

    private void Awake()
    {
        // Here you could choose any arbitrary MixedRealityToolkitConfigurationProfile (for example, you could
        // add some platform checking code here to determine which profile to load).
        MixedRealityToolkit.SetProfileBeforeInitialization(profileToUse);
    }
}

"profileToUse" 대신 특정 플랫폼에 적용되는 임의의 프로필 집합(예: HoloLens 1, VR용, HoloLens 2용 프로필 등)이 있을 수 있습니다. 로드할 프로필을 파악하기 위해 다양한 다른 표시기(예: https://docs.unity3d.com/ScriptReference/SystemInfo.html카메라가 불투명/투명한지 여부)를 사용할 수 있습니다.

활성 프로필 스위치

활성 프로필을 대체하는 새 프로필로 속성을 설정 MixedRealityToolkit.Instance.ActiveProfile 하여 이 작업을 수행할 수 있습니다.

MixedRealityToolkit.Instance.ActiveProfile = profileToUse;

런타임 중에 설정하는 ActiveProfile 경우 현재 실행 중인 서비스의 삭제는 모든 서비스의 마지막 LateUpdate() 이후에 발생하며, 새 프로필과 연결된 서비스의 인스턴스화 및 초기화는 모든 서비스의 첫 번째 Update() 전에 발생합니다.

이 프로세스 중에 눈에 띄는 애플리케이션 주저가 발생할 수 있습니다. 또한 스크립트보다 우선 순위가 높은 스크립트는 MixedRealityToolkit 새 프로필이 제대로 설정되기 전에 업데이트를 입력할 수 있습니다. 스크립트 우선 순위에 대한 자세한 내용은 스크립트 실행 순서 설정을 참조하세요.

프로필 전환 프로세스에서 기존 UI 카메라는 변경되지 않은 상태로 유지되므로 전환 후에도 캔버스가 필요한 Unity UI 구성 요소가 계속 작동합니다.

참고 항목