가상 현실 실전 사례

VR 개발 관련 정보입니다.

Windows
MacOS
Linux

가상 현실(VR)용 콘텐츠 개발시 최적의 사용자 경험을 보장하기 위해서 작업방식에 약간의 조정이 필요합니다. 이 가이드의 목적은 VR 프로젝트용 콘텐츠 개발시 알아둬야 할 몇 가지 중요 사안들을 짚어드리는 데 도움이 되고자 함입니다.

VR 프로젝트 세팅

VR 프로젝트를 새로 만들 때, 프로젝트가 블루프린트 기반이든 C++ 기반이든, 모바일 / 태블릿 옵션에 스케일가능 3D 또는 2D 그래픽과 시작용 콘텐츠 없이 프로젝트를 만드는 것이 VR 프로젝트를 시작하는 데 적합합니다.

Click for full image.

VR .INI 세팅

다음 .INI 세팅은 UE4 제작 VR 데모 Showdown 에서 따온 것입니다. 이러한 .INI 세팅을 사용하려는 경우, Config\ DefaultEngine.INI 파일의 SystemSettings 아래 추가해 줘야 합니다.

[SystemSettings]
vr.PixelDensity=1
r.SeparateTranslucency=0
r.HZBOcclusion=0
r.MotionBlurQuality=0
r.PostProcessAAQuality=3
r.BloomQuality=1
r.EyeAdaptationQuality=0
r.AmbientOcclusionLevels=0
r.SSR.Quality=1
r.DepthOfFieldQuality=0
r.SceneColorFormat=2
r.TranslucencyVolumeBlur=0
r.TranslucencyLightingVolumeDim=4
r.MaxAnisotropy=8
r.LensFlareQuality=0
r.SceneColorFringeQuality=0
r.FastBlurThreshold=0
r.SSR.MaxRoughness=0.1
r.rhicmdbypass=0
sg.EffectsQuality=2
sg.PostProcessQuality=0

VR 월드 스케일

월드의 스케일을 제대로 잡는 것이 VR 플랫폼에서 최적의 사용자 경험을 내는 데 도움이 되는 가장 중요한 것 중 하나입니다. 스케일을 잘못 잡으면 온갖 종류의 감각계통 문제가 유발될 수 있으며, 심지어 시뮬레이션 멀미가 날 수도 있습니다. 오브젝트는 플레이어의 카메라와 0.75 에서 3.5 미터 까지 거리에 있을 때 VR 로 가장 쉽게 볼 수 있습니다. UE4 에서 1 언리얼 유닛(UU)은 1 센티미터(cm)와 같습니다. 즉 언리얼에서 VR 사용시 플레이어의 카메라에서 75 UU 에서 350 UU 까지 떨어져 있는 오브젝트가 가장 잘 보입니다.

거리

언리얼 유닛(UU) 거리

1 센티미터

1 언리얼 유닛

1 미터

100 언리얼 유닛

1 킬로미터

100,000 언리얼 유닛

월드의 스케일은 월드 세팅 아래 있는 World to Meters 변수로 조정할 수 있습니다. 이 수치를 높이거나 낮추면 사용자가 주변의 월드를 상대적으로 더욱 크게 또는 작게 느낍니다. 콘텐츠 제작시 1 언리얼 유닛 = 1 센티미터로 만든 경우, World To Meters10 으로 설정하면 월드가 매우 커 보이는 반면, 1000 으로 설정하면 매우 작아 보입니다.

T_VR_World_To_Meters_00.png

VR 과 시뮬레이션 멀미

