MR 입력 210: 응시MR Input 210: Gaze

참고

Mixed Reality 아카데미 자습서는 HoloLens(1세대) 및 Mixed Reality 몰입형 헤드셋을 염두에 두고 설계되었습니다.The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. 따라서 이러한 디바이스 개발에 대한 지침을 계속 찾고 있는 개발자를 위해 이러한 자습서를 그대로 두는 것이 중요합니다.As such, we feel it is important to leave these tutorials in place for developers who are still looking for guidance in developing for those devices. 이러한 자습서는 HoloLens 2에 사용되는 최신 도구 집합 또는 상호 작용으로 업데이트되지 않습니다.These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. 대신 지원되는 디바이스에서 계속 작동하도록 유지 관리됩니다.They will be maintained to continue working on the supported devices. HoloLens 2에 대한 새로운 자습서 시리즈가 게시되었습니다.A new series of tutorials has been posted for HoloLens 2.

응시 는 첫 번째 입력 형태 이며 사용자의 의도 및 인식을 표시 합니다.Gaze is the first form of input and reveals the user's intent and awareness. MR 입력 210 (즉, 프로젝트 탐색기)은 Windows Mixed Reality의 응시 관련 개념을 자세히 설명 합니다.MR Input 210 (aka Project Explorer) is a deep dive into gaze-related concepts for Windows Mixed Reality. 앱이 사용자의 응시에 대해 알고 있는 기능을 최대한 활용 하 여 커서 및 holograms에 상황별 인식을 추가할 예정입니다.We will be adding contextual awareness to our cursor and holograms, taking full advantage of what your app knows about the user's gaze.

여기에는 응시 개념을 배우는 데 도움이 되는 친숙 한 astronaut 있습니다.We have a friendly astronaut here to help you learn gaze concepts. MR 기본 101에는 방금 응시 한 간단한 커서가 있었습니다.In MR Basics 101, we had a simple cursor that just followed your gaze. 지금은 간단한 커서를 넘어 단계를 이동 하 고 있습니다.Today we're moving a step beyond the simple cursor:

  • 커서와 holograms를 설정 하는 중입니다. 사용자가 찾고 있는 위치에 따라 또는 사용자가 찾고 있지 않은 위치에 따라 변경 됩니다.We're making the cursor and our holograms gaze-aware: both will change based on where the user is looking - or where the user is not looking. 이렇게 하면 컨텍스트를 인식 합니다.This makes them context-aware.
  • 사용자에 게 대상에 대 한 추가 컨텍스트를 제공 하는 커서 및 holograms에 피드백을 추가 합니다.We will add feedback to our cursor and holograms to give the user more context on what is being targeted. 이 피드백은 오디오 및 시각적 개체 일 수 있습니다.This feedback can be audio and visual.
  • 사용자가 더 작은 대상에 도달 하는 데 도움이 되는 기술 대상을 보여 드리겠습니다.We'll show you targeting techniques to help users hit smaller targets.
  • 방향 표시기를 사용 하 여 holograms에 사용자의 주의를 그리는 방법을 보여 드리겠습니다.We'll show you how to draw the user's attention to your holograms with a directional indicator.
  • 전 세계에서 이동할 때 사용자와 holograms 하는 기술을 가르쳐 드리겠습니다.We'll teach you techniques to take your holograms with the user as she moves around in your world.

중요

아래 각 장에 포함 된 비디오는 이전 버전의 Unity 및 혼합 현실 도구 키트를 사용 하 여 기록 되었습니다.The videos embedded in each of the chapters below were recorded using an older version of Unity and the Mixed Reality Toolkit. 단계별 지침은 정확 하 고 최신 상태 이지만 최신의 비디오에서 스크립트 및 시각적 개체를 볼 수 있습니다.While the step-by-step instructions are accurate and current, you may see scripts and visuals in the corresponding videos that are out-of-date. Posterity에 대 한 비디오는 포함 되어 있지만 적용 되는 개념은 그대로 유지 됩니다.The videos remain included for posterity and because the concepts covered still apply.

디바이스 지원Device support

과정Course HoloLensHoloLens 몰입형 헤드셋Immersive headsets
MR 입력 210: 응시MR Input 210: Gaze ✔️✔️ ✔️✔️

시작하기 전에Before you start

