공간 기반 AR의 원리
증강 현실이란?
증강현실(Augmented Reality) 은 카메라 등으로 실제 환경을 파악하고, 그 위에 가상 정보(3D 오브젝트, 텍스트, 그래픽 등)를 실시간으로 합성해 현실 세계에 덧씌워 보이게 하는 기술입니다. 이를 위해 위치 센서, 자이로스코프, GPS 등 다양한 센서 데이터를 활용해 사용자가 보고 있는 물리적 공간을 인식하고, 정확한 위치에 가상의 오브젝트를 배치합니다.

아래 그림에서 왼쪽 부분은 AR 효과가 적용 되는 모습을 가상 공간에서 바라본 모습입니다. 카메라로 촬영되는 영상을 가장 뒤에 깔아 놓은 뒤, 가상 공간에서 렌더링이 되는 모습을 그 위에 얹어서 오른쪽 부분과 같이 AR 효과가 나타나게 됩니다. 왼쪽 화면에서 검은색의 물체가 앞뒤로 움직이는 것을 확인할 수 있으며 이는 카메라의 실제 움직임을 기록하여 가상 공간에 재현한 모습입니다. 이와 같은 방식을 통해 AR 효과를 만들어 낼 수 있습니다.

자연스러운 AR 효과를 위한 렌더링 결과를 만들어 내기 위해서는 3차원 공간 상에서의 카메라의 다양한 정보가 매우 중요합니다. 그 중 카메라의 위치가 특히 중요합니다. 실제 카메라의 위치와 가상 카메라의 위치가 정확하게 일치 할수록 자연스러운 AR 효과를 얻을 수 있게 됩니다.
스마트폰 환경에서의 AR
스마트폰 환경에서 증강현실을 구현하기 위해 iOS에서는 ARKit, Android에서는 ARCore를 사용합니다. ARKit과 ARCore는 VIO(Visual Inertial Odometry) 기술을 앱 개발자들이 쉽게 사용할 수 있도록 제작한 AR 라이브러리입니다. VIO는 카메라(비전) 정보와 관성 센서(가속도계, 자이로스코프 등)의 데이터를 함께 활용해서 기기의 위치(위치 좌표)와 자세(회전 각도)를 추적하는 기술입니다. 이를 통해 AR 환경에서 기기의 3D 공간 내 움직임을 안정적으로 파악할 수 있게 해줍니다. Unity, Unreal과 같은 게임 엔진은 ARKit나 ARCore와 같이 플랫폼에서 제공하는 AR 라이브러리를 쉽게 사용할 수 있도록 ARFoundation이나 Unreal XR 시스템과 같은 통합 라이브러리의 형태로 제공합니다.
지원 기기
ARKit과 ARCore는 제한된 기기에서 사용 가능합니다. 사용 가능한 조건은 다음과 같습니다.
-
iOS ARKit 사용 가능 기기
- A9 이상의 프로세서 탑재
- iOS 11.0 이상
-
Android ARCore 사용 가능 기기
카메라의 위치
카메라의 위치는 6DOF로 표현하며 지역 위치 와 전역 위치 로 구분 지을 수 있습니다.
6DOF (6 Degree of Freedom)
6DOF는 3차원 공간에서 특정 물체의 위치를 표현하는데 사용되는 값입니다. 6DOF는 서로 간섭하지 않는 6개의 값으로서 6자유도라고도 표현합니다. 6DOF를 구성하는 요소로 x축 이동, y축 이동, z축 이동, x축 회전, y축 회전, z축 회전 이렇게 6가지가 있습니다.
지역 위치 (Local Pose)
지역 위치는 카메라의 움직임에 따른 위치입니다. 위치 측정을 시작하는 곳을 항상 원점으로 설정하여 위치를 계산합니다. 지역 위치를 계산하는 방법은 다양하지만 스마트폰 환경에서는 주로 VIO 를 이용하여 카메라의 6DOF를 계산합니다. 지역 위치를 계산하는 기술들은 연산 속도가 빠르다는 장점이 있지만 전역 공간 상에서의 6DOF를 계산할 수 없다는 단점이 있습니다.
전역 위치 (Global Pose)
전역 위치는 공간 상에서 카메라의 6DOF입니다. GPS를 통해 얻을 수 있는 위도와 경도도 일종의 전역 위치라고 볼 수 있습니다. ARC eye를 활용하면 특정 공간을 3차원 디지털 공간으로 스캔할 수 있는데 이 공간 상의 특정한 위치도 전역 위치입니다. ARC eye를 통해 생성된 3차원 공간에서 전역 위치를 계산하기 위해서는 ARC eye의 Visual Localization(VL) 기술이 사용 됩니다. 전역 위치는 지역 위치와 비교 했을 때 더 많은 정보를 가지고 있지만 전역 위치를 계산하는 기술들은 실시간으로 연산을 수행하기 어렵다는 단점이 있습니다.

AR을 구현하기 위한 6DOF 계산 속도
AR 효과를 구현하기 위해서는 6DOF가 상당히 빠른 속도로 계산 되어야 합니다. 사람들마다 차이가 있지만 보통 1초에 30번 이상의 속도로 위치가 계산 되어야 AR 효과가 자연스럽다고 느낄 수 있습니다. 지역 위치를 계산하는 기술을 통해서는 1초에 30번 이상의 계산을 충분히 수행할 수 있지만 전역 위치를 계산하는 기술은 이와 같은 실시간 연산을 수행할 수 없습니다. VL 서비스의 경우 네트워크를 활용하는데 네트워크 부하를 고려하면 1초에 5번 정도로 연산을 수행할 수 있습니다. 이는 AR 기술을 적용하기 어려운 속도라고 볼 수 있습니다.
VLSDK를 사용하면 지역 위치와 전역 위치를 최소한의 코드 작성만으로 융합하여 자연스러운 공간 기반 AR 어플리케이션을 개발할 수 있습니다.