MRTK2에서 MRTK3로의 개념 마이그레이션 가이드

MRTK3 사용을 시작하면 MRTK v2의 여러 개념이 변경, 대체 또는 제거되었음을 알 수 있습니다. MRTK3는 Unity의 XRI(XR Interaction Toolkit) 프레임워크를 사용하여 상호 작용을 처리하고 Unity 입력 시스템 + OpenXR을 입력에 사용하기 때문입니다. 이 문서는 MRTK v2 개념과 MRTK3 개념 간의 격차를 해소하는 데 도움이 됩니다.

중요

XRI를 처음 사용하는 개발자의 경우 먼저 Unity의 XRI 아키텍처 설명서를 검토하는 것이 좋습니다. 대부분의 상호 작용 및 입력 기능이 단순히 XRI에서 상속되기 때문에 모든 XRI 설명서는 MRTK3에도 적용됩니다.

용어

MRTK v2 용어 MRTK3 용어 Description
포인터 상호 작용기 상호 작용기상호 작용 가능 개체에서 상호 작용을 수행합니다. 일부(전부는 아님) 상호 작용기는 컨트롤러에 의해 구동되며, 컨트롤러에서 입력 동작과 포즈를 받습니다. 다른 상호 작용기는 컨트롤러와 독립적으로 작동합니다.

MRTK는 Unity가 이미 제공하는 기본 상호 작용기 외에도 유용한 혼합 현실 상호 작용을 제공하는 여러 사용자 지정 상호 작용기를 제공합니다. 사용자 지정 상호 작용기는 상속을 통해 또는 상호 작용기 인터페이스(IXRHoverInteractor, IXRSelectInteractor 등)를 구현하여 빌드할 수 있습니다. 자세한 내용은 상호 작용기 아키텍처 설명서를 참조하세요.
NearInteractionGrabbable, NearInteractionTouchable, IMixedRealityPointerHandler 상호 작용 가능 상호 작용 가능 개체는 상호 작용의 수신자입니다. MRTK는 Unity가 이미 제공하는 기본 상호 작용 가능 개체 외에도 유용한 혼합 현실 상호 작용을 제공하는 몇 가지 사용자 지정 상호 작용 가능 개체를 제공합니다. 상호 작용 가능 개체는 상속을 통해 또는 상호 작용 가능 개체 인터페이스(IXRHoverInteractable, IXRSelectInteractable 등)를 구현하여 빌드할 수 있습니다. MRTK가 XRI 상호 작용 가능 개체를 확장하는 방법에 대한 자세한 내용은 상호 작용 가능 아키텍처 설명서를 참조하세요.
컨트롤러 컨트롤러 ActionBasedController는 특정 디바이스와 연결된 바인딩을 나타내는 Unity 입력 작업 컬렉션입니다. ActionBasedControllers와 기본 입력 디바이스 간에 1:1 관계가 없기 때문에 입력 작업 컬렉션은 여러 디바이스에서 파생될 수 있습니다. (DeviceBasedController는 입력 디바이스의 1:1 매핑이지만 사용하지 않습니다.)

많은 상호 작용기(특히 ControllerBasedInteractor)는 입력 작업을 위해 컨트롤러를 수신합니다. 즉, XRController 아래의 모든 ControllerBasedInteractor는 동일한 선택 작업을 공유합니다.
시스템 텔레포트 보행 시스템 보행 시스템을 사용하면 XR 환경 중에 사용자가 장면을 이동할 수 있습니다. MRTK v2의 시스템은 기본 텔레포테이션 및 텔레포트 핫스폿을 허용하며 텔레포트 커서 및 포인터 동작에 대한 높은 수준의 사용자 지정 기능을 제공합니다. XRI는 보행을 위해 다음과 같은 추가 기능을 제공합니다.
  • 고정된 각도로 리그를 회전시키는 Snap Turn Provider(스냅 턴 공급자)
  • 시간이 지남에 따라 장비를 부드럽게 회전시키는 Continuous Turn Provider(연속 턴 공급자)
  • 시간이 지남에 따라 리그를 원활하게 이동하는 Continuous Move Provider(연속 이동 공급자)