필수 구성 요소Prerequisites

프로젝트 파일Project files

  • 프로젝트에 필요한 파일 을 다운로드 합니다.Download the files required by the project. Unity 2017.2 이상이 필요 합니다.Requires Unity 2017.2 or later.
  • 바탕 화면 또는 기타 쉬운 위치에 파일을 보관 하지 않습니다.Un-archive the files to your desktop or other easy to reach location.

참고

다운로드 하기 전에 소스 코드를 확인 하려는 경우 GitHub에서 사용할 수있습니다.If you want to look through the source code before downloading, it's available on GitHub.

정오표 및 참고 사항Errata and Notes

  • Visual Studio에서 코드의 중단점을 적중 하려면 도구->옵션->디버깅에서 "내 코드만"을 사용 하지 않도록 설정 (선택 취소) 해야 합니다.In Visual Studio, "Just My Code" needs to be disabled (unchecked) under Tools->Options->Debugging in order to hit breakpoints in your code.

1 장-Unity 설치Chapter 1 - Unity Setup

목표Objectives

  • HoloLens 개발을 위해 Unity를 최적화합니다.Optimize Unity for HoloLens development.
  • 자산을 가져오고 장면을 설정합니다.Import assets and setup the scene.
  • HoloLens에서 astronaut를 확인 합니다.View the astronaut in the HoloLens.

지침Instructions

  1. Unity를 시작합니다.Start Unity.
  2. 새 프로젝트 를 선택합니다.Select New Project.
  3. 프로젝트 이름을 Modelexplorer 로 합니다.Name the project ModelExplorer.
  4. 이전에 보관 하지 않은 응시 폴더로 위치를 입력 합니다.Enter location as the Gaze folder you previously un-archived.
  5. 프로젝트가 3D 로 설정되어 있는지 확인합니다.Make sure the project is set to 3D.
  6. 프로젝트 만들기 를 클릭 합니다.Click Create Project.

HoloLens 용 Unity 설정Unity settings for HoloLens

내보내려는 앱이 2D 보기 대신 몰입 형 보기 를 만들어야 한다고 Unity에 알려야 합니다.We need to let Unity know that the app we are trying to export should create an immersive view instead of a 2D view. HoloLens를 가상 현실 장치로 추가 하 여이 작업을 수행 합니다.We do that by adding HoloLens as a virtual reality device.

  1. 편집 > 프로젝트 설정 > 플레이어 로 이동 합니다.Go to Edit > Project Settings > Player.
  2. 플레이어 설정에 대 한 검사기 패널 에서 Windows 스토어 아이콘을 선택 합니다.In the Inspector Panel for Player Settings, select the Windows Store icon.
  3. XR 설정 그룹을 확장합니다.Expand the XR Settings group.
  4. 렌더링 섹션에서 가상 현실 지원 확인란을 선택하여 새 가상 현실 SDK 목록을 추가합니다.In the Rendering section, check the Virtual Reality Supported checkbox to add a new Virtual Reality SDKs list.
  5. 목록에 Windows Mixed Reality 가 나타나는지 확인합니다.Verify that Windows Mixed Reality appears in the list. 그렇지 않은 경우 + 목록 아래쪽의 단추를 선택 하 고 Windows Holographic 를 선택 합니다.If not, select the + button at the bottom of the list and choose Windows Holographic.

다음으로, scripting 백 엔드를 .NET으로 설정 해야 합니다.Next, we need to set our scripting backend to .NET.

  1. 편집 > 프로젝트 설정 > 플레이어 로 이동 합니다 (이전 단계에서이 작업을 계속 진행할 수 있음).Go to Edit > Project Settings > Player (you may still have this up from the previous step).
  2. 플레이어 설정에 대 한 검사기 패널 에서 Windows 스토어 아이콘을 선택 합니다.In the Inspector Panel for Player Settings, select the Windows Store icon.
  3. 기타 설정 구성 섹션에서 Scripting 백 엔드가 .net 으로 설정 되어 있는지 확인 합니다.In the Other Settings Configuration section, make sure that Scripting Backend is set to .NET

