언어:
페이지 정보
태그:
수준별:
엔진 버전:
언리얼 엔진

SteamVR Chaperone 시스템 활성화 감지

언리얼 엔진
사전 필수 토픽

이 페이지는 다음 토픽에 대한 지식을 이미 갖추고 있는 분들을 대상으로 합니다. 계속하기 전 먼저 읽어보시기 바랍니다.

SteamVRChapActivation_Hero_Image.png

SteamVR Chaperone 시스템은 VR 상호작용 영역의 경계를 표시하는 데 사용됩니다. 트래킹 디바이스가 경계에 다가가면, SteamVR Runtime 은 자동으로 비주얼 큐를 통해 사용자에게 알립니다. 여기서는 상호작용 영역을 표시하는 방법과 아울러 다른 비주얼 큐를 통해 사용자에게 디바이스 중 하나가 영역 경계에 가깝거나 밖으로 나갔는지 알리는 방법을 살펴보겠습니다.

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

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

단계

  1. SteamVR Chaperone 경계 표시를 위해서는 먼저 사용자의 디바이스가 언제 경계에 가까워지는지를 알아야 합니다. UE4 안에서 알아내기 위해서는, Bind Event to OnRetunToBoundsBind Event to OnLeaveBounds 노드를 사용하면 됩니다. 플레이어 폰 블루프린트 안에서 다음과 같은 노드를 이벤트 그래프 에 추가합니다.

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

    노드 이름

    Bind Event to OnReturnToBounds

    N/A

    Bind Event to OnLeaveBounds

    N/A

    SteamVRChaperone

    N/A

  1. 변수 패널에서 새 Boolean 변수를 만들어 inBounds 라 합니다. 사용자가 Chaperone 경계를 드나드는 것을 트래킹하는 데 쓸 것입니다.

    SteamVRChapActivation_01.png

  2. 레벨 시작과 동시에 사용자가 경계에 가까운지 확인하고 싶습니다. 그러기 위해서는 Bind Event to OnRetunToBounds 와 Bind Event to OnLeaveBounds 노드를 연결해준 뒤 SteamVRChaperone 오브젝트 레퍼런스를 양쪽 Bind Event 노드의 Target 입력에 연결하면 됩니다. 마지막으로 Bind Event to OnLeaveBounds 노드 입력을 Set Tracking Origin 노드 출력에 연결합니다. 완성된 폰 블루프린트 모습은 다음 이미지와 같을 것입니다:

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

  3. 이제 사용자가 경계를 드나들 때 적합한 메시지를 표시하기 위한 트래킹을 돕는 블루프린트 로직을 만들어야 합니다. 그러기 위해서는 먼저 Custom Event 노드를 두 개 새로 만들어 이름을 ReturnToBoundsLeaveBounds 라 합니다. 다음, 경계에 들어서면 In Bounds 변수를 True 로, 나서면 False 로 설정해야 합니다. 완료된 폰 블루프린트 모습은 다음 이미지와 같습니다.

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

  4. 다음, ReturnToBounds 와 LeaveBounds Event 출력을 Bind Event 노드의 각 입력에 연결하여 사용자가 Chaperone 경계를 드나드는 것을 트래킹하도록 합니다. 완료된 폰 블루프린트 모습은 다음 이미지와 같습니다.

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

  5. 이제 사용자가 트래킹 영역을 드나들 때 알릴 수 있는 방법이 필요합니다. 그러기 위해서는 Print String 노드를 사용해서 매 틱마다 화면에 메시지를 출력하여 사용자가 트래킹 영역 안에 있는지 밖에 있는지 알려주면 됩니다. 이와 같이 폰 블루프린트를 구성하기 위해서는, 이벤트 그래프에 다음과 같은 노드를 추가해야 합니다.

    노드 이름

    Event Tick

    N/A

    Branch

    N/A

    Print String x 2

    N/A

    InBounds

    N/A

  6. Event Tick 출력을 Branch(분기) 노드의 입력에, InBoundsCondition 입력에 연결한 뒤 Print String 노드를 Branch(분기) 노드의 TrueFalse 출력에 연결합니다. Print String 노드에 설명을 입력합니다. 이 예제에서는 You have returned to the tracking bounds (트래킹 경계에 들어섰습니다)와 You have left the tracking bounds (트래킹 경계를 떠났습니다)로 하고있지만, 아무렇게나 해도 괜찮습니다.

    완료된 폰 블루프린트는 다음 이미지와 같습니다.

    이미지를 클릭하면 블루프린트 코드를 복사합니다.

최종 결과

이제 HTC Vive HMD 를 쓰고 모션 컨트롤러를 집어든 뒤 VR 프리뷰로 프로젝트를 실행합니다. 프로젝트 실행 후 모션 컨트롤러 하나를 천천히 Chaperone 경계쪽으로 이동해 보면 다음 비디오처럼 화면에 출력되는 메시지가 경계에서 변하는 것을 볼 수 있습니다.

UE4 프로젝트 다운로드

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

태그