MRTK 101: 일반적인 공간 상호 작용에 Mixed Reality Toolkit Unity를 사용하는 방법MRTK 101: How to use Mixed Reality Toolkit Unity for common spatial interactions

MRTK

MRTK를 사용하여 혼합 현실에서 가장 널리 사용되는 일반적인 상호 작용 패턴을 구현하는 방법에 대해 알아봅니다.Learn about how to use MRTK to achieve some of the most widely used common interaction patterns in mixed reality.

  • Unity 편집기에서 입력 상호 작용을 시뮬레이션하는 방법How to simulate input interactions in Unity editor?
  • 개체를 잡고 움직이는 방법How to grab and move an object?
  • 개체 크기를 조정하는 방법How to resize an object?
  • 정밀도를 사용하여 개체를 이동하거나 회전하는 방법How to move or rotate an object with precision?
  • 개체에서 입력 이벤트에 응답하도록 설정하는 방법How to make an object respond to input events?
  • 시각적 피드백을 추가하는 방법How to add visual feedback?
  • 오디오 피드백을 추가하는 방법How to add audio feedback?
  • HoloLens 2 스타일 단추 프리팹을 사용하는 방법How to use HoloLens 2 style button prefabs?
  • 개체에서 사용자를 따르도록 설정하는 방법How to make an object follow you?
  • 개체에서 사용자를 향하도록 설정하는 방법How to make an object face you?

참고

이 문서는 MRTK v2.5.1 릴리스의 변경 내용을 반영하도록 업데이트되었습니다.This article has been updated to reflect the changes in MRTK v2.5.1 release

이 페이지의 모든 콘텐츠는 Unity 편집기에서 MRTK의 입력 시뮬레이션을 사용하여 테스트할 수 있습니다.All contents in this page can be tested in Unity editor with MRTK's Input Simulation. 아직 설치하지 않은 경우 MRTK 설치 가이드(GitHub)에 따라 최신 버전의 MRTK를 설치하세요.If you haven't, follow MRTK Installation Guide (GitHub) to install the latest version of MRTK.

Unity 편집기에서 입력 상호 작용을 시뮬레이션하는 방법How to simulate input interactions in Unity editor?

MRTK는 편집기 내 입력 시뮬레이션을 지원합니다.MRTK supports in-editor input simulation. Unity의 재생 단추를 클릭하여 장면을 실행한 후 다음 키를 사용하여 입력을 시뮬레이트합니다.Run your scene by clicking Unity's play button, then use the following keys to simulate input:

  • W, A, S, D 키를 눌러 카메라를 이동합니다.Press W, A, S, D keys to move the camera.
  • 마우스 오른쪽 단추를 누른 채 마우스를 움직여 주위를 둘러봅니다.Hold the right mouse button and move the mouse to look around.
  • 스페이스 바(오른손) 또는 왼쪽 Shift 키(왼손)를 눌러 시뮬레이션된 손을 불러옵니다.Press Space bar(Right hand) or left Shift key(Left hand) to bring up the simulated hands
  • 보기에서 시뮬레이션된 손을 유지하려면 T 또는 Y 키를 누릅니다.Press T or Y keys to keep simulated hands in view
  • Q 또는 E(수평) / R 또는 F(수직)를 눌러 시뮬레이션된 손을 회전합니다.Press Q or E(horizontal) / R or F(vertical) to rotate simulated hands

MRTK 문서에서 입력 시뮬레이션에 대해 자세히 알아볼 수 있습니다.You can learn more about Input Simulation in the MRTK documentation.

개체를 잡고 움직이는 방법How to grab and move an object?

ObjectManipulator.csNearInteractionGrabbable.cs 스크립트를 첨부하여 개체를 잡을 수 있도록 합니다.Attach the ObjectManipulator.cs and NearInteractionGrabbable.cs scripts to make an object grabbable. ObjectManipulator는 근거리 및 원거리 상호 작용을 모두 지원합니다.ObjectManipulator supports both near and far interactions. HoloLens 2의 관절 있는 손 추적 입력(근거리), 손 광선(원거리), 모션 컨트롤러의 빔(원거리), HoloLens 응시 커서 및 에어 탭(원거리)을 사용하여 개체를 잡고 이동할 수 있습니다.You can grab and move an object with HoloLens 2's articulated hand tracking input(near), hand ray(far), motion controller's beam(far), and HoloLens gaze cursor and air-tap(far).