Focus Provider(포커스 공급자) XR 상호 작용 매니저 XRInteractionManager는 장면의 상호 작용기상호 작용 가능 개체 사이에서 중개자 역할을 하는 Unity 메커니즘입니다. Unity XRInteractionManager는 상호 작용기와 상호 작용 가능 개체 간의 모든 상호 작용을 동기화하고 중재하며 레거시 Focus Provider와 비교할 때 훨씬 더 큰 유연성을 허용합니다.
Pointer Mediator(포인터 중재자) 상호 작용 모드 관리자 새로운 상호 작용 모드 관리자는 장면 내의 컨텍스트에 따라 일련의 상호 작용기를 사용/사용하지 않도록 설정하는 데 사용됩니다. 자세한 내용은 모드 관리자 설명서를 참조하세요.
SceneQuerymask 상호 작용 계층 XRI 상호 작용 계층을 통해 개발자는 어떤 상호 작용기가 어떤 상호 작용 가능 개체에 대해 작업할 수 있는지 필터링할 수 있습니다. 이러한 계층은 Unity 물리 계층과 다릅니다.
포커스 가리키기 Interactor는 상호 작용 가능 개체가 Interactor의 유효한 대상일 때 상호 작용 가능 개체에 호버를 실행합니다. 일반적으로 호버는 광선으로 대상 지정, 잡기 위한 손 근접 또는 사용자가 개체를 보고 있는 경우와 같은 상호 작용기의 의도를 나타냅니다.
선택/찌르기/잡기/음성 등 선택 상호 작용기는 상호 작용 가능 개체가 유효한 대상이고 상호 작용기가 그렇게 하기로 선택한 경우 상호 작용 가능 개체에서 Selects를 발급합니다. ControllerBasedInteractors는 일반적으로 해당 컨트롤러의 선택 입력 작업이 실행될 때 Selects를 내보냅니다. 다른 상호 작용기는 대상 상호 작용 가능 개체에 Selects를 발급해야 하는 시기를 결정하기 위해 더 복잡한 논리를 가질 수 있습니다.

MRTK v2는 별도의 이벤트 및 코드 경로를 사용하여 다양한 종류의 상호 작용을 처리했습니다. 즉, 잡기는 별도의 시스템에서 생성되는 광선 클릭 또는 찌르기와는 근본적으로 다른 상호 작용입니다. MRTK3에서는 개체를 "선택"하는 이러한 모든 방법이 동일한 선택 상호 작용으로 통합되었습니다.

개발자가 특정 형식의 상호 작용에 의존하는 상호 작용 논리를 빌드하는 것을 강력히 권장하지 않습니다. 대신 모든 Selects에 일반적으로 응답하는 일반화 가능한 코드를 빌드합니다. 이런 식으로 상호 작용은 모든 입력 양식에서 작동하며, 아직 개발되지 않은 상호 작용 형식에도 적용됩니다. 이 과정을 권장하지 않는 이유에 대한 자세한 내용은 상호 작용 가능 아키텍처를 참조하세요.
해당 없음 활성화 활성화는 이미 선택된 개체에 대해 수행할 수 있는 추가 작업입니다. 예를 들어, 사용자가 컨트롤러 잡기를 사용하여 분출총을 선택하면 트리거가 활성화 동작으로 발사합니다.
데이터 공급자 XRSubsystem + 공급자 Unity 입력 시스템 및 OpenXR이 대부분의 플랫폼 간 입력 작업을 처리하므로 대부분의 데이터 공급자는 MRTK3에서 더 이상 필요하지 않습니다. 그러나 아직 Unity에서 다루지 않는 일부 이상값의 경우 HandsAggregatorSubsystemSpeechSubsystem과 같은 다양한 플랫폼에서 데이터를 제공할 수 있는 XRSubsystem을 제공합니다. Microsoft의 하위 시스템 방법에 대한 자세한 개념 정보는 하위 시스템 아키텍처 설명서를 참조하세요.

이벤트

MRTK v2 용어 XRI 용어 참고
OnFocusEnter/Exit FirstHoverEnter
LastHoverExit
FirstLast 접두사를 기록해 두세요. 여러 상호 작용기가 동시에 상호 작용 개체를 가리킬 수 있으므로 이러한 항목이 이벤트 이름에 포함됩니다. 전체 가리키기 상태를 모니터링하는 것보다 덜 유용하지만 HoverEnterHoverExit를 사용하여 각 개별 가리키기 입력/종료를 수신 대기할 수도 있습니다.
OnPointerDown/Up FirstSelectEnter
LastSelectExit
FirstLast 접두사를 기록해 두세요. 선택 모드에 따라 여러 상호 작용기가 동시에 상호 작용 개체를 선택할 수 있기 때문에 이러한 항목이 이벤트 이름에 포함됩니다. 전체 선택 상태를 모니터링하는 것보다 덜 유용하지만 SelectEnterSelectExit를 사용하여 각 개별 선택 입력/종료를 들을 수도 있습니다.
OnPointerDragged 해당 없음 선택하는 동안 GetAttachTransform을 사용하여 interactorsSelecting 첨부 변환을 폴링하기만 하면 됩니다. 상호 작용 가능 개체의 선택 모드에 따라 무한한 수의 상호 작용기가 상호 작용 가능 개체를 선택(및 조작)할 수 있음을 명심합니다.
OnSourcePoseChanged, OnSourceDetected, OnSourceLost 해당 없음 XRI는 이러한 이벤트를 발생시키지 않습니다. 연결된 입력 디바이스를 모니터링하는 XRController를 통해 처리됩니다.