마지막으로, HoloLens에서 빠른 성능을 얻기 위해 품질 설정을 업데이트 합니다.Finally, we'll update our quality settings to achieve a fast performance on HoloLens.

  1. 편집 > 프로젝트 설정 > 품질 로 이동 합니다.Go to Edit > Project Settings > Quality.
  2. Windows 스토어 아이콘 아래의 기본 행에 있는 아래쪽 화살표를 클릭 합니다.Click on downward pointing arrow in the Default row under the Windows Store icon.
  3. Windows 스토어 앱 에 대해 매우 낮음 을 선택 합니다.Select Very Low for Windows Store Apps.

프로젝트 자산 가져오기Import project assets

  1. 프로젝트 패널에서 자산 폴더를 마우스 오른쪽 단추로 클릭 합니다.Right click the Assets folder in the Project panel.
  2. 패키지 가져오기 > 사용자 지정 패키지 를 클릭 합니다.Click on Import Package > Custom Package.
  3. 다운로드 한 프로젝트 파일로 이동 하 고 unitypackage 를 클릭 합니다.Navigate to the project files you downloaded and click on ModelExplorer.unitypackage.
  4. 열기 를 클릭합니다.Click Open.
  5. 패키지가 로드 되 면 가져오기 단추를 클릭 합니다.After the package loads, click on the Import button.

장면 설정Setup the scene

  1. 계층에서 주 카메라 를 삭제 합니다.In the Hierarchy, delete the Main Camera.
  2. HoloToolkit 폴더에서 입력 폴더를 열고 Prefabs 폴더를 엽니다.In the HoloToolkit folder, open the Input folder, then open the Prefabs folder.
  3. MixedRealityCameraParent Prefab를 Prefabs 폴더에서 계층 으로 끌어 놓습니다.Drag and drop the MixedRealityCameraParent prefab from the Prefabs folder into the Hierarchy.
  4. 계층에서 방향 광원 을 마우스 오른쪽 단추로 클릭 하 고 삭제 를 선택 합니다.Right-click the Directional Light in the Hierarchy and select Delete.
  5. Holograms 폴더에서 다음 자산을 계층 의 루트에 끌어 놓습니다.In the Holograms folder, drag and drop the following assets into the root of the Hierarchy:
    • AstroManAstroMan
    • 조명Lights
    • SpaceAudioSourceSpaceAudioSource
    • SpaceBackgroundSpaceBackground
  6. 재생 모드 를 시작 하 ▶ astronaut를 봅니다.Start Play Mode ▶ to view the astronaut.
  7. 재생 모드 ▶ 다시 클릭 하 여 중지 합니다.Click Play Mode ▶ again to Stop.
  8. Holograms 폴더에서 fitbox 자산을 찾아 계층 의 루트로 끌어옵니다.In the Holograms folder, find the Fitbox asset and drag it to the root of the Hierarchy.
  9. 계층 패널에서 fitbox 를 선택 합니다.Select the Fitbox in the Hierarchy panel.
  10. 계층 에서 AstroMan 컬렉션을 검사기 패널의 fitbox에 있는 홀로그램 컬렉션 속성으로 끌어 옵니다.Drag the AstroMan collection from the Hierarchy to the Hologram Collection property of the Fitbox in the Inspector panel.

프로젝트를 저장 합니다.Save the project

  1. 새 장면: 파일을 저장 하 > 장면을 저장 합니다.Save the new scene: File > Save Scene As.
  2. 새 폴더 를 클릭 하 고 폴더 이름을 장면 으로 합니다.Click New Folder and name the folder Scenes.
  3. 파일 이름을 "Modelexplorer"로 하 고 해당 파일을 백그라운드 폴더에 저장 합니다.Name the file “ModelExplorer” and save it in the Scenes folder.