NearInteractionGrabbable and ObjectManipulator.cs assigned to an object


NearInteractionGrabbable and ObjectManipulator.cs assigned to an object for grab and move

개체 크기를 조정하는 방법How to resize an object?

ObjectManipulator.cs 는 양손 크기 조정/회전을 지원합니다.ObjectManipulator.cs supports two-handed scale/rotation. 스크립트는 HoloLens 2의 관절 있는 손 입력, HoloLens 1의 응시 + 제스처 입력, Windows Mixed Reality 몰입형 헤드셋의 모션 컨트롤러 입력과 같은 다양한 입력 유형에서 작동합니다.The script works with various input types, such as HoloLens 2's articulated hand input, HoloLens 1's gaze + gesture input, and Windows Mixed Reality immersive headset's motion controller input.


NearInteractionGrabbable and ObjectManipulator.cs assigned to an object for manipulation

정밀도를 사용하여 개체를 이동하거나 회전하는 방법How to move or rotate an object with precision?

개체의 크기를 조정하고 회전하는 인터페이스인 경계 상자를 사용하는 개체에 BoundsControl.cs 를 할당합니다.Assign BoundsControl.cs to an object to use Bounding Box, which is the interface for scaling and rotating an object. 기본적으로 HoloLens 1 스타일 파란색 핸들 및 선이 표시됩니다.By default, it shows HoloLens 1 style blue handles and wires. HoloLens 2 스타일 근접 기반 애니메이션 핸들을 사용하려면 프리팹과 재질을 할당해야 합니다.To use HoloLens 2 style proximity-based animated handles, you need to assign prefabs and materials.


BoundsControl.cs assigned to an object image


BoundsControl.cs assigned to an object gif

개체에서 입력 이벤트에 응답하도록 설정하는 방법How to make an object respond to input events?

PointerHandler.cs 를 개체에 할당합니다.Assign PointerHandler.cs to an object. 검사기에서 OnPointerDown(), OnPointerUp(), OnPointerClicked(), OnPointerDragged() 이벤트를 사용할 수 있습니다. 스크립트에서 이러한 이벤트를 사용하려면 IMixedRealityPointerHandler 를 구현합니다.In the inspector, you can use events OnPointerDown(), OnPointerUp(), OnPointerClicked(), OnPointerDragged() To use these events in a script, implement IMixedRealityPointerHandler.


PointerHandler.cs assigned to an object image

시각적 피드백을 추가하는 방법How to add visual feedback?

Interactable.cs 를 개체에 할당합니다.Assign Interactable.cs to an object. 검사기에서 대상 개체를 추가하고 새 테마를 만듭니다.In the inspector, add target object and create a new theme. Interactable의 테마 프로필을 사용하면 시각적 피드백을 사용 가능한 모든 입력 상호 작용 상태에 쉽게 추가할 수 있습니다.Using Interactable's theme profiles, you can easily add visual feedback to all available input interaction states.


Image of PointerHandler.cs assigned to an object


Interactable gif

Interactable은 상호 작용 상태에 따라 셰이더의 속성을 제어할 수 있는 셰이더 테마를 포함하여 다양한 유형의 테마를 제공합니다.Interactable provides various types of themes including the shader theme, which allows you to control properties of the shader per interaction state.

시각적 피드백에 대한 또 다른 중요한 구성 요소는 MRTK 표준 셰이더 입니다.Another important building block for visual feedback is the MRTK Standard Shader. MRTK 표준 셰이더를 사용하면 시각적 피드백 효과(예: 호버 조명, 근접 조명)를 쉽게 추가할 수 있습니다.With MRTK Standard Shader, you can easily add visual feedback effects such as hover light and proximity light. MRTK 표준 셰이더는 Unity 표준 셰이더보다 적은 계산을 수행하므로 성능이 뛰어난 환경을 만들 수 있습니다.Since MRTK Standard shader performs less computation than the Unity Standard shader, you can create a performant experience.

새 재질을 만들고, 'Mixed Reality Toolkit > 표준' 셰이더를 선택합니다.Create a new material and select the Shader 'Mixed Reality Toolkit > Standard'. 또는 MRTK 표준 셰이더를 사용하는 기존 재질 중 하나를 선택할 수 있습니다.Or you can pick one of the existing materials that use MRTK Standard Shader.


MRTK Standard Shader image 1

MRTK Standard Shader image 2

MRTK Standard Shader image 3

