[프로젝트] 2015년도에 수행했던 그래픽스 과목 파이널 프로젝트 – 아이언맨 증강현실 슈트

학교에서 컴공과 과목은 딱 두개 듣고 졸업을 했었다. 바로 전산과 객체다.

전산은 기초필수라서 다 듣는거긴한데, 뭐 객체는 관심이 있어서 들었다.

역시 컴공과는 굴러간다는 말과 같이, 폭풍 어싸인과 중간/기말, 텀프까지 상당한 로드를 보여준다.

그런데 놀라운 점은, 이러한 수업 구조는 다른 컴공과 과목도 비슷하다는 것이다.

우리학교 컴공과는 이런 로드를 가진 과목을 한학기에 3~5과목이나 듣다니. 정말 대단하다고 할 수 있다. 아니 경의롭다.

대학원에 들어와서 뭣도 모르고 또 컴공과 과목을 Trial 했다.

바로 그래픽스.. 컴퓨터 그래픽과 관련된 이론과 실습을 할 수 있는 매우 알찬 과목이다.

무려 태양계를 만드는 어싸인을 4회에 걸쳐서 하게 되는데,

1회 2D태양계, 2회 3D, 3 ~ 4회를 거쳐 화려한 효과를 지니고 마우스로 이동하고 들여다볼 수 있는 태양계가 완성된다!.

모두 다 OpenGl를 이용하였는데, 컴퓨터 코딩에 있어서 우리학교 컴공과 과목만큼 효과적으로 실력을 업 할 수 있는 방법은 없을 것이다.

여튼 이 과목에서 조차 중간/기말을 치게 되고 텀프도 하게 되는데, (중간/기말은 둘 다 평균도 못넘었다.)

텀 프로젝트로 나는 증강현실을 구현해보고 싶었다.

아래는 프로포절 PPT내용 중 몇장면을 가져왔다.

파트너 도형이가 귀엽다를 컨셉으로 팀 이름을 지었다.

카카오프렌즈의 캐릭터는 항상 옳다.

간단하다. 컴퓨터 그래픽스를 현실 세계에 실시간으로 투영하면 Augmented Reality가 탄생한다!

마침 수중에 키넥트 2가 있어서 활용할 수 있었다. 키넥트 2는 1보다 성능이 훨씬 우수함에도 불구하고, 여러 호환성 문제 등으로 인하여 히트를 치지 못한 것 같다. (연구용 기기로 한정해서)

구매 당시만 해도 국내에서는 구할 수 없어서 일본 구매대행을 통해서 샀었다. 얼리어답터임.

위 그림은 간단히 키넥트의 기본 성능을 알려주는 것이다. 불이 꺼진 상태에서도 인식이 가능하며, 사람은 5명도 동시에 인식 가능 ㄷㄷ, 그리고 각 사람 관절에서 여러가지 정보를 준다. 제스쳐라던가, 표정 등도 함께 전달해 준다! 상당히 많은 정보를 제공해 준다.  이건 키넥트 응용분야와 관련된 영상인데, 옷가게에서 원하는 옷을 가상으로 입어보는 그런 느낌이다.

제작 목표는 아이언맨 옷을 입고

행동을 할 수 있고, 레이저 빔을 손바닥에서 쏜다.

물체를 파괴한다.

이 모든걸 실시간으로 구현한다.

예시 애니메이션 장면인데 도형이가 아이언맨 슈트를 입고 막 움직이다가 손에서 광자포를 발사하는 것이다. 다른 학생들과 교수님에게 상당히 좋은 반응을 얻을 수 있었다.

 

아래 ppt는 중간 발표 중 일부를 가져왔다.

키넥트 설치 및 예제를 활용한 테스트

키넥트 2가 상당히 컴퓨터 환경에 까다롭다. USB 3.0도 막 제조사 가리고, 운영체제도 반드시 8.1 이상이여야 한다.

다행이 가지고 있던 NUC에 잘 작동 하였다.

앞 사진은 구동해보는 나의 모습, 오토캐드 3D MAX를 깔았다. 기존에 사용하는 카티아 같은 캐드프로그램은 부품 그리는 용도고 저건 음. obj 기반으로 좀 부드럽게 작품 만드는 느낌. 여튼 이건 학생이면 무료로 사용가능하다.

 

구글링을 잘 해서 아이언맨 3D파일을 어디선가 찾아왔다.

사실 제대로 된 파일 찾기 힘들었는데, 다행히 어디선가 찾을 수 있었다.

처음에는 unity를 써볼까 하다가 그냥 쌩 open gl로 선회했다. 아무래도 키넥트 2라서 라이브러리가 제대로 갖춰져있지 않은 탓이다. 완전 맨땅에 헤딩…

구글에서 찾은 iron맨은 슈트 전체였는데 우리는 이걸 조각조각 잘라야 했다. 몸에 맞게 움직여야 했으므로.. 여튼 다 자르고 따로 obj로 저장하고 trianglular로 다 변환했다. 왜냐면 내가 코딩한 쉐이더 obj 로더가 tri만 지원해서 ㅎㅎ

여튼 open gl로 코딩해서 아이언맨을 3D를 프로그램에 불러오기까지 성공했다.

그리고 키넥트 코드도 사용해야 하므로, 두 프로젝트를 섞었다.

그리고 키넥트에서 칼라, 뎁스, 바디 정보 등을 가져왔다. 워낙 코드도 많고 복잡해서 힘들었지만 다행히 조금은 이해할 수 있는 수준이 되었다.

바디 조인트 위치 불러와서 그 위치에 3D파일을 놓아 보았다. 그러니 움직이는거에 따라서 위치이동은 한다.

 

 

이건 중간 발표 범위이고 최종 발표까지는 텍스쳐 입히기, 3D 오브젝트 오리엔테이션 변화 적용, 레이저 발사, AR 구현이 남았다.

 

아래는 최종 발표 ppt 중 일부이다.

결과적으로 원하는 걸 다 구현했다.

비록 물체 색은 아이언맨에 맞게 색칠하지는 못했다… 쉐이더 핵 어렵..

그래도 대충 무지개색을 넣었다. 이런걸 넣어야 오리엔테이션변화가 잘 보인다.

모션인식을 넣어서 저런 모션을 취하게 되면 레이저가 발사되게 하였다.

실제 시연할 때는 기를 모으는 제스쳐에서 아이언맨 특유의 에너지 충전음이 들려서 상당히 재미있다.

아래는 결과 영상이다.

 

결과는 꿀잼~

 

186 Comments