가상현실 관람자 화면

언리얼 엔진 4 의 Virtual Reality Spectator Screen, 가상 현실 관람자 화면 기능에 대한 개요입니다.

Windows
MacOS
Linux

PlayStation 개발자의 경우 저희 PlayStation VR (PS VR) Spectator Screen 문서를 참고해 주시기 바랍니다.

다른 사람이 가상 현실(VR) 환경에 (1인칭 시점으로) 처한 상태에서 (3인칭 시점으로) 관람자가 되기를 원했던 적이 있다면, 언리얼 엔진 4(UE4) 의 VR Spectator Screen (VR 관람자 화면) 기능이 딱입니다. VR 관람자 화면을 실행한 상태에서 컴퓨터 모니터(나 TV)로 다른 플레이어를 관찰할 수 있으므로, 몰입형 VR 체험의 피드백을 수집할 때 좋습니다.

Images Courtesy of GhostPaint.com

VRSpecScreen.png

VRPlayerPerspectiveScreen.png

VR 관람자 화면 시점

VR 플레이어 HMD 시점

왼쪽은 아티스트가 VR 에서 벽돌 벽을 칠하는 것을 관람자가 보고 있는 반면, 오른쪽은 아티스트가 VR 에서 페인트 작업에 집중하고 있습니다.

헤드 마운트 디스플레이(HMD) 제조사에 따라, VR Spectator Screen (VR 관람자 화면)은 VR Social Screen (VR 소셜 화면)과, VR Spectator Mode (VR 관람자 모드)는 VR Mirror Mode (VR 미러 모드)와 동의어가 될 수 있습니다. 이 문서 컨텍스트 안에서 Spectator Screen (관람자 화면)은 VR 디바이스에 연결된 (컴퓨터 모니터나 TV 같은) 표준 출력 장치입니다. 추가로, Spectator Mode (관람자 모드)를 켠다는 것은 플레이어가 HMD 를 사용하여 VR 환경에 있는 동안 그 VR 체험을 관찰(, 특정 상황에서 접)할 수 있다는 뜻입니다.

지원 플랫폼

현재 UE4 의 관람자 화면 모드를 지원하는 플랫폼은 다음과 같습니다:

이 기능은 다른 PC 디바이스 및 콘솔에서 지원할 수는 있지만, 모바일 VR 디바이스(플랫폼)에서도 지원하지는 못할 것으로 예상하고 있습니다.

관람자 화면 모드 시작하기

PS VR 을 제외하고 관람자 화면 모드는 UE4 에 기본으로 켜집니다.

관람자 화면 모드에서 텍스처 작업을 할 때, 좌상단 좌표는 최소 좌표값을, 우하단 좌표는 최대 좌표값을 나타냅니다.

VRSpec_BPTextureCoordinate.png

Spectator Screen 블루프린트 노드

사용 예로, 다음 블루프린트 인터페이스를 사용하고 있습니다:

노드

설명

Set Spectator Screen Texture

소셜 (관람자) 화면에 표시되는 텍스처를 변경하는 노드입니다.Screen.

Set Spectator Screen Mode Texture Plus Eye Layout

ESpectatorScreenMode 의 TexturePlusEye 함수에 대한 레이어웃을 셋업하는 노드입니다.

Set Spectator Screen Mode

소셜 (관람자) 화면 모드를 설정하는 노드입니다.

사용 예

  1. 관람자 화면을 지원하는 플랫폼 중 하나에 대한 VR 프로젝트를 셋업합니다.

  2. 이제 새 블루프린트 스크립트를 만들어, 관람자 화면에 렌더링하려는 이미지를 지정해야 합니다. 예시를 위해, 다음 블루프린트 노드는 세 가지 키보드 입력에 반응합니다:

    1. 예로, 1 키를 누르면 첫 번째 블루프린트 노드는 스태틱 텍스처를 지정하고, 텍스처 영역에 그립니다.

      VRSpec_BP_1.png

    2. 2 키를 누르면 두 번째 블루프린트 노드는 레이아웃을 지정하고, 여기에 HMD 아이 뷰가 전체 화면에 그려집니다 (텍스처는 화면 좌상단 사분면에 그려집니다). 추가로, 이 노드는 눈 레이아웃을 먼저 그리도록 하면서 텍스처 레이아웃을 지정합니다.

      VRSpec_BP_2.png

      눈 및 텍스처 사각형 최소 및 최대 값은 [0.0, 1.0] 범위로 정규화됩니다.

    3. 마지막으로 3 키를 누르면, 세 번째 블루프린트 노드가 TexturePlusEye 모드를 활성화( 및 전환)시킵니다.

      VRSpec_BP_3.png