프로젝트 빌드Build the project

  1. Unity에서 파일 > 빌드 설정 을 선택 합니다.In Unity, select File > Build Settings.
  2. 열려 있는 장면 추가 를 클릭 하 여 장면을 추가 합니다.Click Add Open Scenes to add the scene.
  3. 플랫폼 목록에서 유니버설 Windows 플랫폼 을 선택 하 고 플랫폼 전환 을 클릭 합니다.Select Universal Windows Platform in the Platform list and click Switch Platform.
  4. 특별히 HoloLens를 개발 하는 경우 대상 장치hololens 로 설정 합니다.If you're specifically developing for HoloLens, set Target device to HoloLens. 그렇지 않으면 모든 장치 에 그대로 둡니다.Otherwise, leave it on Any device.
  5. 빌드 형식이 D3D 로 설정 되 고 sdk최신 버전 으로 설정 되어 있는지 확인 합니다 (sdk 16299 이상 이어야 함).Ensure Build Type is set to D3D and SDK is set to Latest installed (which should be SDK 16299 or newer).
  6. 빌드 를 클릭한 다음Click Build.
  7. "App" 이라는 새 폴더 를 만듭니다.Create a New Folder named "App".
  8. 단일 폴더를 클릭 합니다.Single click the App folder.
  9. 폴더 선택 을 누릅니다.Press Select Folder.

Unity가 완료 되 면 파일 탐색기 창이 표시 됩니다.When Unity is done, a File Explorer window will appear.

  1. 폴더를 엽니다.Open the App folder.
  2. 모델 탐색기 Visual Studio 솔루션 을 엽니다.Open the ModelExplorer Visual Studio Solution.

HoloLens에 배포 하는 경우:If deploying to HoloLens:

  1. Visual Studio의 맨 위 도구 모음을 사용 하 여 대상을 디버그에서 릴리스 로, ARM에서 x 86 으로 변경 합니다.Using the top toolbar in Visual Studio, change the target from Debug to Release and from ARM to x86.
  2. 로컬 컴퓨터 단추 옆에 있는 드롭다운 화살표를 클릭 하 고 원격 컴퓨터 를 선택 합니다.Click on the drop down arrow next to the Local Machine button, and select Remote Machine.
  3. HoloLens 장치 IP 주소 를 입력 하 고 인증 모드를 유니버설 (암호화 되지 않은 프로토콜) 로 설정 합니다.Enter your HoloLens device IP address and set Authentication Mode to Universal (Unencrypted Protocol). 선택 을 클릭합니다.Click Select. 장치 IP 주소를 모르는 경우 네트워크 & 인터넷 > 고급 옵션 > 설정 을 참조 하세요.If you do not know your device IP address, look in Settings > Network & Internet > Advanced Options.
  4. 상단 메뉴 모음에서 디버그-> 디버깅 하지 않고 시작 을 클릭 하거나 ctrl + F5 를 누릅니다.In the top menu bar, click Debug -> Start Without debugging or press Ctrl + F5. 처음으로 장치에 배포 하는 경우에는 Visual Studio와 쌍으로 연결 해야 합니다.If this is the first time deploying to your device, you will need to pair it with Visual Studio.
  5. 앱이 배포 되 면 선택 제스처로 fitbox 를 해제 합니다.When the app has deployed, dismiss the Fitbox with a select gesture.

모던 헤드셋에 배포 하는 경우:If deploying to an immersive headset:

  1. Visual Studio의 맨 위 도구 모음을 사용 하 여 대상을 디버그에서 릴리스 로, ARM에서 x 64 로 변경 합니다.Using the top toolbar in Visual Studio, change the target from Debug to Release and from ARM to x64.
  2. 배포 대상이 로컬 컴퓨터 로 설정 되었는지 확인 합니다.Make sure the deployment target is set to Local Machine.
  3. 상단 메뉴 모음에서 디버그-> 디버깅 하지 않고 시작 을 클릭 하거나 ctrl + F5 를 누릅니다.In the top menu bar, click Debug -> Start Without debugging or press Ctrl + F5.
  4. 앱이 배포 되 면 동작 컨트롤러에서 트리거를 당겨 Fitbox 를 해제 합니다.When the app has deployed, dismiss the Fitbox by pulling the trigger on a motion controller.

2 장-커서 및 대상 피드백Chapter 2 - Cursor and target feedback

목표Objectives

  • 커서 비주얼 디자인 및 동작입니다.Cursor visual design and behavior.
  • 응시 기반 커서 피드백입니다.Gaze-based cursor feedback.
  • 응시 기반 홀로그램 피드백입니다.Gaze-based hologram feedback.

다음은 몇 가지 커서 디자인 원칙에 대 한 작업의 기반입니다.We're going to base our work on some cursor design principles, namely:

  • 커서는 항상 표시 됩니다.The cursor is always present.
  • 커서를 너무 작거나 크게 표시 하지 않습니다.Don't let the cursor get too small or big.
  • 방해 하지 않는지 콘텐츠를 방지 합니다.Avoid obstructing content.

