프로젝트 소개
증강현실 응용서비스를 위한 앱(Application, App)은 사용자의 가계부 입력을 기반으로 마일리지를 계산하여, 해당 마일리지를 소비하여 매장에 가상객체를 설치할 수 있도록 합니다. 해당 가게에 접근하였을 시 설치된 가상객체들을 볼 수 있게 합니다. 또한, 사용자의 가계부 입력을 기반으로 방문횟수에 따른 Heatmap을 그려 방문빈도에 대한 정보를 시각화하여 보여줍니다. 이를 위해 개발되는 앱에는 AR(증강현실) 모듈, GPS 검출 및 적용 알고리즘과 GPS 오차범위를 보정할 수 있는 알고리즘, Mapbox를 사용합니다.
개발환경
Mapbox
Mapbox는 사용자가 지도를 커스텀마이징 할 수 있습니다. Mapbox는 사용자가 입력한 Data값에 대한 저장과 이를 동기화해주는 기능이 있어 사용자의 Data값으로 Heatmap을 그리기에 가장 적절하였습니다. Vuforia가 Unity를 지원하고 Mapbox또한 Unity를 지원하여서 가장 적절하다고 생각하였습니다.
Vuforia
Vuforia와 Unity를 활용하여 AR모듈을 구현하였습니다. Vuforia에는 사용자와 가상객체와의 거리를 계산해주어 렌더링해주는 엔진이 탑재되어있습니다. 또, 사용자 환경의 수평면에 가상개체를 배치할 수 있고, 수평 표면의 탐지 및 추적을 지원하는 Ground Plane 기술, Anchor Point를 사용하여 공중에서 가상객체를 배치할 수 있는 Mid-Air기술이 있습니다. AR객체에 대한 기술들이 잘 구비되어있어, 전문적인 지식없이도 사용할 수 있을 정도의 기술을 지원합니다.
결과화면
참여한 부분
Unity와 Vuforia를 활용하여 여러 개의 AR 객체를 생성할 수 있게 하였고, 해당 AR 객체의 GPS데이터(위도, 경도)와 AR 객체의 정보를 저장합니다. 그리고 해당 위치에 도달하였을 시 해당 AR 객체 데이터를 불러와 사용자의 화면에 보여줍니다.
사용자가 가계부를 입력하면 해당 GPS데이터(위도, 경도)를 MapBox SDK를 이용하여 MapBox에 해당 데이터를 반영합니다. 그리고 지도를 눌렀으면 Mapbox에서 해당 데이터로 생성된 HeatMap을 불러와 사용자에게 보여줍니다.
느낀점
Unity를 처음으로 사용해보았습니다. 산업체와 함께 진행하였던 프로젝트여서 Unity, Mapbox, Vuforia를 사용하여야 한다는 조건이 붙어있었습니다. 처음 사용해보는 3가지를 모두 다루는 것이 힘들었습니다.
Mapbox의 경우에는 Custom Map기능이 가장 돋보였습니다. 기존의 지도를 가져와서 사용자의 입맛대로 변형이 손쉽게 되었습니다. 하지만 지도를 불러오는 속도와 데이터에 따라 지도가 업데이트 되는 주기가 느린 것이 불편하였습니다. Mapbox Doc을 몇번이나 뒤져가며 해당 내용을 찾아보았지만, SDK로는 해결이 불가능하였고, API 호출로 해결하였습니다. SDK로 DataSet을 수정할 수 없어서, API를 통해 수정해주었습니다. 그리고 수정한 데이터로 새로운 지도를 만들도록 해주었습니다.
Vuforia의 경우에는 문서가 생각보다 복잡하고 AR에 대한 사전지식이 없어서 내용을 이해하기 힘들었는데, Example에 있는 기능들을 하나씩 테스트해보면서 필요한 기능들만 뽑아서 원하던 것에 가까운 결과를 얻어 내었습니다. save와 load기능은 존재하지 않아서 객체를 구성하는 요소들을 저장하여 이를 통해 재현해야 했습니다. 객체가 어떻게 구성되는지 알아보기 위하여 속성 한 개씩 직접 조절해가며 변화를 살펴가며 이해했기 때문에 시간이 오래 걸렸습니다. 아쉬웠던 점은 생각한대로 정확히 구현이 되지 않았던 점입니다. GPS값을 일정하게 잡아주는 것도 힘들었고, AR을 생성할 때 기준점을 잡아주어야 하는데 해당 기준점이 매번 일정하게 잡히지 않아서, 원하던 대로의 구현은 되지 않았습니다.
'프로젝트' 카테고리의 다른 글
Kotlin을 이용한 데이터 수집앱과 데이터 분석 (0) | 2019.11.06 |
---|---|
TCP/IP Socket Programming 번역 채팅앱 (0) | 2019.11.06 |
오픈소스를 활용한 안면인식 도어락 (0) | 2019.11.06 |