VR 스테레오 레이어

VR Stereo Layer, 스테레오 레이어 셋업 및 작업 방법 안내입니다.

Windows
MacOS
Linux

가상 현실 (VR) 스테레오 레이어로 VR 머리 장착 디스플레이(HMD)에 텍스처를 전송하고 나머지 프로젝트와 다른 독립 렌더링 패스에서 재투영시키는 것이 가능합니다. 이는 HMD 에 붙이고자 하는 UI 엘리먼트에 매우 유용하지만, 포스트 프로세싱이나 안티에일리어싱에 영향받지 않습니다. 여기서는 지원되는 모든 VR 플랫폼용 스테레오 레이어 셋업 및 사용 방법에 대해 다루겠습니다.

지원 플랫폼

VR 스테레오 레이어는 UE4 가 지원하는 모든 VR 플랫폼에서 지원됩니다:

플랫폼 차이

네이티브 VR 플랫폼에 노출된 피처는 각기 다르므로, 스테레오 레이어의 작동방식 역시 플랫폼마다 다를 수 있습니다. 여기서는 그에 대한 것을 구현별로 대부분 나열해 봅니다.

  • World Locked: 월드 고정 - 레이어 포지션이 게임 월드 좌표입니다.

  • Tracker Locked: 트래커 고정 - 레이어 포지션이 현실의 플레이어 주변 트래킹 스페이스 기준입니다.

  • Face Locked: 면 고정 - 레이어가 포지션이나 로테이션에 관계 없이 HMD 뷰의 같은 면에 유지됩니다.

시점을 기준으로 레이어 포지션을 계산할 때 플레이어 포지션과 로테이션 어느 부분을 고려하는지에 따라서도 포지션 유형을 확인하는 방법이 달라집니다:

포지션 유형

월드 위치

헤드 포지션

헤드 로테이션

World Locked

Yes

Yes

Yes

Tracker Locked

No

Yes

Yes

Face Locked

No

No

No

Steam VR

  • 쿼드 스테레오 레이어 셰이프만 지원합니다.

  • 알파 채널 무시를 위한 No Alpha 플래그를 지원하지 않습니다. 우회법은 텍스처에 알파 채널이 없도록 하거나 100% 불투명하게 하는 방법이 있습니다.

  • 모든 레이어에 뒷면 컬링을 수행, 레이어가 반대편에서 보이지 않습니다.

  • 다수의 레이어에 우선권이 같은 경우, HMD 뷰에서의 평균 거리 순으로 레이어를 렌더링합니다.

  • 스테레오 레이어에 사용되는 UE4 텍스처 내부에 UserInterFace2D (RGBA) 설정되어 있지 않으면 표시되지 않습니다.

Oculus VR

  • 쿼드 스테레오 레이어 셰이프만 지원합니다.

  • 월드 / 트래커 고정 레이어에 Support Depth 플래그를 지원합니다.

  • Oculus 플러그인은 모든 스테레오 레이어를 씬에 교차하는 것으로 취급합니다. 레이어에 Support Depth 플래그가 항상 true 설정된 것처럼 작동하도록 해줍니다. 어느 레이어를 위에 그릴지 순서를 변경하기 위해서는, 먼저 렌더링하고자 하는 레이어를 카메라 가까이로 직접 움직여 줘야 합니다.

Gear VR

  • 세가지 셰이프 유형 모두 구현합니다.

  • 월드 / 트래커 고정 레이어에 Support Depth 플래그를 지원합니다.

  • 다수의 레이어에 우순권이 같은 경우, 정의되지 않은 순서로 레이어를 렌더링합니다. 순서가 중요한 경우, 우선권을 다르게 설정하세요.

기타 VR 플랫폼

현재 다른 모든 VR 플랫폼은 기본 레이어 구현을 공유하는데 지원하는 사항은 다음과 같습니다.

  • 쿼드 스테레오 레이어 셰이프만 지원합니다.

  • 면 고정 레이어 우선권과 월드/트래커 고정 레이어 혼합을 위해 vr.StereoLayers.bMixLayerPriorities 콘솔 변수를 사용하는 것이 지원되지 않습니다.

  • 다수의 레이어에 우순권이 같은 경우, 정의되지 않은 순서로 레이어를 렌더링합니다. 순서가 중요한 경우, 우선권을 다르게 설정하세요.

레이어 셰이프

모든 플랫폼에 지원되는 유일한 레이어 셰이프는 쿼드리리니어(4선) 레이어 뿐입니다. GearVR 에서는 추가적으로 Cylinder(원통형) 및 Cube(큐브형) 레이어를 지원합니다.

레이어 그리기 순서

스테레오 레이어는 게임 월드 외부에 존재하며 각 레이어의 우선권 세팅에 따른 층으로 놓입니다. 우선권이 높은 레이어는 낮은 레이어 위에 렌더링됩니다. 추가적으로, 면 고정 레이어는 우선권과 상관 없이 항상 월드 또는 트래커 고정 레이어 위에 렌더링됩니다. -- 이 부분이 모든 레이어 유형이 혼합되던 UE4.16 이전과 다릅니다. 이전 방식으로 돌아가려면, vr.StereoLayers.bMixLayerPriorities 콘솔 변수를 1 로 설정하세요.

레이어는 항상 3D 씬 위에 렌더링되며, Oculus Rift 와 Gear VR 에서는 Supports Depth 플래그를 토글시켜 월드 고정 및 트래커 고정 레이어를 씬과 혼합하는 것을 지원합니다. 그 외 모든 플랫폼에서 이 플래그는 무시됩니다.