지침Instructions

  1. HoloToolkit\Input\Prefabs 폴더에서 inputmanager 자산을 찾습니다.In the HoloToolkit\Input\Prefabs folder, find the InputManager asset.
  2. Inputmanager계층 구조 에 끌어다 놓습니다.Drag and drop the InputManager onto the Hierarchy.
  3. HoloToolkit\Input\Prefabs 폴더에서 커서 자산을 찾습니다.In the HoloToolkit\Input\Prefabs folder, find the Cursor asset.
  4. 커서계층 으로 끌어다 놓습니다.Drag and drop the Cursor onto the Hierarchy.
  5. 계층 에서 inputmanager 개체를 선택 합니다.Select the InputManager object in the Hierarchy.
  6. 계층커서 개체를 검사기 의 맨 아래에 있는 Inputmanager의 simplesinglepointerselector 필드로 끕니다. Drag the Cursor object from the Hierarchy into the InputManager's SimpleSinglePointerSelector's Cursor field, at the bottom of the Inspector.

간단한 단일 포인터 선택기 설정

빌드 및 배포Build and Deploy

  1. 빌드 설정 > 파일 에서 응용 프로그램을 다시 빌드합니다.Rebuild the app from File > Build Settings.
  2. 앱 폴더 를 엽니다.Open the App folder.
  3. 모델 탐색기 Visual Studio 솔루션 을 엽니다.Open the ModelExplorer Visual Studio Solution.
  4. 디버그를 클릭 하 > 디버깅 하지 않고 시작 을 클릭 하거나 ctrl + F5 를 누릅니다.Click Debug -> Start Without debugging or press Ctrl + F5.
  5. 커서를 그리는 방법 및 홀로그램을 터치 하는 경우 모양이 어떻게 변경 되는지 관찰 합니다.Observe how the cursor is drawn, and how it changes appearance if it is touching a hologram.

지침Instructions

  1. 계층 패널에서 AstroMan -> GEO_G -> Back_Center 개체를 확장 합니다.In the Hierarchy panel, expand the AstroMan->GEO_G->Back_Center object.
  2. Interactible.cs 를 두 번 클릭 하 여 Visual Studio에서 엽니다.Double click on Interactible.cs to open it in Visual Studio.
  3. Interactible.csOnFocusEnter ()OnFocusExit () 콜백에서 줄의 주석 처리를 제거 합니다.Uncomment the lines in the IFocusable.OnFocusEnter() and IFocusable.OnFocusExit() callbacks in Interactible.cs. 이는 포커스 (응시 또는 컨트롤러 포인팅)가 특정 GameObject의 collider를 입력 하 고 종료 하는 경우 Mixed Reality Toolkit의 InputManager에서 호출 됩니다.These are called by the Mixed Reality Toolkit's InputManager when focus (either by gaze or by controller pointing) enters and exits the specific GameObject's collider.
/* TODO: DEVELOPER CODING EXERCISE 2.d */

void IFocusable.OnFocusEnter()
{
    for (int i = 0; i < defaultMaterials.Length; i++)
    {
        // 2.d: Uncomment the below line to highlight the material when gaze enters.
        defaultMaterials[i].EnableKeyword("_ENVIRONMENT_COLORING");
    }
}

void IFocusable.OnFocusExit()
{
    for (int i = 0; i < defaultMaterials.Length; i++)
    {
        // 2.d: Uncomment the below line to remove highlight on material when gaze exits.
        defaultMaterials[i].DisableKeyword("_ENVIRONMENT_COLORING");
    }
}

참고

을 ( EnableKeyword 를) 사용 DisableKeyword 합니다.We use EnableKeyword and DisableKeyword above. Toolkit의 표준 셰이더를 사용 하 여 자신의 앱에서 이러한 기능을 활용 하려면 스크립트를 통해 자료에 액세스 하기 위한 Unity 지침을 따라야 합니다.In order to make use of these in your own app with the Toolkit's Standard shader, you'll need to follow the Unity guidelines for accessing materials via script. 이 경우 Resources 폴더에 필요한 강조 표시 된 자료의 세 가지 변형이 이미 포함 되어 있습니다 (이름에 강조 표시 된 세 가지 자료 참조).In this case, we've already included the three variants of highlighted material needed in the Resources folder (look for the three materials with highlight in the name).

