본문 바로가기

Study

Kinect for XBOX (+ Robot Software & Computer Graphics Project)

12월 들어서 첫 포스팅이네요. 이번엔 새로운(?) 소식을 전해드리려고 합니다.





바로 Kinect 인데요, 이번 학기에 듣고 있는 수업 중 하나인 '로봇 소프트웨어 (Robot Software)' 에서 Microsoft Robotics Developer Studio 를 이용한 Robot Simulation 을 하고 있는데, 기말 프로젝트의 일환으로 MSRDS 에서 Kinect 를 이용한 리듬게임 제작을 해봤습니다. XBox Controller 와 Kinect 를 빌려준다고 하기에, 그 수업에서 저만 Kinect 를 빌려갔습니다. 다른 분들은 XBox Controller 를 빌려갔구요. 원래부터 MSRDS 로 리듬게임을 제작하려고 했었는데, Kinect 를 사용할 수 있다면 그야말로 금상첨화가 아닐까 싶어서 덥석 잡았습니다. Kinect 를 빌린지는 거의 한 달이 다 되어가지만, 어쩌다보니 이제야 포스팅하게 되었네요 (...)





Kinect 포장이 이중으로 되어있더군요. 한번 뜯었는데도 다른 포장이 나오길래 뭔가 했습니다 ㅎ;





내부는 저런식으로 나름 촘촘하게 스펀지로 둘러싸여있었습니다. 학교에서 집으로 들고오면서 생각보다 무거운 무게에 내용물이 뭐가 있을지 궁금했는데...





이렇게 구성되어있군요. 제가 빌린 Kinect 는 번들용 게임도 동봉되어 있었습니다. 3개 언어정도로 설명되어 있는 설명서와 전원어댑터, 연장케이블도 있네요. 그리고 번들게임의 등록 시리얼도 있었습니다. 제것이 아니기 때문에, 그리고 저는 XBOX 를 소유하고 있지 않기 떄문에 건들지 아니하였습니다. 아, 그러고보니 제가 받은 Kinect 가 완전 새거더라구요! 이렇게 제가 먼저 써도 되는가 싶지만... 영광(?)으로 알고 잘 굴려먹어야죠 (...?)





Kinect 본체의 모습입니다. 앞에 Depth Camera 와 RGB Camera 가 있네요. 실제로 동작하게 되면 왼쪽 카메라에서 빨간색 빛을 발산합니다. 양 옆에는 방열구멍이 있습니다. Kinect 로부터 빠져나온 단자는 USB 단자가 아니구요, 뭔가 처음보는 단자인데 거기에 전원어댑터 겸 USB 허브가 연결되어있는 걸 꼽고 사용하면 됩니다.


사실 Kinect 를 빌리기 전까지 어떤 리듬 게임을 만들어야할지 고민이 많았는데, Kinect 를 보고 떠오른 게임이 바로 Mad Acorn 이었습니다.


모를수도 있는 분들을 위하여 동영상 첨부하였사옵니다.


그리하야 Mad Acorn 을 모방하여 만들고자 했습니다...만 처음 써보는 Kinect... 특히 MSRDS 로의 시도는 이 프로젝트의 난이도 상승을 의미하는듯 했습니다. 그래도 저는 구글신을 믿고 있기에, 빌어보니 역시나 카미사마... 어느정도의 가이드는 나오더군요. 역시나 전무한 국내자료. 하지만 그래도 쪼오오오오오끔이라도 건질게 있었던 외국자료들 덕분에 숨통이 트였습니다. 삽질했던 부분은 제 부족한 영어 실력 덕분에 오역을 하는 바람에 벌어졌던 일이 있었고, 다시해보니 잘 되어 VPL 에서 Kinect 를 사용했고 SPL 에서는 월드맵과 모델, 그리고 게임의 전반적인 세팅을 책임지도록 설계했습니다. 그런데 이게 시뮬레이션이다보니 상당히 느리더군요... 게다가 SPL 상에서 일반 텍스트 파일을 바이너리로 읽는 방법을 몰라서 (...) 200여개의 노트들을 하드코딩하다가 70개에서 멈추고 노래도 중간에 꺼버리게 됩니다 (...) 어차피 200개 다 하드코딩했어도 결국엔 시뮬레이션 자체가 너무 느려서 감당할 수 없을 것 같았습니다. 프로토타입을 완성하긴 했는데, 이건 동영상을 찍진 못했습니다. 그런데 이 작품으로 교내 로봇 경진대회에 출전하게 되었네요...? 뭔가 더 발전시켜야할 것 같은데 언어를 바꾸지 않는 한 힘들 것 같아서 C# 으로 다시 코딩해볼까 하다가 C# 자체도 써본지 얼마 안되서 모르겠고, 게다가 MSRDS 시뮬레이션 연동이라니... 어제 저녁에 잠시 해보려다가 때려쳤습니다 ㅇ>-<