Simulation Sickness, 시뮬레이션 멀미 는 VR 월드에서 HMD 디바이스 사용시 발생할 수 있는 일종의 멀미 현상입니다. 시뮬레이션 멀미 는 사용자의 VR 경험에 크게 영향을 끼칠 수 있으며, 어떤 경우에는 전체적인 VR 경험을 망치기도 합니다. 사용자가 안좋은 VR 경험 할 확률을 줄이기 위해서는, 아래 나열된 실전 사례를 세밀해 따라 주시기 바랍니다. 그러지 않으면 사용자는 매우 불쾌한 VR 경험을 하고 말 수가 있습니다.

  • 프레임 속도는 반드시 유지해야 하며, 이상적으로는 약간의 여유를 두어 HMD 의 원래 프레임 속도보다 항상 우위에 있도록 해 주어야 합니다. 낮은 프레임 속도 또한 시뮬레이션 멀미의 원인이 될 수 있으므로, 프로젝트를 최대한 최적화하시기 바랍니다. 다음 표는 UE4 가 지원하는 여러가지 HMD 와, 그 디바이스에서 충족시켜야 하는 VR 프로젝트의 프레임 속도입니다.

    HMD 디바이스

    목표 프레임 속도

    DK1

    60 FPS

    DK2

    75 FPS

    Rift Retail

    90 FPS

    Vive

    90 FPS

    Gear VR

    60 FPS

    PSVR

    최대 120 FPS 내 가변

  • 개발자들은 VR 디바이스 사용에 너무 익숙해져 있어서 최악의 테스트 대상입니다. 시뮬레이션 멀미가 생기지 않도록 하기 위해서는 가급적 다양한 사람들에게 게임을 확인시켜 보도록 하십시오.

  • 시네마틱 카메라처럼 플레이어에게서 카메라 이동 제어권을 앗아가는 것은 무엇이든 피하도록 하세요. 최악의 VR 경험을 남기는 가장 큰 주범입니다.

  • 필드 오브 뷰(FOV)를 수동으로 덮어쓰지 마시고, 이 옵션을 사용자가 편집할 수 있도록 노출시키지도 마십시오. 이 값은 헤드셋과 렌즈의 물리적인 지오메트리와 맞아 떨어져야 하며, 디바이스의 SDK 및 내부 환경설정을 통해 자동으로 설정될 것입니다. 일치되지 않는다면 고개를 돌릴 때마다 월드가 워프하는 것처럼 보여, 불편함이나 메스꺼움이 유발될 수 있습니다.

  • 대부분의 일인칭 게임에서 볼 수 있는 카메라 효과인 "Walking Bob", 걸음걸이에 따라 카메라를 흔들리게 하는 효과를 넣지 마십시오. 인체의 운동을 흉내내기 위해 카메라를 위아래로 움직이게 만들면 플레이어에게 시뮬레이션 멀미를 유발하여 VR 경험을 망칠 것입니다.

  • 이벤트를 플레이어에게 연계시키려고 할 때 카메라를 "흔들지" 마십시오. 수류탄이 플레이어 옆에서 터지는 경우, 카메라를 흔드는 것이 VR 게임이 아닌 경우에는 합당할 수 있지만, VR 게임에서는 시뮬레이션 급 멀미가 생길 수 있습니다.

  • VR 게임용 월드와 레벨을 디자인할 때, 평소보다 빛과 색을 어둡게 하도록 하십시오. VR 게임에서 강하고 현란한 라이팅은 시뮬레이션 멀미를 보다 빠르게 생기도록 할 수 있습니다. 평소보다 시원한 색에 어두운 라이트를 사용하면 이러한 현상을 피할 수 있습니다.

  • 계단보다는 승강기를 사용하세요. 플레이어가 매우 빠르게 움직일 때, 특히나 계단같은 것을 오르내릴 때는 방향감각이 매우 혼동될 수 있습니다.

  • 플레이어는 모드 최대 속도부터 시작해야 하며, 천천히 가속해서 최대 속도로 가지 않아야 하고, 이동 속도는 항상 고정된 비율의 가속도여야 합니다.

  • 뎁스 오브 필드나 모션 블러 포스트 프로세스는 사용자가 보는 것에 크게 영향을 끼칠 수 있으며, 무엇보다도 시뮬레이션 멀미를 매우 빨리 유발할 수 있기에 사용하지 마십시오.

위 목록이 시뮬레이션 멀미의 근본적 원인 전부를 완전히 모아놓은 것은 아니지만, 플레이어가 자신의 VR 게임을 플레이하면서 어지러움을 호소하는 이유가 무엇인지 파악하기에는 충분할 것입니다.

VR 카메라 셋업