빌드 및 배포Build and Deploy

  1. 이전과 마찬가지로 프로젝트를 빌드하고 HoloLens에 배포 합니다.As before, build the project and deploy to the HoloLens.
  2. 응시가 개체를 목표로 하 고 있지 않을 때 발생 하는 상황을 관찰 합니다.Observe what happens when the gaze is aimed at an object and when it's not.

3 장-대상 지정 기술Chapter 3 - Targeting Techniques

목표Objectives

  • Holograms을 더 쉽게 대상으로 지정 합니다.Make it easier to target holograms.
  • 안정화 자연 헤드 이동.Stabilize natural head movements.

지침Instructions

  1. 계층 패널에서 inputmanager 개체를 선택 합니다.In the Hierarchy panel, select the InputManager object.
  2. 검사기 패널에서 응시 안정기 스크립트를 찾습니다.In the Inspector panel, find the Gaze Stabilizer script. 원하는 경우 클릭 하 여 Visual Studio에서 엽니다.Click it to open in Visual Studio, if you want to take a look.
    • 이 스크립트는 Raycast 데이터의 샘플을 반복 하 고 사용자가 전체 자릿수를 대상으로 하는 응시를 안정화 하는 데 도움이 됩니다.This script iterates over samples of Raycast data and helps stabilize the user's gaze for precision targeting.
  3. 검사기 에서 저장 된 안정성 샘플 값을 편집할 수 있습니다.In the Inspector, you can edit the Stored Stability Samples value. 이 값은 안정기가 안정화 값을 계산 하기 위해 반복 하는 샘플 수를 나타냅니다.This value represents the number of samples that the stabilizer iterates on to calculate the stabilized value.

4 장 방향 표시기Chapter 4 - Directional indicator

목표Objectives

  • 커서에 방향 표시기를 추가 하 여 holograms를 찾을 수 있습니다.Add a directional indicator on the cursor to help find holograms.

지침Instructions

DirectionIndicator.cs 파일을 사용할 예정입니다.We're going to use the DirectionIndicator.cs file which will:

  1. 사용자가 holograms에 gazing 되지 않은 경우 방향 표시기를 표시 합니다.Show the directional indicator if the user is not gazing at the holograms.
  2. 사용자가 holograms에 gazing 경우 방향 표시기를 숨깁니다.Hide the directional indicator if the user is gazing at the holograms.
  3. Holograms를 가리키도록 방향 표시기를 업데이트 합니다.Update the directional indicator to point to the holograms.

이제 시작해 보겠습니다.Let's get started.

  1. 계층 패널에서 AstroMan 개체를 클릭 하 고 화살표를 클릭 하 여 확장 합니다.Click on the AstroMan object in the Hierarchy panel and click the arrow to expand it.
  2. 계층 패널의 AstroMan 아래에서 DirectionalIndicator 개체를 선택 합니다.In the Hierarchy panel, select the DirectionalIndicator object under AstroMan.
  3. 검사기 패널에서 구성 요소 추가 단추를 클릭 합니다.In the Inspector panel, click the Add Component button.
  4. 메뉴에서 검색 상자 방향 표시기 를 입력 합니다.In the menu, type in the search box Direction Indicator. 검색 결과를 선택 합니다.Select the search result.
  5. 계층 패널에서 커서 개체를 검사기cursor 속성으로 끌어 놓습니다.In the Hierarchy panel, drag and drop the Cursor object onto the Cursor property in the Inspector.
  6. 프로젝트 패널의 Holograms 폴더에서 DirectionalIndicator 자산을 검사기방향 표시기 속성으로 끌어다 놓습니다.In the Project panel, in the Holograms folder, drag and drop the DirectionalIndicator asset onto the Directional Indicator property in the Inspector.
  7. 앱을 빌드 및 배포 합니다.Build and deploy the app.
  8. 방향 표시기 개체를 사용 하 여 astronaut를 찾는 방법을 시청 하세요.Watch how the directional indicator object helps you find the astronaut.

5 장-BillboardingChapter 5 - Billboarding