로봇 소프트웨어 프로젝트와는 별개로, 이번 학기에 듣는 또 다른 과목 중 하나인 '컴퓨터 그래픽스 (Computer Graphics)' 수업에서 Kinect 를 사용한 기말 프로젝트를 제작하게 되었습니다 (한번 빌린 Kinect 를 뽕뽑겠다는 의지). 이번에도 게임으로 제작하려고 했습니다. 그런데 애초에 계획서를 치열한 공중전을 펼치는 DogFight 를 주제로 삼고 했는데, Kinect 를 받고나니까 아이언맨이 자연스레 생각나서 계획을 수정했습니다.


이 동영상의 주인공은 저라고 합니다.


위의 동영상처럼 몸 동작에 따라서 움직이게 하는 프로젝트를 진행했는데요, 이번 프로젝트에 Unity 를 처음 사용해봤습니다. 이거... 괜히 사람들이 Unity 를 쓰는게 아니더라구요. 그동안 뭐 스프라이트 하나 띄우려고 삽질했던 지난 세월이 야속해질 정도로... 모델 불러와서 툭 떨구고 원하는 행동을 할 수 있도록 스크립트를 짜주고 Play 버튼을 누르면 얄밉게 잘 됩니다 하하... 어쨌든 저런 식으로 해서 Dogfight 를 해볼 생각이었으나, 역시 익숙치 않은 Unity 라서 그런지 쉽지 않더라구요. 그래서 그냥 맵 한가운데에 있는 아군을 파괴하기 위해 주위에서 몰려드는 적군을 막아내는 그런 방어전으로 바꿨습니다. 집에서 할 땐 잘 됐었는데, 학교에서 시연하니 오른손으로 쏘는 에너지빔이라던가, 왼손으로 쏘는 미사일이라던가가 잘 안나더군요 ㅠㅠ.. 일단 게임의 난이도 자체도 매우 어려웠기 때문에, 시연 자체는 성공적이진 못했습니다. 그리고 애초에 Unity 의 빠른 제작을 이용하여 OpenGL 로의 하드 코딩으로 완벽하게 재현하는게 목적이었는데, OpenGL 로의 코딩 또한 시간 부족으로 실패했습니다. 궁극적으로는 학교에서 배웠던 걸 제대로 써먹지 못했다는 것이죠 하하... 아마 점수는 낮을 것으로 생각됩니다.



어쨌든, 이렇게 Kinect 를 이용해서 학교 프로젝트 두 개를 해봤는데, 확실히 컨텐츠를 제작하는 입장에서는 신나긴 합니다. 만드는 내내 손을 흔들고 동작을 취해서 그런지 은근히 팔다리 근육이 땡기더라구요 (...) 운동 부족이긴 하지만 그래도 재밌게 만들 수 있어서 좋았습니다. 방학동안 시간이 된다면 Kinect 를 이용하여 재미있는 게임을 만들어보고 싶군요! 그래서 혹시 몰라서 조교님께 여쭤보니, 다음 학기 시작하기 전까지 빌려가도 상관없다고 하셔서 감사히 쓰고자 합니다. 최승윤 조교님 정말 감사합니다. 원래 방학 계획은 학교에서 알선해준 인턴을 하면서 Leap Motion 을 이용한 게임 제작을 해볼까 생각했는데, Kinect 도 나쁘지 않은 것 같습니다. 늦은 것 같기도 하지만, 이런 새로운(?) 인터페이스에 대한 개발 경험을 해보는 것도 좋다고 생각하네요! 오랜만에 장문의 포스팅이었던 것 같습니다.