오디오 피드백을 추가하는 방법How to add audio feedback?

AudioSource 를 개체에 추가합니다.Add AudioSource to an object. 그런 다음, 입력 이벤트를 공개하는 스크립트(예: Interactable.cs 또는 PointerHandler.cs)에서 AudioSource가 있는 개체를 이벤트에 할당하고, AudioSource.PlayOneShot() 을 선택합니다.Then, in the scripts that expose input events(e.g. Interactable.cs or PointerHandler.cs), assign the object with AudioSource to the event and select AudioSource.PlayOneShot(). 오디오 클립을 사용하거나 MRTK의 오디오 자산 중에서 하나를 선택할 수 있습니다.You can use your audio clips or choose one from MRTK's audio assets.


Audio Source assigned to an object. AudioSource.PlayOneShot configured in the Interactable's OnPress() and OnRelease() events.

HoloLens 2 스타일 단추 프리팹을 사용하는 방법How to use HoloLens 2 style button prefabs?

MRTK는 근접 조명, 압축 상자, 사용자의 신뢰도를 높이는 단추 표면의 잔물결 효과와 같은 시각적 피드백을 포함하여 다양한 유형의 HoloLens 2의 셸(OS) 스타일 단추를 제공합니다.MRTK provides various types of HoloLens 2's shell (OS) style buttons, including visual feedback like proximity light, compressing box, and a ripple effect on the button surface that improve the user's confidence.


Interactable button

HoloLens 2 스타일의 누를 수 있는 단추 프리팹 중 하나를 장면에 끌어서 놓습니다.Drag and drop one of the HoloLens 2 style pressable button prefab into your scene. 프리팹은 위에서 소개한 Interactable.cs를 사용합니다.The prefab uses Interactable.cs introduced above. Interactable의 OnClick()과 같은 공개된 이벤트를 사용하여 작업을 트리거할 수 있습니다.You can use exposed events such as OnClick() in the Interactable to trigger actions.


HoloLens 2 Button Prefab

개체에서 사용자를 따르도록 설정하는 방법How to make an object follow you?

RadialView.cs 또는 Follow.cs 스크립트를 개체에 할당합니다.Assign RadialView.cs or Follow.cs script to an object. 3D 공간에서 다양한 유형의 개체 위치 지정을 구현할 수 있는 Solver 스크립트 시리즈의 일부입니다.It's part of the Solver script series that allows you to achieve various types of object positioning in 3D space. SolverHandler.cs 가 자동으로 추가됩니다.SolverHandler.cs will be automatically added. 다음은 HoloLens 셸의 [시작] 메뉴와 마찬가지로 '지연 팔로우(lazy follow)' tag-along 동작을 구현하기 위한 RadialView 구성의 예입니다.Below is an example of RadialView configuration to achieve 'lazy follow' tag-along behavior just like the Start menu in the HoloLens shell. 최소/최대 거리 및 최소/최대 보기 각도를 지정할 수 있습니다.You can specify the minimum/maximum distance and minimum/maximum view degrees. 아래 예에서는 개체의 위치를 15° 이내에서 0.4-0.8m 범위를 지정합니다.The example below shows positioning the object between 0.4 m and 0.8-m range within 15°. 위치를 더 빠르거나 더 느리게 업데이트하려면 선형 보간 시간(Lerp Time) 값을 조정합니다.Adjust Lerp Time values to make the positional update faster or slower.


MRTK Standard Shader for solver


Interactable radial solver

개체에서 사용자를 향하도록 설정하는 방법How to make an object face you?

Billboard.cs 스크립트를 개체에 할당합니다.Assign Billboard.cs script to an object. 사용자가 어디에 있든 항상 사용자를 향합니다.It will always face you, whatever your position. 피벗 축 옵션을 지정할 수 있습니다.You can specify the pivot axis option.


Image of Billboard.cs script assigned to an object with Pivot Axis option Y


Billboard.cs script assigned to an object with Pivot Axis option Y

놀라운 혼합 현실 환경을 만들 준비가 되었나요?Ready to create amazing experiences for mixed reality? 아래 페이지를 방문하여 MRTK와 혼합 현실에 대해 자세히 알아보세요.Visit the pages below and learn more about MRTK and mixed reality.

작성자 정보About the author

Picture of Dong Yoon Park Dong Yoon ParkDong Yoon Park
UX 디자이너 @MicrosoftUX Designer @Microsoft

참조See also