목표Objectives

  • Billboarding를 사용 하 여 holograms 항상 사용자를 중심으로 합니다.Use billboarding to have holograms always face towards you.

Billboard.cs 파일을 사용 하 여 사용자가 항상 연결 되도록 GameObject 지향을 유지 합니다.We will be using the Billboard.cs file to keep a GameObject oriented such that it is facing the user at all times.

  1. 계층 패널에서 AstroMan 개체를 선택 합니다.In the Hierarchy panel, select the AstroMan object.
  2. 검사기 패널에서 구성 요소 추가 단추를 클릭 합니다.In the Inspector panel, click the Add Component button.
  3. 메뉴에서 검색 상자 빌보드 를 입력 합니다.In the menu, type in the search box Billboard. 검색 결과를 선택 합니다.Select the search result.
  4. Inspector 에서 피벗 축Y 로 설정 합니다.In the Inspector set the Pivot Axis to Y.
  5. 사용해 보세요.Try it! 이전 처럼 앱을 빌드하고 배포 합니다.Build and deploy the app as before.
  6. 관점을 변경 하는 방법에 관계 없이 빌보드 개체가 어떻게 되는지 확인 합니다.See how the Billboard object faces you no matter how you change the viewpoint.
  7. 지금은 AstroMan 에서 스크립트를 삭제 합니다.Delete the script from the AstroMan for now.

6 장-Tag-AlongChapter 6 - Tag-Along

목표Objectives

  • Tag-Along를 사용 하 여 실내에서 holograms을 따라갈 수 있습니다.Use Tag-Along to have our holograms follow us around the room.

이 문제를 해결 하는 동안 다음과 같은 설계 제약 조건을 따릅니다.As we work on this issue, we'll be guided by the following design constraints:

  • 콘텐츠는 항상 한 눈에 볼 수 있습니다.Content should always be a glance away.
  • 콘텐츠는 그렇지 않습니다.Content should not be in the way.
  • 헤드 잠금 콘텐츠는 불편 합니다.Head-locking content is uncomfortable.

여기에 사용 된 솔루션은 "태그 동반" 방식을 사용 하는 것입니다.The solution used here is to use a "tag-along" approach.

태그 동반 개체는 사용자의 보기를 완전히 유지 하지 않습니다.A tag-along object never fully leaves the user's view. 태그는 고무 밴드에 의해 사용자의 헤드에 연결 된 개체로 생각할 수 있습니다.You can think of the a tag-along as being an object attached to the user's head by rubber bands. 사용자가 이동 하면 완전히 종료 하지 않고 뷰의 가장자리를 향해 이동 하 여 콘텐츠를 쉽게 한눈에 볼 수 있습니다.As the user moves, the content will stay within an easy glance by sliding towards the edge of the view without completely leaving. 사용자가 태그를 따라 개체를 gazes 하는 경우에는 더 자세히 볼 수 있습니다.When the user gazes towards the tag-along object, it comes more fully into view.

SimpleTagalong.cs 파일을 사용할 예정입니다.We're going to use the SimpleTagalong.cs file which will:

  1. Tag-Along 개체가 카메라 범위 내에 있는지 여부를 확인 합니다.Determine if the Tag-Along object is within the camera bounds.
  2. 뷰 내에 있지 않은 경우 Tag-Along를 뷰 사이에 부분적으로 배치 합니다.If not within the view frustum, position the Tag-Along to partially within the view frustum.
  3. 그렇지 않으면 사용자의 기본 거리에 Tag-Along을 배치 합니다.Otherwise, position the Tag-Along to a default distance from the user.

이렇게 하려면 먼저 TagalongAction 를 호출 하도록 Interactible.cs 스크립트를 변경 해야 합니다.To do this, we first must change the Interactible.cs script to call the TagalongAction.

  1. 코딩 연습 6. a (주석 처리 줄 84 ~ 87)를 완료 하 여 Interactible.cs 를 편집 합니다.Edit Interactible.cs by completing coding exercise 6.a (uncommenting lines 84 to 87).
/* TODO: DEVELOPER CODING EXERCISE 6.a */
// 6.a: Uncomment the lines below to perform a Tagalong action.
if (interactibleAction != null)
{
    interactibleAction.PerformAction();
}

