데이터 글러브 동작 테스트 영상

by Blogger 하얀쿠아
2012. 10. 20. 21:41 수행 프로젝트 이력/Air Haptic Glove [2011.07~09]

Air Haptic Glove 프로젝트 초기의 데이터 글러브 테스트 영상 입니다.


3D Rendering Part : 전영호

3D Rendering Engine : microsoft XNA 3.1

Implement Language : C#

Physics Engine : JigLibX.Net

3D Modeling : 3D studio max 2011


Hardware Part : 김재민, 권기우

MCU : cortex m3

acceleration sensor, magnetic sensor, flex sensor : can`t remember



 첫번째 영상은 데이터글러브를 착용한 사용자의 손가락 구부림 정도를 추정하여 3D 손에 적용하는 테스트 영상이다. 프로젝트 초기의 영상이라 손가락 떨림 보정이 적용되어있지 않은 것을 알 수 있다.



'손가락 움직임 추정' 테스트 영상

flex 센서 5개를 이용하여 손가락의 움직임을 추정하고 3D로 표현하였다.




 두번째와 세번째 영상은 데이터글러브를 착용한 사용자의 손 자세를 추정하여 3D 가상손에 적용하는 것을 테스트하는 영상이다. 역시 떨림 보정이 전혀 되어있지 않아 3D 손이 심하게 떨리는 것을 확인할 수 있다.



'손 자세 추정' 테스트 영상 1

가속도 센서 + 지자기 센서 를 이용한 ARS 모듈을 만들고 자세 추정값을 이용하여 추정한 손의 자세를 3D로 표현하였다.





'손 자세 추정' 테스트 영상 2
가속도 센서 + 지자기 센서 를 이용한 ARS 모듈을 만들고 자세 추정값을 이용하여 추정한 손의 자세를 3D로 표현하였다. (부가적인것)또한, world 전체에 거대한 sphere를 씌우고 내부에 낮/밤 텍스쳐를 반씩 입혀 를 서서히 회전시키면서 낮/밤의 전환을 구현 한 것을 확인 할 수 있다.



다음 영상은 물리엔진 테스트 영상이다.
3D공간 상에서 손으로 물체를 잡거나 던지는 등의 행위를 구현하기 위하여, 3D공간상에 물리엔진을 적용하였다.
테스트 영상에서 나오는 공들은 물리 테스트를 쉽게 하기 위해 Camera 위치에서부터 발사되도록 한 것이며, height map으로 생성한 지형, 공끼리, 그외의 물체(흰 상자)와의 충돌, 튕김 등의 물리 테스트를 하고 있는 모습이다.


물리 엔진 테스트 영상
 물체 picking 을 구현하였고, 마우스 가운데를 이용해 물체를 잡아 던질 수 있도록 하여 물리 테스트를 수월하게 하였다.

 아직 shadow mapping을 하지 않아서 그림자가 적용되지 않은 시점에서의 테스트 영상이기에, 공의 위치에 대한 인지가 부정확 함을 확인 할 수 있다. 최종 버전은 shadow mapping이 완료되어 그림자를 통해 공간상의 물체들에 대한 위치 인지도와 입체감을 높이기 위해 노력했다. (영상은 진행project-Air Hapitc Glove 카테고리의 이전 포스팅에서 확인 가능)
 


이 댓글을 비밀 댓글로
    • 김동우
    • 2013.02.06 17:26
    안녕하세요.
    윈도우 3D를 화면에 구현하려 하는데 조언을 구하고자 글을 남깁니다.

    양쪽 팔에 3개의 센서를 달고 팔의움직임을 화면에 그대로 보여주고 싶습니다.
    데이터를 받아서 3D 모델을 처리해 주는 부분(XNA)에 관한 자료나 조언을 부탁드립니다.

    3D는 처음이라 많이 어렵습니다.
    • 처음이시라면 우선 기본적인 3D 그래픽 이론적인 지식을 간단하게 습득 하고 시작하시는게 여러모로 도움이 될 것 같습니다.
      (카메라, 프로젝션, 뷰, 3차원 좌표, 폴리곤, 텍스쳐 등등.. 의 3D 그래픽 이론 말이죠..)
      그 후 XNA를 사용하여 3D를 윈도우에서 렌더링 하신다면, 언어로는 C#을 사용하실 텐데.. 윈도우라고 하셨으니 XNA는 PC에서 돌아간다고 가정하겠습니다.

      간단히 말하면 센서의 값을 받아서 3D 모델의 위치좌표를 변경해 주시면 됩니다. 3D모델이 사람모양이라면, 팔 부분의 폴리곤들의 위치좌표를 변경해 주시면 될 것이고요..

      센서의 값을 PC로 보내는 방식은 블루투스를 사용하던, 시리얼 통신을 사용하던.. 하실것이고.. 센서는 아마도 자이로 + 가속도 센서 조합을 하시겠죠? 캘리브레이션 후에 X, Y, Z 좌표를 뽑아서 3D를 그리는 PC로 보내시면 되겠죠..

      PC에서는 받은 센서값을 3D 모델에 대입하시면 되는데..

      말은 쉬운데 3D가 처음이시라고 하셔서 어떻게 설명 드려야 할지 난감하네요 ^^;

      우선 3D 맥스 같은 모델링 툴로 간단하게 팔 부분을 모델링 해보세요
      본(Bone)을 모델에 심고, 이것을 fbx 파일로 뽑아서 XNA에서 로드 하시면 됩니다.
      fbx 모델을 XNA에서 로드 하는 기능도 구현을 해야 하는데, MS 의 XNA 예제 사이트에 이미 구현된 fbx 로더가 있으니 참고하시면 됩니다.
      XNA에서 로드된 3D 모델이 Bone을 가지고 있다면 Bone의 관절 하나하나를 제어할 수 있습니다. 마치 배열의 인덱스를 지정해서 배열값에 접근 하듯.. 이것도 MS의 예제를 찾아보시면 나올것이고요..
      관절 하나 하나를 실제 팔에 부착된 센서 하나하나와 매칭시켜주시고, 3D 모델 관절의 좌표값을 바꿔주시면 될것입니다.
    • 김동우
    • 2013.02.15 20:33
    조언 감사합니다.

    이야기해주신 대로 해보도록 하겠습니다.

    자료들 잔뜩 모아서 보고있습니다.

    마지막의 Bone을 제어하는 예제를 찾을수가 없어서... 여기 주소좀 알려 주실수 있나요?

    추가 ==> indie games 사이트에서 [Simple Animation] [Inverse Kinematics] 로 검색 하시면 됩니다.

    감사합니다.

Air Pocket Haptic Glove 최종 통합 결과물 영상

by Blogger 하얀쿠아
2012. 2. 8. 16:00 수행 프로젝트 이력/Air Haptic Glove [2011.07~09]

2011년 임베디드 소프트웨어 공모대전

Air Pocket Haptic Glove 프로젝트의 최종 통합 결과물 영상이다.
2011년 10월쯤에 최종 통합되었다.
나를 비롯한 팀원 모두 개강을 했고, 바쁜와중에도 틈틈히 모여

밤을 새가며 통합작업을 하느라 마지막까지 고생이 많았던 프로젝트이다.

고생은 많이 했지만... 결과는 좋지 않았다는게 정말 아쉬운 점이다.

내가 맡았던 부분은 3D게임 컨텐츠 제작 및  물리엔진 적용이다.

영상에서 보면 모니터 화면에 나오는 3D 게임이 내가 개발한 부분이다.

3D게임은 C#, XNA 3.1 framework, 3D Max 2011을 사용하여 개발하였다.
물리엔진은 XNA용으로 포팅된 JigLibX 를 사용하였다.



아래 영상은 햅틱글러브의 내부 장갑이다.
플렉스 센서로 손가락의 구부러짐을 측정하고, 가속도 센서와 자이로 센서를 조합해 ARS모듈을 만들어 손목의 회전을 측정한다. 
내가 개발한 것이 아니고, 다른 두 팀원이 개발한 부분이다.
손의 위치는 2개의 웹캠을 통해 스테레오 비전으로 X, Y, Z좌표를 얻도록 하였다.


아래 사진은 임베디드 소프트웨어 공모대전에 이 작품으로 출전 했을 때의 사진.


상은 받지 못했다. 에헴.


이 댓글을 비밀 댓글로

[공모전] 9회 임베디드 소프트웨어 공모대전

by Blogger 하얀쿠아
2011. 10. 22. 21:16 수행 프로젝트 이력/Air Haptic Glove [2011.07~09]


삼성 소프트웨어 멤버십에서 첫 창의과제로 했던 Air Pocket Haptic Glove를 임베디드 소프트웨어 공모대전에 냈었는데, 최종 결선에 참가 자격이 주어졌다.

열심히 해봐야 겠다!. 중간고사 끝나면 다시 밤샘 코딩에 돌입 할 듯 싶다.
이 댓글을 비밀 댓글로