스테레오 레이어 셋업

VR 폰 에 스테레오 레이어를 사용하는 방법은 다음과 같습니다.

  1. 스테레오 레이어와 함께 사용하려는 Pawn 을 열고 Viewport 패널로 이동합니다.

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

  2. 컴포넌트 추가 버튼을 클릭하면 표시되는 드롭다운 목록에서 Stereo Layer 컴포넌트를 검색합니다.

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

  3. 이제 Stereo Layer 컴포넌트 를 끌어 Pawn 의 카메라 위에 놓아 카메라의 자손 액터로 만듭니다.

    VRSL_Pawn_Setup_03.png

  4. 컴포넌트 목록에서 Stereo Layer 컴포넌트 를 선택한 뒤 디테일 패널 에서 트랜스폼 섹션 아래 위치X 값을 100 으로 하여 VR 에서 잘 보이게 만듭니다.

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

  5. 디테일 패널 에서 Stereo Layer 섹션을 펼칩니다.

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

  6. 콘텐츠 브라우저 에서 표시하고자 하는 텍스처를 찾아 클릭하여 선택합니다. 그런 뒤 블루프린트로 돌아와 스테레오 레이어 섹션 아래 텍스처 입력 옆 작은 흰색 삼각형 을 눌러 그 텍스처를 사용하여 스테레오 레이어를 표시하도록 합니다.

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

  7. 다음 VR 에서 플레이 버튼을 눌러 프로젝트를 VR 에서 실행합니다. HMD 를 쓰면 텍스처 입력에 지정한 텍스처가 앞에 표시될 것입니다. 아래 비디오처럼 텍스처가 머리를 빨리 움직여도 HMD 를 정확히 따라올 것입니다.

    프로젝트를 VR 로 봐도 선택한 텍스처가 표시되지 않는 경우, 텍스처 압축 세팅이 올바르게 되어있는지 확인하세요. 사용중인 HMD 에 어떤 세팅을 사용해야 하는지 확실치 않은 경우, 스테레오 레이어 텍스처 압축 세팅 섹션을 참고하세요.

스테레오 레이어 텍스처 압축 세팅

사용중인 HMD 에 따라 텍스처 표시에 사용되는 압축 세팅을 조절해야 할 수 있습니다. 아래에서 여러 HMD 에 스테레오 레이어가 올바르게 표시되도록 하는데 필요한 텍스처 압축 세팅 관련 자세한 정보를 찾아볼 수 있습니다.

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

HMD 이름

필수 텍스처 압축 세팅

Oculus Rift

없음

Gear VR

없음

HTC Vive

UserInterFace2D (RGBA)

PSVR

없음

스테레오 레이어 프로퍼티 분석

스테레오 레이어에는 렌더링 방식에 영향을 끼치는 프로퍼티가 몇 개 있습니다. 다음 테이블은 그 세팅 각각에 대한 분석 및 스테레오 레이어에 끼치는 영향에 대한 설명입니다.

VRSL_Prop_Breakdown_00.png

세팅 이름

설명

Live Texture

라이브 텍스처 - 스테레오 레이어 텍스처를 매 프레임 업데이트해야 하는 경우 true 입니다 (씬 캡처, 비디오 등)

Supports Depth

뎁스 지원 - 플랫폼에서 사용가능할 때, 스테레오 레이어가 씬 지오메트리와의 깊이 교차를 지원해야 하는 경우 true 입니다.

No Alpha Channel

알파 채널 없음 - 텍스처가 자신의 알파 채널을 사용하지 않으면 true 입니다 (1.0 으로 대체됩니다).

Texture

텍스처 - 스테레오 레이어에 표시되는 텍스처입니다 (플랫폼에 스테레오 텍스처가 지원되는지입니다. 텍스처가 하나 이상 제공되면, 오른쪽 눈이 됩니다).

Quad Preserve Texture Ratio

쿼드 보존 텍스처 비율 - 쿼드가 내부적으로 설정된 텍스처의 크기에 따라 그 Y 값을 설정해야 하는 경우 true 입니다.

Stereo Layer Type

스테레오 레이어 타입 - 화면의 어디에 어떻게 쿼드를 렌더링할지 지정합니다.

Stereo Layer Shape

스테레오 레이어 셰이프 - 레이어 유형을 지정합니다. 어떤 셰이프는 특정 플랫폼에서만 지원되는 것이 있습니다.

Priority

우선순위 - 모든 스테레오 레이어 사이의 렌더링 우선순위로, 높은 것이 낮은 것 위에 그려집니다.

Left Texture

왼쪽 텍스처 - 스테레오 텍스처가 플랫폼에 지원되는 경우, 스테레오 레이어의 왼쪽 눈에 표시할 텍스처입니다.

Quad Size

쿼드 크기 - 렌더링되는 스테레오 레이어 쿼드의 크기입니다.

UVRect

UV 사각형 - 쿼드 면에 매핑된 UV 좌표입니다.

Cylinder Radius

원통형 반경 - 렌더링된 스테레오 레이어 원통형의 원형 크기입니다.

Cylinder Overly Arc

원통형 오버레이 원호 - 스테레오 레이어 원통형의 원호 각도입니다.

Cylinder Height

원통형 높이 - 스테레오 레이어 원통형의 높이입니다.

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

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

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

네이버 카페
공식 포럼