ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Unity/XR Interaction Toolkit (VR)] 2. VR 세팅하기
    학부의 잔재 2024. 9. 11. 12:31
    반응형

    2. VR 세팅하기

     XR Interaction Toolkit에서 사용되는 게임 오브젝트는 크게 두 가지로 분류합니다. Interactor과 Interactable이 그 두 가지에 해당합니다. 

     

     Interactor는 말 그대로 상호작용을 일으키는 오브젝트입니다. 쉽게 예를 들면, Interactor가 어떤 물체에 상호작용을 일으켜 특정한 물체의 위치, 크기, 회전 등의 특징을 바꿀 수 있습니다.

     

     Interactable상호작용이 가능한 오브젝트입니다. 위의 예에서 Interactor가 어떤 물체에 상호작용을 일으킨다고 말했는데, Interactable은 여기서 '어떤 물체'에 해당합니다. 

     

     Scene 내에서 Interactor가 Interactable과 서로 상호작용하기 위해서는 Interaction Manager가 필요합니다. Interaction Manager는 우리가 직접 참조하는 것도 가능합니다. 또한 Scene에 Interaction Manager가 존재하지 않는다면, Interactor와 Interactable 게임 오브젝트를 만들 때 기본적으로 Unity에서 새로운 Interaction Manager가 생성되기 때문에, 튜토리얼에서는 Interaction Manager에 대해 크게 걱정하지 않으셔도 괜찮습니다.

    컨트롤러가 Interactable에 레이 캐스팅을 통해 상호작용을 일으켜, 큐브가 더 커졌네요 :)

     XR Interaction Toolkit을 사용할 때, Interactor와 Interactable이라는 두 개의 큰 프레임으로 게임 오브젝트를 분류하면, 보다 쉽게 XR Interaction Toolkit에 적응할 수 있습니다. 본격적으로 VR Setup을 시작해봅시다 +_+


    2-1. VR Camera 세팅하기

     우선 VR 기기를 세팅할 Scene을 간단하게 세팅하겠습니다. Scene은 바닥만 있다면, 자기 마음대로 세팅해도 큰 상관이 없기 때문에, 여러분 마음대로 진행하셔도 좋습니다. 저는 이전에 블로그에서 포스팅 한 유니티 튜토리얼 내용을 토대로 Scene을 세팅하였습니다. 세팅한 Scene은 다음과 같습니다. 

    간단하게 Terrain을 활용하여 만든 마을입니다.

     그래도 혹시나 해서 리소스 파일 공유합니다 ~_~. 리소스 파일 내에 [Prefab] 폴더에 Village 참고하시면 됩니다. 

     

    [실습 1] Scene에 VR 카메라를 만들자.

    ① 하이어라키(Hierarchy) 의 빈공간에 마우스 우클릭을 하고, [Create Empty] 버튼을 클릭한 후, 게임 오브젝트의 이름을 VR Rig로 설정합니다.

    ② VR Rig 게임 오브젝트를 선택하고, [Add Component] 버튼을 클릭한 후 XR Rig 컴포넌트를 추가합니다. 현재 XR Rig 컴포넌트에는 Camera Floor Offset Object와 Camera Game Object가 비어있는(None) 상태로 존재합니다. 따라서 우리는 두 개의 오브젝트를 별도로 만들 것입니다.

    ③ VR Rig 게임 오브젝트의 Transform을 Reset하고, [Create Empty]버튼을 클릭하여 자식 오브젝트를 하나 생성합니다. 그리고 자식 오브젝트의 이름을 HMD Offset으로 설정합니다. 

    ④ Scene에 존재하는 Main Camera 게임 오브젝트를 삭제하고, 하이어라키 창의 HMD Offset을 마우스 우클릭합니다. 그리고 [Camera] 버튼을 클릭하여 새로운 카메라를 생성합니다. 

    ⑤ 새로 생성된 카메라의 이름을 Camera에서 VR Camera로 변경합니다. 그리고 VR Camera 게임 오브젝트에 Tracked Pose Driver 컴포넌트를 추가합니다. 

    ⑥ 다시 VR Rig 게임 오브젝트를 선택하고, Camera Floor Offset Object에 HMD Offset 객체를 참조시키고, Camera Game Object에는 VR Camera를 참조시킵니다.

    ⑦ VR Rig 게임 오브젝트에서 XR Rig 컴포넌트의 Tracking Origin Mode를 Floor로 설정하고, Transform 컴포넌트의 PositionX: 22, Y: 0, Z: -8로 설정합니다.

    ⑧ 이제 에디터에서 재생 버튼을 눌러볼까용? ㅇㅁㅇ~

    비어있는 게임 오브젝트를 생성한 후, 이름을 VR Rig로 설정합니다.
    VR Rig 게임 오브젝트의 Transform을 Reset하고, [Add Component] 버튼을 클릭하여 XR Rig 컴포넌트를 추가합니다. XR Rig 컴포넌트를 추가하면, 현재 Camera Floor Offset Object와 Camera Game Object가 비어있는 것을 확인할 수 있습니다.
    Main Camera 게임 오브젝트를 삭제하고, [Create Empty] 버튼을 눌러 VR Rig의 자식 오브젝트로 HMD Offset을 생성합니다. 마찬가지로 [Camera] 버튼을 눌러 HMD Offset의 자식 오브젝트로 VR Camera를 생성하고, Tracked Pose Driver 컴포넌트를 추가합니다.
    VR Rig 오브젝트에서 XR Rig 컴포넌트에서 위에서 만든 HMD Offset과 VR Camera를 각각 참조합니다. 그리고 Position을 22, 0, -8로 변경합니다.
    에디터에서 Play버튼을 눌러 VR 기기에서 잘 작동하는지 중간 점검 해봅시당


    2-2. VR Controller 세팅하기

     Camera 생성까지 잘 따라오셨나요? Scene에서 생성한 VR Camera를 통해 맵 전체를 VR 화면을 통해 확인할 수 있습니다. 하지만 아직 컨트롤러를 입력시키지 않아, 해당 맵에서 이동하거나, Scene에서 자신의 컨트롤러가 어느 부분에 위치하는지 확인할 수 없습니다. 따라서 이번 튜토리얼에서는 간단하게 VR Controller를 세팅할 예정입니다. 바로 시작해보죠 ㅇㅁㅇ!

     

    [실습 2] VR Controller를 만들자. 

    ① HMD Offset 게임 오브젝트의 하위 오브젝트로 [Create Empty] 버튼을 클릭하여, Controller L과 Controller R 게임 오브젝트를 생성합니다.

     Controller L과 Controller R 게임 오브젝트에 각각 XR Controller (Device-based) 컴포넌트를 추가합니다. 

    ③ Controller L 게임 오브젝트에서 XR Controller (Device-based) 컴포넌트의 Controller NodeLeft Hand로 설정하고, Controller R 게임 오브젝트에서 XR Controller (Device-based) 컴포넌트의 Controller Node를 Right Hand로 설정합니다. 

    ④ [3D Object] > [Cube] 버튼을 클릭하여 큐브 게임 오브젝트를 생성하고, Cube에서 Transform 컴포넌트를 Reset하고, Scale을 각각 X: 0.15, Y: 0.15, Z: 0.5로 설정합니다. 

    ⑤ 큐브의 이름을 Cube에서 Temporary Hand Model로 변경한 후, Project 에 끌고와 Prefab으로 만듭니다.

    ⑥ Controller L과 Controller R의 자식 오브젝트로 Temporary Hand Model을 달아놓습니다.

    ⑦ VR Camera에서 Camera 컴포넌트를 찾아 Clipping Planes: Near을 0.01로 변경합니다. Clipping Planes를 적게 설정해야, 눈 앞의 물체를 볼 수 있습니다.

    이제 [Play] 버튼을 눌러 제대로 작동하는지 확인해봅시다.

    HMD Offset의 자식 오브젝트로 Controller L과 Controller R을 생성합니다. 그리고 Controller L과 Controller R의 컴포넌트로 XR Controller (Device-based)를 추가합니다.
    Controller L의 Controller Node는 Left Hand로 설정하고, Controller R의 Controller R은 Right Hand로 설정합니다.
    기본 Cube를 생성하고, Transform을 Reset한 후에 Scale을 X: 0.15, Y: 0.15, Z: 0.5로 변경합니다. 그리고 Cube를 Project 창으로 드래그하여 놓아 Prefab으로 만든 후, 이름을 Temporary Hand Model로 변경합니다.
    Controller L과 Controller R의 자식 오브젝트로 Temporary Hand Model Prefab을 달아놓고, VR Camera의 Clipping Planes: Near을 0.1으로 설정합니다. 눈 앞의 손을 보기 위해서죠 ㅇㅁㅇ~
    이제 Play(▶) 버튼을 눌러 정상적으로 컨트롤러가 작동하는지 확인합시다.

     정상적으로 VR 컨트롤러가 작동하나요? ㅎㅁㅎ! Unity에서 VR을 사용하는 방법은 생각보다 어렵지 않습니다. 만약 정상적으로 작동하지 않는다면, 댓글에 글 남겨주세요! 함께 풀어보자구요. ㅇㅁㅇ~


    REFERENCE

    [1] Oculus Rift Virtual reality headset HTC Vive Xbox One controller PlayStation VR, VR headset transparent background PNG clipart - HiClipart

     

    Oculus Rift Virtual reality headset HTC Vive Xbox One controller PlayStation VR, VR headset transparent background PNG clipart |

     

    www.hiclipart.com

    [2] Village Resource - 박다빈

     

    XR Tutorial Resource.unitypackage

     

    drive.google.com

    * 튜토리얼 외 다른 용도로 그래픽 리소스를 사용할 때는 qkrtmdgns23@gmail.com으로 이메일 부탁드립니다.

Designed by Tistory.