최고 품질의 상품들을 지금보다 더 많은 소비자들이 여러 유통 채널에서 더욱 폭 넓고 쉽게...
평소 본인이 연구 및 관심을 가지고 있는 사항에 대해서 적어주세요.
[AR 기술]
미래에는 AR 기술 상용화와 HMD가 경량화될 것으로 생각해 AR 환경을 스마트폰 터치 등이 아닌 손으로 직접 제어할 수 있는 기술을 개발했습니다.초기 AR은 한손으로 스마트폰을 들고 AR 환경을 체험하는 형태였습니다. 그러나 Google Glass등의 소형 HMD의 등장으로 사용자는 자유로운 두 손으로 AR 환경을 접할 수 있게 되었습니다. 이에 따라 사용자가 스크린 터치 등이 아닌 방식으로 증강현실을 제어할 수 있는 새로운 방법 구현에 대해 생각하게 되었습니다. 손의 모양과 움직임을 인식하고 추적하는 기술은 증강현실의 디지털 컨텐츠에 물리적인 작용을 통한 정보의 전달로 이어질 수 있으므로 이러한 기술을 통해 AR 환경을 직접 손으로 직접 제어할 수 있는 사용자 경험을 제공하고자 프로젝트를 진행했습니다. 스마트폰 카메라를 통해 비춰지는 손의 움직임을 통해 화면에 보이는 AR 물체를 만지고 건드리는 방식 등으로 제어할 수 있게 하는 것을 첫번째 목표로 삼고 개발을 진행했습니다.
HSV 색상 모델을 사용해 실시간 손 추적 알고리즘을 구현했고 단순한 추적 외에 가상의 3D 손 모델을 생성할 수 있게 필요한 손가락 끝과 손바닥의 좌표를 얻을 수 있도록 알고리즘을 개조했습니다. 피부색으로 판단되는 영역을 오브젝트 영역으로 만들어 이미지를 이진화하고, 노이즈를 제거한 후 손의 가장자리와 꼭짓점들을 검출했습니다. 인접한 꼭짓점들을 통합해 꼭짓점 개수를 줄이고, 손의 중심으로부터 가장 먼 꼭짓점들을 구해 손가락 끝점을 구했습니다. 이렇게 구한 점들의 좌표를 유니티의 가상 세계에 대응시켜 가상 손 모델을 만들었습니다. 이 가상 손과 가상 세계 안의 3D 물체가 상호작용하면서 손으로 증강현실을 제어할 수 있었습니다.
정확성을 높이기 위한 딥러닝 서버와 통신하도록 카메라 영상을 서버로 전송하는 소켓 통신을 구현했습니다. 또 서버에서 출력값 수신 시 서버의 연산을 기다리는 동안 프레임이 블록 되는 것을 막기 위해 통신에 대해 스레드를 생성해 추적 연산과 통신을 병렬적으로 처리했습니다.
최종적으로 증강현실에서 가상의 3D 물체를 손으로 직접 건드릴 수 있었습니다. 이는 경량화되어가는 HMD의 내장 소프트웨어로 적용되면 AR 환경을 접하는 사용자 경험에 더욱 편리함을 가져다 줄 것으로 예상되며 다양한 오락 기능으로도 발전할 수 있어 게임에 새로운 패러다임을 제시할 것으로 기대합니다.
[게임 개발]
AR 기술 개발에 관심을 쏟으며 유니티 엔진을 사용하면서 게임 개발에 대한 관심이 생겼습니다. 최근 유행하는 게임 트렌드에 맞추어 B급 감성의 컨셉을 잡았고, 이를 녹여낼 콘텐츠로 축구를 선택했습니다. 그러나 일반적인 11대 11의 축구 게임이 아닌 개인전 축구게임입니다. 공은 두개, 골대는 플레이어 수만큼 존재하며 플레이어는 자신의 골대는 방어하면서 상대방의 골대에 골을 넣어야 하는 형태로 진행되었습니다. 반칙이 없어서 마음대로 태클을 할 수 있으며 피버볼 개념을 도입해 게임 시간이 1분 미만으로 남았을 때 점수가 큰 공이 추가되도록 했습니다.
가장 큰 문제는 플레이어와 공의 위치 동기화였습니다. 락스텝 방식, 서버 시뮬레이션 방식 등 여러 동기화 방식에 대해 찾아보았지만 서버 성능의 한계로 서버 시뮬레이션 방식은 불가능했고, 입력이 아닌 플레이어의 위치를 전송하는 구현 방식의 특성상 기존의 락스텝 방식을 사용하기에도 무리가 있었습니다. 캐릭터의 절대 좌표를 서버에 전송하고 서버에서는 다른 플레이어에게 이를 브로드캐스팅 하는 방식이었기에 캐릭터가 먼저 움직여야 했고 이것이 가장 큰 장애물이었습니다. 따라서 키 입력 시 로컬에서 캐릭터를 움직이지 않고 보이지 않는 객체를 만들어 움직인 후에 그 좌표를 서버에 전송하고, 다시 서버로부터 수신했을 때 움직이도록 구현했습니다. 그 외에도 서버의 부하를 줄이기 위해 위치 정보를 모아뒀다가 일정한 시간 간격을 두고 전송하고 그에 따라 클라이언트 측에서 움직임을 보간 하는 등 여러 작업을 추가했습니다.
현재 플레이어의 움직임은 네트워크가 좋은 환경 하에선 완벽하지만 네트워크가 불안정한 상태에서는 입력이 제대로 이루어지지 않는 등의 문제점이 있습니다. 또한 공의 위치가 게임에는 지장 없을 정도이지만 완벽하게 동기화되지 않아 이에 대해 고민하고 있습니다.
자유롭게 본인에 대해 소개해주세요.
[끊임없는 욕심과 도전정신]
IT 기술은 계속해서 변하기 때문에 이 직무에서 중요한 역량은 새로운 기술을 습득하려는 욕심과 도전 정신이라고 생각합니다. 저는 프로젝트를 진행하면서 만나는 모르는 분야에 대한 갈증을 도전으로 해소하고 있습니다.
첫 협업 프로젝트인 경복궁 현장학습 효과를 높이기 위한 오락 및 교육용 안드로이드 앱은 방 탈출 게임으로부터 착안한 아이디어로 사용자는 경복궁 곳곳을 돌아다니면서 단서를 찾아야만 어플리케이션에서 제공하는 퀴즈를 풀 수 있습니다. 이에 AR 기술을 접목한 요소를 추가하고 싶었으나 해당 분야에 대한 지식이 없어 구현하지 못했습니다. 프로젝트 종료 후 아쉬움을 달래기 위해 유니티 엔진을 독학하였고 AR 기술을 적용한 캠퍼스 구조물 정보 제공 및 길 찾기 서비스를 개발하였습니다. 이어서 미래에는 AR 기술 상용화와 HMD 경량화를 고려해 AR 환경을 스마트폰 터치 등이 아닌 손으로 직접 제어할 수 있는 기술을 개발하였습니다. 현재 현장 실습 중인 기업에서도 이전에 오픈 소스로 공개한 해당 프로젝트를 열람한 적이 있을 정도로 완성도 있게 구현하였습니다.
AR 기술을 저의 프로젝트에 도입하기 위해 공부한 유니티 엔진이었지만 이를 계속해서 다루다 보니 3D 게임 개발에 대한 욕심을 품게 되었습니다. 이에 신개념 멀티 플레이 축구 게임을 개발하였습니다. 클라이언트와 서버 개발에 모두 관여하며 네트워크 분야에 대한 지식을 많이 채울 수 있었습니다. 특히 서버를 개발하면서 서버 쪽에도 관심이 생겼습니다. 프로젝트 종료 후에 따로 스프링을 사용한 백엔드 개발을 공부하고 간단한 웹 페이지를 만들어보는 실습을 진행하면서 백엔드 분야에도 도전하고 있으며 개발한 게임에 대해 회원을 관리하고 배포하는 사이트를 직접 만드는 것을 1차적인 목표로 하고 있습니다.
이렇듯 끝없는 도전은 개발자로서 더욱 성장하게 해주었습니다. 이 끝 없는 욕심은 개발자로서의 나를 발전시키는 원동력이 되었고 이는 앞으로도 계속해서 이어질 것입니다.
[강박증 환자]
저는 강박증을 갖고 있습니다. 그러나 저는 물건이 제 위치에 놓여 있어야 할 필요는 없고, 외출 전 전등을 껐는지 계속해서 확인하지도 않고, 더러운 것을 만지면 지나치게 오랫동안 손을 씻지도 않으며, 사용하는 펜이 없으면 공부를 못하지도 않습니다. 다만 코드가 정리되지 않은 채로 있는 것을 보지 못합니다. 연산자와 피연산자 사이에 띄어쓰기가 되지 않았거나, 반복되는 코드를 함수화시키지 않았거나, 이름을 보고 무슨 변수 혹은 함수인지 판단할 수 없거나, 해당 언어 혹은 프레임워크에 맞는 명명 규칙을 따르지 않는 등의 지저분한 코드를 그냥 두지 않습니다.
처음에 저와 프로젝트를 같이 했던 동기들은 제가 너무 과하다며 유난 떤다고 이야기했습니다. 그러나 고학년이 되면서 프로젝트 코드의 명명 규칙 제정을 저에게 맡기게 되었고 어떤 변수나 함수 이름을 지을 때 저에게 물어보기도 하였습니다. 저는 이런 제 강박증이 코드의 가독성을 높이고 유지ㆍ보수를 용이하게 하며 협업을 효율적으로 할 수 있게 도와주는 중요한 요소라고 생각합니다.
[자발적인 최고의 목표 설정]
그동안 단 한 학기도 평점 4.0을 넘어본 적 없는 평범한 성적을 갖고 있던 제가 3-2학기를 시작하면서 세운 목표는 해당 학기 평점 4.5 만점이었습니다. 꾸준히 하던 아르바이트를 4학년 때부터는 그만두고 전액장학금을 받아야겠다고 생각했습니다. 꼭 만점을 받아야만 장학금을 타는 것은 아니지만 1등을 할 것이라면 확실한 1등이 되고 싶었습니다.
물론 처음 도전하는 높은 목표였습니다. 수강하는 과목에서 부여하는 과제가 많았고 프로젝트나, 외주 앱 개발까지 맡다 보니 학기 초부터 공부에 많은 시간을 쏟지 못했습니다. 이 때문에 철저한 계획을 세워 해야 할 일을 효과적으로 분배해서 실천해야겠다고 생각했습니다. 당일 수업 들은 과목은 그날 바로 복습할 수 있도록 한주씩 계획을 세웠고, 프로젝트 등 다른 일에도 차질이 없도록 취침 및 기상 시간까지 정했습니다. 매주 세운 계획을 실천하면서 시험 전에 5번 이상 정독할 수 있었고, 과제나 프로젝트도 완벽히 마무리했습니다. 외주를 통해 용돈 벌이와 개발 경력도 쌓으며 완벽한 한 학기를 보냈습니다.
그 결과 저는 목표로 했던 4.5를 받았습니다. 전액 장학금을 받았음은 물론, 앞으로 스스로 설정한 목표를 이룰 수 있다는 확신을 얻었습니다. 가장 중요한 것은 이후로 계획을 세우며 실천하며 하고자 했던 일을 완벽히 수행하는 습관을 갖게 되었다는 점입니다.