Interactible.cs 와 쌍을 이루는 InteractibleAction.cs 스크립트는 holograms을 탭 할 때 사용자 지정 작업을 수행 합니다.The InteractibleAction.cs script, paired with Interactible.cs performs custom actions when you tap on holograms. 이 경우 태그에 대해 구체적으로 사용 합니다.In this case, we'll use one specifically for tag-along.

  • Scripts 폴더에서 TagalongAction.cs 자산을 클릭 하 여 Visual Studio에서 엽니다.In the Scripts folder click on TagalongAction.cs asset to open in Visual Studio.
  • 코딩 연습을 완료 하거나 다음과 같이 변경 합니다.Complete the coding exercise or change it to this:
    • 계층 의 맨 위에 있는 검색 표시줄에서 ChestButton_Center 을 입력 하 고 결과를 선택 합니다.At the top of the Hierarchy, in the search bar type ChestButton_Center and select the result.
    • 검사기 패널에서 구성 요소 추가 단추를 클릭 합니다.In the Inspector panel, click the Add Component button.
    • 메뉴에서 검색 상자 Tagalong 작업 을 입력 합니다.In the menu, type in the search box Tagalong Action. 검색 결과를 선택 합니다.Select the search result.
    • Holograms 폴더에서 Tagalong 자산을 찾습니다.In Holograms folder find the Tagalong asset.
    • 계층 에서 ChestButton_Center 개체를 선택 합니다.Select the ChestButton_Center object in the Hierarchy. TagAlong 개체를 프로젝트 패널에서 Inspector 개체의 TagAlong 속성에 끌어서 놓습니다.Drag and drop the TagAlong object from the Project panel onto the Inspector into the Object To Tagalong property.
    • Inspector 에서 Tagalong Action 개체를 Interactible 스크립트의 Interactible action 필드로 끕니다.Drag the Tagalong Action object from the Inspector into the Interactible Action field on the Interactible script.
  • TagalongAction 스크립트를 두 번 클릭 하 여 Visual Studio에서 엽니다.Double click the TagalongAction script to open it in Visual Studio.

Interactible 설정

다음을 추가 해야 합니다.We need to add the following:

  • TagalongAction 스크립트 (InteractibleAction에서 상속 됨)의 PerformAction 함수에 기능을 추가 합니다.Add functionality to the PerformAction function in the TagalongAction script (inherited from InteractibleAction).
  • Billboarding을 gazed 개체에 추가 하 고 피벗 축을 XY로 설정 합니다.Add billboarding to the gazed-upon object, and set the pivot axis to XY.
  • 그런 다음 단순 Tag-Along를 개체에 추가 합니다.Then add simple Tag-Along to the object.

TagalongAction.cs 의 솔루션은 다음과 같습니다.Here's our solution, from TagalongAction.cs:

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

using HoloToolkit.Unity;
using UnityEngine;

public class TagalongAction : InteractibleAction
{
    [SerializeField]
    [Tooltip("Drag the Tagalong prefab asset you want to display.")]
    private GameObject objectToTagalong;

    private void Awake()
    {
        if (objectToTagalong != null)
        {
            objectToTagalong = Instantiate(objectToTagalong);
            objectToTagalong.SetActive(false);

            /* TODO: DEVELOPER CODING EXERCISE 6.b */

            // 6.b: AddComponent Billboard to objectToTagAlong,
            // so it's always facing the user as they move.
            Billboard billboard = objectToTagalong.AddComponent<Billboard>();

            // 6.b: AddComponent SimpleTagalong to objectToTagAlong,
            // so it's always following the user as they move.
            objectToTagalong.AddComponent<SimpleTagalong>();

            // 6.b: Set any public properties you wish to experiment with.
            billboard.PivotAxis = PivotAxis.XY; // Already the default, but provided in case you want to edit
        }
    }

    public override void PerformAction()
    {
        // Recommend having only one tagalong.
        if (objectToTagalong == null || objectToTagalong.activeSelf)
        {
            return;
        }

        objectToTagalong.SetActive(true);
    }
}
  • 사용해 보세요.Try it! 앱을 빌드 및 배포 합니다.Build and deploy the app.
  • 콘텐츠가 응시 지점의 중심을 따라가는 지를 확인 합니다.Watch how the content follows the center of the gaze point, but not continuously and without blocking it.