SteamVR Chaperone 시스템과의 상호작용

SteamVR Chaperone 시스템의 다양한 컴포넌트와 상호작용하는 방법입니다.

Windows
MacOS
Linux
필요한 사전지식

이 글은 다음 주제에 대한 지식이 있는 분들을 대상으로 합니다. 계속하기 전 확인해 주세요.

SVRChapInteraction_Hero_Image.png

SteamVR Chaperone 시스템은 가상 현실(VR) 상호작용 영역의 경계를 표시하는 데 사용됩니다. 트래킹 디바이스가 경계에 가까이 가면, SteamVR Runtime 은 자동으로 비주얼 큐를 통해 사용자에게 그 사실을 알립니다. 여기서는 VR 상호작용 영역을 사용자에게 표시하는 두 가지 방법을 살펴봅니다.

Chaperone 시스템의 정상 작동을 위해서는, SteamVR 툴을 사용하여 Room Scale VR 구성을 해야 합니다. 자세한 정보는 공식 HTC Vive 셋업 페이지를 참고하세요.

UE4 안에서 Chaperone 시스템을 끄는 것은 가능하지도 않고 추천하지도 않습니다. 하지만 경계에 가까워지는 사용자에 대한 UE4 의 반응 방식을 조절할 수는 있습니다.

단계

여기서는 VR 상호작용 영역의 코너 네 곳에 스태틱 메시를 스폰하는 법과 아울러 VR 상호작용 구역의 정확한 크기와 모양대로 선을 그리는 방법을 알아보겠습니다.

여기서 사용된 Lighthouse Basestation 스태틱 메시와 텍스처 다운로드 링크입니다: Lighthouse Basestation Static Mesh & Texture

  1. Player Pawn 블루프린트를 열고 Static Mesh Component 변수를 새로 추가한 뒤 baseStationArray 라 합니다. 이 변수는 baseStationArray 변수를 만들 때 VR 상호작용 영역의 코너 네 곳에 스폰하려는 스태틱 메시를 저장하는 데 사용될 것이므로, Variable Type (변수 유형)이 Array (배열)로 설정되었는지 확인하세요.

    SVRChapInteraction_00.png

  2. 이벤트 그래프 에 다음 노드를 다음과 같은 값으로 추가합니다:

    이미지를 클릭하면 원본을 확인합니다.

    노드 이름

    Motion Controller (R) Trigger

    N/A

    SteamVRChaperone

    N/A

    baseStationArray

    N/A

    Get Bounds

    N/A

    ForEachLoop

    N/A

    Add Static Mesh Component

    Static Mesh: lh_basestation_vive

    Destroy Component

    N/A

    Array Add

    N/A

    IsValid

    N/A

  3. 사용자가 구성한 SteamVR 상호작용 영역에 대한 정보를 구할 수 있는 방법을 마련해야 합니다. 그러기 위해서는 폰 블루프린트 안에서 SteamVRChaperone 변수 출력을 Get Bounds 노드의 입력에 연결합니다. 이렇게 SteamVR Chaperone 바운드를 이루는 지점과 상호작용할 수 있습니다.

    이미지를 클릭하면 원본을 확인합니다.

  4. VR 상호작용 영역을 이루는 지점을 구했으니, SteamVRChaperone 의 각 코너 지점을 도는 ForEachLoop 를 구성하여 Motion Controller(R) Trigger 가 눌리면 스태틱 메시를 추가하도록 합니다. 그러기 위해서는 폰 블루프린트의 이벤트 그래프가 다음 그림과 같이 되어있는지 확인합니다.

    Copy Node Graph
  5. VR 상호작용 영역 네 코너에 스태틱 메시를 표시할 수 있으니, 이제 제거할 수 있는 스태틱 메시가 있는지 확인한 뒤 가능하면 제거하는 블루프린트 로직을 구성해 주겠습니다. 그러기 위해서는 폰 블루프린트에서 이벤트 그래프가 다음 이미지와 같이 구성되어 있는지 확인합니다.

    Copy Node Graph
  6. 변수 섹션에서 새 변수 를 만들어 SampleSurface 라 합니다. 이 변수는 VR 상호작용 영역의 표면 노멀을 저장하는 데 사용됩니다.

    SVRChapInteraction_05.png

  7. 다음, 이벤트 그래프 에 다음과 같은 노드를 다음과 같은 값으로 추가합니다:

    이미지를 클릭하면 원본을 확인합니다.

    노드 이름

    Motion Controller (R) Trigger

    N/A

    SteamVRChaperone

    N/A

    GetBounds

    N/A

    Float / Float x 2

    0,2

    SampleSurface

    N/A

    MinimumAreaRectangle

    N/A

    DrawDebugBox

    N/A

  8. 이벤트 그래프에 필수 노드를 추가했으니, 다음에는 Motion Controller(R) Trigger 가 눌리면 VR 상호작용 영역을 이루는 버텍스 위치를 샘플링한 뒤 그 주변에 박스를 그리도록 연결해 줘야 합니다. 블루프린트에서 다음 이미지와 같이 노드를 구성하면 됩니다.

    Copy Node Graph

최종 결과

모든 것을 연결한 후 VR 프리뷰 버튼을 사용하여 레벨을 실행하고 HTC Vive HMD 를 쓴 뒤 모션 컨트롤러를 쥡니다. 이제 오른쪽 모션 컨트롤러의 트리거를 쥐면 SteamVR 상호작용 영역의 경계가 다음 비디오와같이 표시됩니다.

UE4 프로젝트 다운로드

이 예제를 만드는 데 사용된 UE4 프로젝트를 다운로드할 수 있는 링크입니다.

태그
Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