Wii-ing con WPF

En el trabajo ya me empiezan a llamar el hombre de la wii, pero desde que descubrí la wiimotelib y ví todo lo que se puede hacer con ella, me obsesioné con portarlo a WPF…  cosa que mas o menos hice “de aquella manera” y muy mejorable, por cierto (y un proyecto conjunto con el artifice de la librería wiimotelib, Brian Peek.

En cualquier caso sobre el 23 de diciembre descubrí una pequeña maravilla que me dejo atonito y ahora esta en practicamente en boca de todos los bloggers…  nada menos que el uso de el mando de la wii para realizar dos técnicas como son el head tracking y un whiteboard (digase pizarra o sistema multitouch) utilizando el wiimote (mando de la wii) al reves, es decir, utilizar la camara de video infrarojja que tiene para el tracking del sensor de la televisión para detectar la posición relativa de leds infrarojos…

Os dejo dos videos sobre ello… el del whiteboard

y el de head tracking

Que pueden consultarse en el blog de su autor, Johnny Chung Lee, en el hay indicaciones y esquemas de como construir un lapiz IR  – yo ya me he hecho un par, así que si alguien quiere ayuda que lo diga ;). También en el video indica como conseguir las gafas de lectura para “geeks” con 2 leds al lado… no he sido capaz de encontrarlas en tiendas de electrónica ni de pedirlas por Internet (las cosas chulas de amazon o e-bay, como el i-sobot no las traen fuera de USA… 🙁 Si alguien lo encuentra, que lo diga…

En cualquier caso tengo la intención de portar estas técnicas a WPF, si no lo ha hecho ya alguien (y libera el código, obviamente). Seguido unos ejemplos que ha realizado Cynergy Labs.. espero liberen el codigo! 

Creo que estamos en un momento de cambio en como interactuamos con las máquinas, este promete ser un muy interesante año… Lo que aun no entiendo (y repetiré esta frase) es, simplemente con sus ventajas inherentes y sin complicaciones (3D) porque todo el mundo no está ya desarrollando con WPF?  En cualquier caso que la librería WiimoteLib de interfaz con el wiimote, de Brian Peek, sea el proyecto más descargado de codeplex es algo muy significativo, no pensais?

Opiniones? 

Crossposting desde bcngeeks

14 comentarios en “Wii-ing con WPF”

  1. Jose Luis, tienes toda la razon, la forma de interactuar con los ordenadores está cambiando y la Wii es el mejor ejemplo de ello.

    La WiiMoteLib es realmente un lujo, yo la utilizo para controlar el LEGO y alguna cosilla mas y la verdad es que es impresionante (salvo cuando cambias a maquinas virtuales o a entornos x64 donde tienes que currartela un poco más).

    Saludos

  2. Sipis! esta bien chula y si todo va bién en unos meses Brian Peek la ampliará para que funcione directamente con WPF 🙂
    En cualquier caso como la utilizas, con las teclas o también utilizas el acelerometro?

  3. Yo tambien alucine cuando lo vi y que posibilidades puede dar a futuros proyectos, si puedes echame un cable con la construcción del lapiz IR , aunque probablemente mi mujer me matara.
    Un convaleciente de la gripe

  4. El dispositivo de head tracking es simplemente espectacular.

    Lo que todavía no sé (no he bajado el código de esta parte) es cómo hace la gestión de la distancia. ¿Mira la separación entre los dos leds?

  5. El tema de la distancia lo comentan en la wikipedia. Lo que hace es calcular la distancia aparente entre los leds que hay al lado de la barra sensora (o en su defecto las gafas). Como se conoce la distancia entre los extremos a priori, con una triangulación sencilla se puede calcular la distancia…

  6. la barra sensora posee 10 leds, en dos grupos de 5, utilizando estos leds y como comenta augusto se calculan las distancias 😀

    y como uso el Lego ? jejeje es complicado el acelerometro ¿no? pero con un poco de tiempo y ganas, se puede evaluar para que simplemente te de un true/ false para cada uno de los ejes

    Saludos

  7. Exacto, ello lo hace solito el wiimote (hasta 4 leds infrarojas) y luego con la ayuda de la wiimotelib, captura y nos ofrece tal cual el estado y posición (rawx y rawy) de cada uno de los 4 puntos, estilo
    ws.IRState.RawX1 y ws.IRState.RawY1 siendo ws el wiimotestate una clase definida en la wiimotelib..
    Si abres el proyecto wiimotewhiteboard esta en form1.cs, función wm_OnWiimoteChanged 🙂
    Lo que aun no veo claro es la gestión de multiples puntos… he de mirarlo a fondo 😉

  8. je, yo use algo parecido, un factor multiplicador para el valor de cada uno de los ejes, así si se inclina más pues gira más rapido… y no va mal la verdad.. 😛 aunque lo suyo sería que girase exactamente lo que gira el wiimote… *_*

  9. Si la distancia se calcula midiendo la separación entre los leds necesitará entonces una calibración para indicar qué significa en profundidad en el espacio 3d de la aplicación el estar justo frente a la pantalla o estar dos metros atrás ¿no? Como se vé en el video, cuando se acerca a la pantalla el objeto que está más al frente se queda detrás del usuario. ¿qué clibración se hace? ¿Qué distancia máxima existe para que la cámara del Wiimote empiece a ver los leds?

    Al final me voy a tener que comprar una Wii para trastear 😉

  10. Cuantas preguntas :P… creo que lo mejor es ir a http://en.wikipedia.org/wiki/Wiimote y directo a la sección “Sensing” que lo explica más o menos bien.

    Supongo que realiza una calibración poniendo una distancia estándar puesta a piñón y como la distancia entre los leds es “estandar” en la sensor bar.. pues a partir de ahi calcula el angulo (entre los 2 vectores que van de la camara(wiimote) a cada led y la distancia entre ellos y el wiimote. Y si, animate para comprar una wii pero también un receptor Bluetooth que vaya bien con el wiimote… la gran mayoria no cumplen estandares y no se comunican bien..

  11. Ola! estoy haciend mi proyect de fin carrera cn el wiimote y no consigo saber como saber o calcular mi posicion relativa(0,0,0) en el momento q sincronizo mi mando cn el ordenador. he hecho una barr de 2 led, xq solo necesito 2d. Gracias, esq estoy un pelin perdidilla!!

  12. Ola! existe alguna parte de la libreria del wiimote, donde se pueda poner q partamos de una posicion(000) sea cual sea y a partir de ahi, la tome como posicion realativa y me muestre las coordenadas del movimieto en 2D? Estoy realizando mi proyecto d fin d carrera y ando algo pez. Gracias y un saludo

  13. Me suena que la wiimotelib permite tomar la posición respecto la pantalla, pero si quieres la posición relativa toma el primer vector X,Y y restaselo a las siguientes tomas de datos, ello te dará la posición relativa en base a la primera posición. Ya me comentas si te sirve esto.. un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *