기업뉴스

[데뷰2017] 네이버, 밑바닥부터 시작한 ‘360도 뷰어’ 어떻게 개발했나

신현석
16일 개발자 컨퍼런스 ‘네이버 데뷔(DEVEW)’를 통해 김희재 FE플랫폼 담당자가 '360도 뷰어' 개발 과정을 소개하고 있다.
16일 개발자 컨퍼런스 ‘네이버 데뷔(DEVEW)’를 통해 김희재 FE플랫폼 담당자가 '360도 뷰어' 개발 과정을 소개하고 있다.


[디지털데일리 신현석기자] 네이버(대표 한성숙)가 개발자 컨퍼런스를 통해 360도 뷰어를 만든 경험을 소개했다. 지금의 서비스를 내놓기까지 쉽지 않은 시행착오를 거쳤던 네이버 실무자의 살아있는 경험이 고스란히 참석객들에게 전해졌다.

16일 코엑스 그랜드볼룸에서 열린 개발자 컨퍼런스 ‘네이버 데뷰(DEVEW)’를 통해, 네이버가 ‘360도 파노라마 이미지 뷰어’를 개발하면서 발생한 문제를 어떻게 해결했는지 공개했다. 360도 뷰어는 현재 네이버의 라인, 블로그, 포스트, 지도, 부동산 등 서비스에 적용됐다.

네이버는 왜 360도 뷰어를 자사 서비스에 접목했을까. 김희재 FE플랫폼 담당자는 “현장감 때문이다. 사용자가 실제 카메라 주위를 촬영하듯 주위를 둘러볼 수 있다”며 “시각적으로 이미지로 전달하거나 동영상으로 전달하면서 실제 그 장소에 가 있는 듯한 경험을 제공한다는 측면에서 매력적”이라고 말했다.

현재 네이버는 360도 뷰어 서비스를 사진 서비스 위주로 제공 중이다. 김희재 FE플랫폼 담당자는 “모든 방향을 촬영해야 하기에 특수 전용 카메라가 필요한 360도 영상은 촬영 및 편집 스킬이 필요하고 가성비가 좀 떨어진다”며 “360도 사진이 스마트폰으로도 촬영이 가능하고 한 프레임만으로도 고해상도 콘텐츠를 얻을 수 있다는 점에서 네이버 서비스에 적용하기 더 좋았다”고 밝혔다.



다만, 브라우저의 모션센서값을 사용함에 따라 파노라마 뷰어에서 문제가 발생했다. 네이버는 이를 해결하는 데 쉽지 않은 과정을 거쳤다. 기기 움직임을 감지하는 센서 중 네이버는 자이로센서와 가속도 센서를 퓨전해 사용했는데, 센서값을 사용하는 과정에서 각종 문제가 발생했다.

우선 주변 전자기기나 자성을 띠는 문제로 인해 지자계 센서 신호에 교란이 발생하는 문제가 있었다. 이에 대해 김희재 FE플랫폼 담당자는 “삼성 인터넷 4 이하에서는 ‘크롬41’을 기반으로 개발됐기에 갤럭시S6 이전의 모델은 스톡 브라우저가 이 같은 문제를 포함하고 있었다”며 “LOW레벨 API로 자이로센서와 가속도 센서 값을 직접 버무려서 보정하는 작업을 해야 했다. 가속도 센서와 자이로센서를 가진 유닛에서 나온 신호를 보정해서 사용하는 로직이 굉장히 인터넷에 많이 올라와 있고 표준적인 내용도 많았다. 이런 것을 참조했다”고 설명했다.

또한 네이버는 센서값을 조합하는 필터 알고리즘 중 구현이 비교적 복잡한 ‘칼맨(kalman)필터’ 대신 ‘컴플리멘터리(Complementary) 필터’를 택했다. 훨씬 구현하기 쉽고, 성능도 괜찮았다는 이유에서다. 컴플리멘터리 필터를 적용하는 데 있어, 숫자 3개(alpha, beta, gamma)로 이뤄진 값을 숫자 네 개로 이뤄진 Ouaternion(w, x, y, z)으로 바꿔 사용해 문제를 해결해나갔다.

또 다른 문제는 자이로센서의 영점 보정이 안 돼 스마트폰을 가만히 둬도 기기 속 360도 사진이 스스로 회전하는 현상이 발생했다는 점이다. 공장에서 출고할 때 하드웨어단의 모든 센서 값이 제대로 보정돼야 하는데 이것이 정확히 처리되지 않은 경우다.

김희재 FE플랫폼 담당자는 “‘기기가 멈춰 있는 순간을 안다면, 그 때 자이오센서 값을 영점 보정값으로 저장한 후에, 그 이후 나온 자이로센서 신호에 빼주면 되지 않을까’ 라는 아이디어를 냈다”며 “타이머를 설정하고 디바이스 오리엔테이션이 발생하고 나서 아무 일이 없는 일정 시간 이후에 타이머가 발생하도록 설정해, 기기가 멈춰있는 타이밍에 핸들러를 실행할 수 있었다. 안드로이드에서는 기가가 가만히 있을 때는 디바이스 오리엔테이션이 발생하지 않는다는 사실을 이용한 것”이라고 설명했다. 이를 통해 네이버는 전체적인 보정 프로세스를 통해 자이로센서의 영점 보정이 안 되는 문제도 해결했다.

이 외 네이버는 옆으로 누워 스마트폰을 사용할 때 360도 뷰어의 기울임이 이상하게 작동하는 경우와, 기기를 기울여서 몸 주위로 돌릴 시 뷰어 속 회전이 덜 되는 등의 문제를 해결한 사례를 소개했다. 김희재 FE플랫폼 담당자는 “향후 사용자들이 좋아하는 리틀 플래닛(Little planet) 형태의 렌더링과, 경량으로 360사진관이 이동할 수 있는 ‘라이트 웨이트 버투얼 투어(Light weight virtual tour)'이나, '360 동영상’ 재생 기능을 추가해 네이버 비디오 서비스에 적용하는 것이 목표”라고 말했다. 360도 뷰어는 지난주부터 오픈소스로 공개된 상태다.

<신현석 기자>shs11@ddaily.co.kr
신현석
webmaster@ddaily.co.kr
기자의 전체기사 보기 기자의 전체기사 보기
디지털데일리가 직접 편집한 뉴스 채널