오큘러스 이호민 소프트웨어 엔지니어

몇 년 전까지만 해도 가상현실(Virtual Reality, VR)은 그리 와닿지 않는 영역이었다. 존재하기는 했을지라도 "내가 저걸 써볼 일이 있을까?"하는 생각이 들었던 것도 사실이다.

하지만 어느새 사람들은 가상현실 소프트웨어를 개발하는 방법들을 연구하고 있다. 어떻게 하면 보다 완벽한 가상현실을 구현할 것인가. 포인트를 둬야할 부분은 어디인가. 청강 게임컨퍼런스 2014의 프로그래밍 분야 마지막 세션은 '오큘러스로 게임을 개발할 때 주목해야할 점'을 주제로 진행됐다.

[▲출처: 유튜브(*1분 26초부터 영상을 확인하세요)]

오큘러스 VR은 E3 2012에서 팔머 럭키와 존 카멕이 만든 프로토타입을 공개하며 본격적인 시작을 알렸다. 2012년 중순 창업으로부터 약 2년 여만에 두 번째 개발자 키트인 '오큘러스 리프트 DK2'까지 내놓으며 활발한 행보를 보이고 있다.

최근 페이스북에 인수될 당시 60여 명이었던 직원 수는 어느덧 200여 명까지 늘어났다. 현재 삼성과의 협업으로 갤럭시 노트4를 지원하는 Gear VR이라는 명칭의 모바일용 VR 키트를 개발 중이다. 지난 8월에는 LA에서 오큘러스 커넥트 2014(Oculus Connect 2014)라는 이름으로 자체 컨퍼런스를 열고 새로운 버전의 개발자 키트 크레센트 베이(Crescent Bay)를 공개한 바 있다.

[관련기사] 팔머 럭키, 존 카멕 키노트... 오큘러스, 9월 자체 개발자 컨퍼런스 개최

오큘러스 코리아에서 소프트웨어 개발을 맡고 있는 이호민 엔지니어는 가상현실에서 중요시하는 요소들로 화면 주사율(Persistence), 회전 지연(Latency), 그리고 몰입감(Immersive)을 꼽았다.

이 세 가지 요소는 현재 가상현실 헤드셋에서 발견되곤 하는 멀미 증세와 밀접한 연관이 있다. 이것이 해결되지 않으면 심한 어지러움와 함께 구토 증세를 유발할 수도 있다.

개발자 키트 리뷰에서 문제점으로 제기됐던 멀미.
위 세 가지 요소는 최적화된 경험을 위한 기본 조건이다

기본적으로 오큘러스 리프트는 현존하는 기술을 상회하는 수준의 화면 주사율을 요구한다. 최근 출시된 DK2 버전의 경우, 100도의 시야각을 갖췄으며 75hz의 주사율을 지원한다. 최소 초당 75프레임을 표현할 수 있어야 멀미를 유발하지 않는다는 것이 이호민 엔지니어의 설명이다. 현재 PC의 그래픽 기술 수준을 고려하면 매우 높은 수준이다.

오큘러스 개발팀 내부에서는 이것도 아직 부족하다고 생각하고 있으며, 지속적인 R&D를 통해 보다 높은 주사율을 지향하고 있다.

오큘러스 커넥트에서 공개된 크레센트 베이는 보다 높은 스크린 디스플레이 성능을 갖추고 있으며, 화면 주사율을 초당 90프레임까지 높였다. 게다가 센서의 장착 범위를 확대해 360도 회전도 감지할 수 있다. 여기에 자체 이어폰을 추가해 헤드셋을 별도로 갖추지 않아도 된다.

[관련기사] 시각과 청각 둘 다, 거기에 모바일까지? 오큘러스 신형 '크레센트 베이'

삼성과의 협업으로 개발 중인 Gear VR은 오큘러스 VR의 CTO인 존 카멕이 리드하는 프로젝트다. 1440p OLED 스크린과 60hz의 주사율을 갖췄으며, 무선으로 디자인됐다. 헤드셋 전면부에 갤럭시 노트4를 장착해 모바일 어플리케이션의 가상현실을 제공하는 기기다.



현재 오큘러스 헤드셋들의 사양.
위에서부터 DK2, 크레센트 베이, Gear VR

오큘러스 리프트용 SDK는 현재 0.4.2 버전이 배포되고 있다. DK1와 DK2 모두를 지원하며, 전세계 어느 국가에서든 편리하게 사용할 수 있도록 하기 위해 C 인터페이스를 채택했다는 것이 이호민 엔지니어의 설명이다.