UE4 에서의 VR 카메라 구성 방식은 전적으로 앉아서 하느냐 서서 하느냐에 따라 갈립니다. 앉아서 하는 경우 캐릭터가 서도록 하려면 카메라 원점을 인위적으로 올려주어야 할 것입니다. 하지만 서서 하는 경우, 카메라 원점이 0, 땅 위치에 오도록 해야 합니다. 그 설정 방법은, 카메라 컴포넌트를 씬 컴포넌트에 붙일 때 캐릭터의 바닥 (땅 레벨) 에 하느냐, 아니면 눈 높이의 캐릭터의 콜리전 캡슐 원통형 높이의 절반으로 설정하느냐 입니다.

Standing VR Camera

Seated VR Camera

VR 캐릭터 세팅

VR 헤드셋을 사용하는 캐릭터 셋업은 표준 캐릭터에 비해 살짝 다릅니다. 캐릭터 신장, 폭, 속력, 카메라 위치 모두 VR 캐릭터에 적합하도록 약간씩은 조정을 해야 합니다.

VR 월드용 오브젝트를 제작할 때는, 디지털 오브젝트의 스케일을 현실의 대응물과 동일하게 만드는 것이 중요합니다. 현실의 것보다 크게 혹은 작게 만들면 이루고자 하는 몰입감을 해칠 수 있습니다.

캐릭터 신장 & 폭

캐릭터 신장 & 폭은 실제 측정치에 가급적 가까워야 합니다. 너무 크거나 작으면 이루고자 하는 몰입감을 해칠 수 있습니다.

프로퍼티

UE4 기본

VR 추천

신장:

192 cm

176 cm

폭:

84 cm

68 cm

이동 속력

VR 이동 속력은 추천하기가 어려운 속성인데, 이동 속도는 이루고자 하는 경험의 종류에 따라 크게 달라지는 부분이기 때문입니다. 엘리멘탈 VR 데모를 예로 들면, 이동 속력은 보통 속력의 1/4 이었습니다.

프로퍼티

UE4 기본

VR 추천

이동 속력:

60 m/s

24 m/s

카메라 위치

VR 카메라는 캐릭터의 눈 위치에 있는 것을 보정하기 위해 기본 눈 높이보다 약간 낮게 위치시켜 줘야 합니다.

프로퍼티

UE4 기본

VR 추천

기본 눈 높이:

180 cm

160 cm

VR 콘텐츠 고려사항

VR 콘텐츠 제작시 기억할 것은, 사용자가 콘텐츠를 여러 각도에서 본다는 점입니다. 과거에 문제가 없었지만 VR 에서는 피해야 하는 것들 몇 가지는 이렇습니다:

  • 스케일 - VR 월드에서 오브젝트의 스케일 관련해서 할 수 있는 최선은, 가급적 현실에 가깝게 하는 것입니다. 가상의 오브젝트 크기를 현실 대응물보다 크게 또는 작게 만들면 혼동 또는 시뮬레이션 멀미가 날 수 있습니다.

  • 폴리곤 면 생략 - 표준 게임에서는 플레이어가 볼 수 없는 오브젝트의 폴리곤 면들을 제거해도 괜찮을 뿐만 아니라 권장할 만한 일이기까지 합니다. 하지만 VR 게임에서는 플레이어의 시점 자유도가 훨씬 높기 때문에, 이러한 이전 방식은 플레이어에게 보이지 말아야 할 것이 보일 수 있으므로 더이상 통하지 않습니다.

  • 사용할 라이팅 유형 - 거의 항상 스태틱 라이팅라이트맵 을 사용해서 VR 프로젝트를 만들어야 하는데, 렌더링 비용이 가장 싼 옵션이기 때문입니다. 다이내믹 라이팅을 사용해야 하는 경우, 가급적 그 수를 줄이도록 하고, 절대로 서로 겹치도록 하지 않습니다. 야외 씬이 있는 경우 디렉셔널 라이트를 스테이셔너리가 아닌 다이내믹으로 설정한 뒤 캐스케이드 섀도 맵(CSM)을 켜고서 세팅은 가급적 단순하게 하여 최소한의 비용으로 그림자를 그리도록 합니다.

  • VR & VFX - 일부 VFX 트릭 중 SubUV 텍스처 를 사용하여 불이나 연기 시뮬레이션을 내는 경우, VR 에서 볼 때는 별로 좋지 않습니다. 여러 경우에 폭발이나 연기 자취같은 VFX 시뮬레이션에는 2D 파티클 대신 스태틱 메시를 사용해야 합니다.
    근처 또는 카메라에 매우 가까이서 발생하는 이펙트는, 스태틱 메시 파티클로 만들어진 이펙트의 경우에만 꽤나 잘 돌아갑니다.

  • VR & 반투명 - 3D 그래픽에서 반투명 렌더링은 매우 비쌉니다. 일반적으로 무언가 변하지 않았나 매 프레임 계산을 해야 하기 때문입니다. 이러한 재계산때문에 VR 에서의 반투명 렌더링은 얻는 효과에 비해 비용이 너무 비싸질 수가 있습니다. 하지만 이러한 문제에 대한 우회책으로 DitherTemporalAA 머티리얼 함수가 있습니다. 이 머티리얼 함수는 반투명같은 효과를 내면서 셀프 소팅같은 흔한 반투명 문제도 피할 수 있습니다.

    Click for full image.

  • 가급적 훼이크 사용 - 다이내믹 섀도 / 라이팅은 렌더링 비용이 비싸므로, 교묘하게 싼 방식으로 재현해 낼 수 있으면 VR 퍼포먼스 목표치를 달성하는 데 큰 이득이 될 수 있습니다. Showdown 에서 캐릭터가 다이내믹 섀도를 드리우게 했더니 매 프레임 비용이 너무 비싸져서, 다이내믹 섀도를 프로젝트에서 쳐내야 했습니다. 하지만 그게 캐릭터가 떠서 이동하는 것처럼 보이게 만들기도 했습니다. 그래서 훼이크로 원형 그림자를 들여와 캐릭터와 월드 내 오브젝트의 거리에 따라 위치와 강도를 동적으로 조절하였습니다. 이런 식으로 캐릭터가 바닥이나 다른 오브젝트 가까이 갈 때 그림자를 드리우는 것과 같은 효과를 내는 데 도움이 되었습니다.

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

