CMU의 Johnney Lee가 만든 간단한 데모인데, 색다를 것은 없지만 상당히 결과물이 좋다.
요점은 2D화면에서 해드트랙킹(시점의 이동 감지)를 통하여 3D공간이 보다 실감나게 보인다는 것이다. 머리의 회전를 주로 감지하는 VR 해드셋의 해드트랙킹과는 달리 위모트를 이용한 이 데모는 화면을 보고있는 머리의 평행이동(좌우상하)를 감지하여 미세한 시점변화를 만들어낸다. 실제로 FPS 게임을 만든다면 이를 통하여 마우스의 역할(시점변환)을 100% 담당하게 할 수는 없다는 얘기. 다만, 벽에 붙어서 빼곰히 옆으로 쳐다보며 미세 사격을 한다던지에는 탁월한 효과가 있을 것으로 본다. 결국 마우스(시점이동)+해드트랙킹(미세시점이동)+키보드(전후좌우이동)의 인터페이스가 가능하다는 얘기.

개발자의 웹사이트에 가보면 그외 다양한 위모트를 이용한 프로젝트가 있다.

사이트 바로가기
AND


처음 Wiimote를 PC에서 구동시키고나서 인터넷에는 내 블로그의 구동 사진들이 허가없이 도배되었었다. (허락 받으신 분도 계셨지만, 외국사이트에서는 전혀 동의없이 게시되었었다. 심지어는 자기 사이트의 워터마크까지 달아 놓은 곳도;;) 어쨌거나 학기말 프로젝트에 정신이 팔린 사이 Carl Kenner가 선수를 쳐서-만들 생각도 없었지만- 완성된 버전의 PC구동 유틸을 만들었다.

그런데, Wiimote의 내부를 들여다보니 내가 잘못 알고 있던 사실들이 있었는데,

- Wiimote는 6 axis(3-axis positional + 3-axis rotational)가 아니라, 단지 3-axis linear force sensor(XYZ)만을 가지고 있다.
- Linear force sensor는 Gravity의 영향을 직접적으로 받고있으며, 필터링되지 않은채 정보가 넘어온다.
- 따라서 3-axis positional 데이터 만으로는 컨트롤러의 local coordinate을 알 수 있는 방법이 없다.
- IR Sensor는 IR emitter의 갯수와 각각의 신호의 강도, 그리고 Wiimote 시점에서의 2D 좌표를 알 수가 있다.

결론은, Wiimote는 3D space상의 위치와 움직임을 완벽하게 알 수 없다는 사실. 재밋는 사실은 와리오웨어 영상을 보면 각각의 게임들이 어떻게 Wiimote를 잡고 게임을 해야하는지 친절하게 설명을 해주는데 그것이 바로 local coordination을 정의하기 위함이었다.


01:21 부분을 살펴보면 친절하게 어떻게 잡아야하는지를 알려준다. 사용자가 어떤 방식으로 잡고있는 지를 모르면 Wiimote는 정확한 입력 정보를 알아낼 수 없다.

PS3의 SIXAXIS보다 절대적 우위에 있다고 확신했던 필자이기에 반성이 필요할 듯하고, 앞으로 두개의 디바이스가 가지는 장단점을 지속적으로 살펴봐야겠다.
AND


위모트를 블루투스 노트북에서 조이패드를 쓸수 있다면 참 좋을 꺼 같다는 생각에서 출발한 아이디어

Wii 구매 이후 만 이틀만에 Wii 컨트롤러를 PC에서 이용가능하다는 결론에 도달했다.
다른 블로그들에 포스팅된 바와 같이 Wii 컨트롤러(일명 위모트)는 블루투스방식을
이용하여 데이터를 전송한다. 그럼 먼저 PC에 디바이스를 연결해보자.

각자 하드웨어에서 제공하는 블루투스 스텍을 이용하여 새로운 디바이스를 맞이할 준비를 한다.

준비가 되었으면, 위모트의 뒷면의 배터리 박스를 열고 Sync버튼을 눌러준다. 간섭문제가 발생할 수 있으므로, Wii의 전원 플러그를 뽑아둔다.

다음과같이 Nintendo RVL-CNT-01이라는 이름의 표준 HID장치로 잡힌다. 선택후 다음으로 넘어가면 디바이스 등록이 완료된다.

스텍에 Wii 컨트롤러가 연결된 모습. PC에 연결된 경우 컨트롤러의 1P,2P,3P,4P LED가 깜박이게 된다.

제어판의 게임 컨트롤러에 가면 위와 같이 블루투스 게임패드로 등록되었음을 알 수 있다. 하지만...

정작 Test에 들어가보면 장치에는 아무런 버튼도 방향키도 존재하질 않는다! 여기서부턴 어둠의 영역;;
디바이스 레벨로 넘어가기전에 RAWHID로서 접근을 시도해보았다. HID Device를 Regist한 다음 컨트롤러에서 입력시 WM_INPUT으로 넘어오는지를 체크했다. 다행히도 아직 알수는 없지만 RAW Data가 넘어온다!!

Raw Data의 유형은 매우 단순했는데 1BYTE Header + 2 BYTE 로서 각각의 BYTE는 방향키와 버튼의 조합값을 의미하였다. 다만, 모션센서의 값은 IR 바를 통해서 전송되는지 찾을 수가 없었다.

최종으로 테스트 프로그램 완성! 다음엔 트레이에 상주하면서 키보드나 게임패드에 SendInput을 보내는 버전을 제작할 예정이다.

AND