과거 0.2.x 버전의 SDK에 비해 수작업을 필요로 했던 부분들이 대폭 수정됐으며, 함수 몇 개만 호출하면 자동으로 처리할 수 있는 부분이 늘어났다.

현재 오큘러스 리프트 SDK는 언리얼3, 4 엔진과 유니티 엔진을 지원한다. 언리얼의 경우 엔진 자체에 SDK가 내장되어 있으며, 유니티 엔진은 홈페이지에서 SDK 데모를 다운받아서 플러그인 방식으로 사용할 수 있다. 유니티 엔진의 경우 플러그인을 사용하기 위해서는 Pro 버전을 구입해야하지만, 예외적으로 오큘러스 SDK는 Free 버전에서도 사용할 수 있도록 합의가 된 상태다.




현재 오큘러스는 두 가지 디스플레이 방식을 사용한다. Extended Mode는 오큘러스 헤드셋을 현재 사용 중인 것과 별개의 디스플레이로 인식하는 방식이다. 모니터 하나를 사용하고 있다면 오큘러스 헤드셋은 두 번째 디스플레이로, 듀얼 모니터를 사용하고 있다면 세 번째 디스플레이로 인식되는 방법이다.

다른 하나는 Direct to Rift다. 이 방식에서는 기본적으로 오큘러스 헤드셋을 디스플레이로 인식하지 않는다. 가상현실 소프트웨어를 실행하면 이때부터 오큘러스 헤드셋이 메인 디스플레이로 인식되며, 리소스 효율성을 집중 활용할 수 있기 때문에 보다 높은 퀄리티의 경험을 제공할 수 있다.

현재 오큘러스 VR 측에서는 Direct to Rift를 주력으로 활용하려는 계획을 갖고 있다. 다만, 현재까지 일부 기기 및 OS와 호환되지 않는 문제점이 있어 Extended Mode를 함께 사용 중이며, 서서히 없애나간다는 방침이다.



가상현실에서 가장 중요한 이슈는 Latency, 즉 회전 지연이다. 헤드셋을 착용한 상태로 고개를 빙글 돌렸을 때, 회전을 멈춘 지점의 화면을 빠르고 정확하게 보여줘야 한다. 물론 회전 중에도 실제 고개를 돌려서 주변을 바라볼 때와 유사한 모습을 볼 수 있어야 한다.

이 과정을 디스플레이로 표현하는 과정에서 멀미가 발생한다. 이호민 엔지니어는 이 Latency야말로 오큘러스의 전쟁 대상이자 진행 중인 과제라고 말했다. 현재는 약 20ms(millisecond, 1/1000초) 정도로, 과거에 비해 2배 이상 향상된 수준이지만 개발팀 내부에서는 5ms 정도를 이상적인 수준으로 보고 있다.

이 Latency를 줄이기 위해 연구 중인 방법이 타임워프(TimeWarp)다.

DK2에서 초당 75프레임으로 화면이 돌아간다고 가정했을 때, 단순계산으로 각 프레임은 약 13.3ms 동안 보여진다. 이 환경에서 고개를 옆으로 돌리게 되면 눈으로 보여지는 화면은 매우 빠르게 변하는데, 여기에서 타임워프 기술을 사용하게 된다. 13.3ms 중 11ms나 12ms에서 보여질 장면을 미리 받아와서 렌더링을 걸어주는 방식이다. 만약 초당 75프레임 이하의 환경이라면 심한 어지러움이 발생할 수밖에 없다는 설명이다.

이호민 엔지니어는 "가상현실에서는 ms를 매우 중요한 단위로 본다"며 "단 1ms의 차이로도 '최적의 사용자 경험'이 결정될 수 있다"고 말했다.

Latency가 발생하는 원인을 도식으로 표현하자면 이렇다

초당 75프레임을 기준으로 했을 때 하나의 프레임에 할당된 시간은 13.3ms.
이 중 11~12ms에 해당하는 화면을 미리 렌더링해서 보여주는 것이 타임워프의 핵심이다


마지막으로 이호민 엔지니어는 오큘러스 VR의 향후 로드맵을 언급했다. 개발팀은 타임워프 기술을 더욱 세밀하게 최적화시키는 작업에 주력할 예정이며, 지속적인 드라이버 업데이트 및 리눅스 OS 지원도 진행 중에 있다.

또한, 그는 "향후 몇 년 사이에 개발자 키트가 아닌 상용화 버전이 한 번쯤 출시될 수도 있지만, 기본적으로는 최적의 환경을 표현하기 위한 연구 개발(R&D)에 집중할 것"이라고 밝혔다.