알려진 VR 문제점

HMD 작동 방식으로 인하여 기존 비디오 게임 개발에 자주 쓰이던 아트 기법 몇 가지는 더이상 전과 같은 효과를 내지 못하게 되었습니다. 여기서는 VR 에서 예상대로 작동하지 않는 기능과, 그에 대한 우회법을 살펴봅니다.

  • Screen Space Reflections(SSR): 스크린 스페이스 리플렉션 - SSR 이 VR 에서 작동은 합니다만, 거기서 만들어지는 반사면이 월드의 실제 내용과 일치하지 않는 문제가 있을 수 있습니다. SSR 대신 리플렉션 프로브 를 사용하면, 비용도 절감되고 리플렉션 일치 문제도 덜합니다.

노멀 매핑 문제

VR 에서 오브젝트의 노멀 맵을 볼 때, 그 임팩트가 이전만 못하다는 것을 알게 될 것입니다. 왜냐면 노멀 매핑은 망원경식 디스플레이나 동작의 시차를 고려하지 않기 때문입니다. 그로 인해 노멀 맵은 VR 디바이스에서 보면 평평해 보이는 경우가 종종 있습니다. 그렇다고 노멀 맵을 사용하지 말아야 한다거나 필요가 없는 것은 아니며, 데이터를 면밀히 조사하여 노멀 맵으로 내고자 했던 효과를 그냥 지오메트리에 만들어 버리는 것이 낫지 않을지 판단을 해야 한다는 것입니다. 노멀 맵 대신 사용할 수 있는 기법 몇 가지는 다음과 같습니다.

  • 패럴랙스 매핑: 패럴랙스 매핑은 노멀 매핑이 고려하지 않는 뎁스 큐를 고려하여 한 단계 발전된 것입니다. 패럴랙스 매핑 셰이더는 오브젝트의 디테일을 원래보다 살려 주어 깊이 정보를 더욱 잘 표시해 줍니다. 그 이유는 어느 각도에서 보든, 패럴랙스 맵은 그 시점에서 올바른 깊이 정보를 표시하는 데 그 자체적으로는 항상 맞기 때문입니다. 패럴랙스 맵을 사용하기 가장 좋은 곳은, 자갈밭 길이나 디테일이 세밀한 표면입니다.

태그
Select Skin
Light
Dark

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

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

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

네이버 카페
공식 포럼