최종 결과

요약하면, 새 블루프린트는 사용하고자 하는 관람자 화면 모드 및 관람자 화면의 (눈과 텍스처 레이아웃을 포함한) 텍스처를 설정합니다.

VRSpec_BP.png

텍스처가 (SceneCaptureComponent2D 에서 쓰기 대상으로 삼을 수 있는) 렌더 타깃, 또는 유저 인터페이스 엘리먼트에 대한 컨테이너 역할을 할 수는 있지만, 여기서 한 가지 중요한 점은 SceneCapture 계산 비용이 비쌀 수 있다는 점 유의하시기 바랍니다.

런타임에 다양한 텍스처 또는 레이아웃을 테스트하려면, 관람자 모드 활성화 상태에서 텍스처를 (또는 레이아웃까지도) 전환하면 됩니다.

모드 전환

새로운 관람자 화면 모드로 전환하려는 경우, 콘솔을 열고 vr.SpectatorScreenMode Value 를 입력하면 됩니다. 예로 vr.SpectatorScreenMode 2Distorted (디스토션) 모드로, 현재 Oculus Rift 에 지원되고 있습니다.

VRSpec_CVarExample.png

지원 모드

플랫폼에 따라 화면 관람자 모드가 지원되는 것이 다른데, 다음과 같습니다:

Value

Mode

Oculus Rift

SteamVR

PS VR

0

Disabled

HMD 최고 퍼포먼스를 위해 관람자 화면 출력을 끄는 모드입니다.

1

SingleEyeLetterboxed

주로 디버깅에 사용되는 모드로, 화면에 한쪽 레터박스 적용된 눈만 표시합니다.

2

Undistorted

디버그 모드로, 양쪽 눈에 대한 전체 렌더링 영역을 표시합니다.

3

Distorted

Oculus 에만 지원되는 모드입니다. 구체적으로, Oculus 전용 디버그 모드로, 색수차 등을 표시합니다.

4

SingleEye

Undistorted 모드와 매우 유사하게, 한쪽 눈에 대한 디버그 모드입니다. 이 모드에서는 씬이 늘어지므로, 씬의 작은 부작용을 식별하기에도 좋을 수 있습니다.

5

SingleEyeCroppedToFit

눈을 크롭하여 전체 화면을 채우는 모드입니다.

6

Texture

지정된 UTexture 전체 화면 뷰를 표시하는 모드입니다.

7

TexturePlusMirror

하나의 렌더 사각형에 텍스처를, 다른 렌더 사각형엔 눈을 표시하는 모드입니다.

8

ViewPort

현재는 아니지만 앞으로 지원할 모드입니다. (분할 화면 멀티플레이어 게임처럼) 분할 화면 출력을 렌더링하는 모드로, 사용자 한명은 HMD 이고 다른 한 명은 관람자인 모드입니다.

관람자 화면 모드 최적화

현재 관람자 화면 모드의 표준 최적화 세팅은 없습니다. 관람자 화면 모드에 쓸 최적화 솔루션을 자체적으로 구현하려면, (VR 어플리케이션을 60, 90, 120 fps 로 실행한다 가정하고) 30 fps 로 씬 캡처를 할 것을 추천합니다. 또한, 관람자 화면 출력은 30 fps 로 제한할 것을 추천합니다. 특정 하드웨어에서 관람자 화면 출력을 제한하려 하는 경우, VR 프레임 속도가 90 fps 로 실행되는 경우 (기본적으로 세 프레임마다 한 프레임씩 드랍되는) 렌더링 이슈가 생길 수 있다는 점 유의하시기 바랍니다.

4.17 기준 알려진 이슈

  • 실행시간에 생성된 렌더 타깃이 한 프레임 지나기 전까지 관람자 텍스처에 할당되지 않아, 어플리케이션 첫 프레임 렌더링이 이미 완료되기 전까지 소리없이 실패하는 문제가 있습니다.

  • 현재 렌더 타깃이 관람자 텍스처에 할당되어있던 상태에서 소멸(해제)되면, 어플리케이션 크래시가 날 수 있습니다.

태그

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

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

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

네이버 카페
공식 포럼