Glove Pie - control del pc con el mando de la Wii

Si, si que además de servir para jugar con la wii tiene otros usos como por ejemplo este que nos haga el movimiento del ratón.

¿Te imaginas usar el Wiimote y el nunchuck de tu consola Wii para jugar a tus juegos desde el PC, incluso a viejas glorías del pasado mediante emuladores, programas de audio, etc? ¿Cómo?, facilísimo, vamos allá.

Necesitamos el mando de la wii, un bluetooth para el ordenador y el programa Glove Pie 0.43 (junio 2010)

Conectamos el bluetooth, vinculamos el mando con el ordenador (botón 1 y 2 a la vez del mando, en el ordenador botón derecho al mando que aparece y conectar)


Para usar los scripts abrir la carpeta WiimoteScripts y elegir el script que mas te guste, para probar los botones del mando de la Wii abrir "TestWiimote." y veremos algo como la imagen de abajo.

Despues pulsamos en "Run" y de esta forma se establecera la conexion con el mando de wii pudiendo usar sus botones, recomiendo usar el notepad para probar, si pulsamos el boton (1) evidentemente esta asignado como el 1. 


Se pueden cambiar por otra cosa como por ejemplo... (1) a (S) y asi saldra una "S". Los scripts se pueden modificar siempre y cuando no se de a run ya que en marcha no se puede cambiar.


Animo y a buscar en Google scripts para este programa, y no te olvides de meterlo en su carpeta para que funcione. Vale, aquí te sugiero alguno.

Foro de Scripts Glove Pie 


Para manejar el ratón descargad aquí e integrarlo dentro de la carpeta WiimoteScripts, luego lo podeis abrir desde Glove y controlar el ratón con el mando

Videotutorial para controlar el pc con un wiimote

http://www.youtube.com/watch?v=-M7rtFP08iI




Pero si tienes un Mac este es tu programa DarwiinRemote



GLOVE PIE A FONDO - Fuente: http://www.elotrolado.net/wiki/Glovepie


GlovePIE viene de Glove Programmable Input Emulator. no tiene por que ser usado por VR Gloves (Guantes de Realidad Virtual), pero originalmente empezó siendo para emular un joystick o teclado usando el "Essential Reality P5 Glove". Ahora soporta y emula sistemas de todo tipo, usando todo tipo de periféricos, incluyendo los productos de Polhemus, Intersense, Ascension, WorldViz, 5DT y eMagin. Tambien puede controlar salidas MIDI u OSC.

En la ventana de GlovePie escribes o cargas cualquier script. por ejemplo, para controlar las teclas WASD con un guante:

* W = glove.z > -50 cm
* S = glove.z < -70 cm
* A = glove.x < -10 cm
* D = glove.x > 10 cm

también puedes usar GlovePIE para jugar a juegos que necesiten obligatoriamente un joystick sin joystick, o juegos que utilicen solo teclado con un juystick. O puedes usarlo para crear macros para complicados atajos de teclado.

También puedes usarlo para controlar varios punteros con varios ratones


Requerimientos del sistema

- Windows 98 o superior (Windows 2000 o superior para emular teclas en juegos DirectInput o usar multiples cursores falsos - Windows XP o superior para controlar varios teclados o ratones o para tener varias teclas especiales).

- DirectX 8 o superior.

- La emulación de joystick necesita el PPJoy. El hablado necesita SAPI 5.1 with microsoft recogniser.




Hardware soportado



* Nintendo Wii Remote (Wiimote)

* NaturalPoint (Or eDimensional) TrackIR, OptiTrack, SmartNav

* FakeSpace Pinch Gloves (9600 baud by default, but can be changed)

* Concept 2 PM3 rowing machines (ergo or erg)

* All joysticks or gamepads recognised by Windows

* Parallel port gamepads (with PPJoy)

* All keyboards

* Mice with up to 5 buttons and 2 scroll wheels

* Most microphones (don't have to be high quality)

* Most MIDI input or output devices

* Essential Reality P5 Glove

* 5DT Data Glove (all versions)

* eMagin Z800 3D Visor HMD

* Polhemus trackers (must be set to 115200 baud): IsoTrak II, FasTrak, Liberty, Patriot, Liberty Latus

* Ascension trackers: Flock of Birds, MotionStar, etc.

* Intersense trackers: InterTrax, InertiaCube, IS-300, IS-600, IS-900, IS-1200, etc.

* WorldViz PPT trackers (all versions)

* GameTrak (only as a joystick, no direct support)


Scripts para Wiimote





Programación básica del Wiimote

Para empezar a programar scripts en GlovePie para poder usar nuestro Wiimote en el PC, lo primero que debemos conocer es como se llama cada tecla del Wiimote, a continuación os dejo una lista de las teclas.


Cursor

* Arriba = Wiimote.Up

* Abajo = Wiimote.Down

* Izquierda = Wiimote.Left

* Derecha = Wiimote.Right


Botones

* A = Wiimote.A
* B = Wiimote.B
* - = Wiimote.Minus
* + = Wiimote.Plus
* Home = Wiimote.Home
* 1 = Wiimote.One
* 2 = Wiimote.Two


Sabiendo esto podemos empezar a crear nuestros scripts básicos facilmente, para ello solamente habrá que seguir la siguiente nomenclatura


Tecla del teclado = Botón del Wiimote


Vamos a hacer un script sencillo para cualquier juego de carreras, habría que hacerlo así:


// Script de ejemplo de juego de carreras hecho por Scatsy



//Controles de dirección


Left = Wiimote.Up

Right = Wiimote.Down


//Controles de aceleración


Up = Wiimote.One

Down = Wiimote.Two


Con este script conseguiremos que, girando el wiimote dejando la cruceta a la izquierda, al apretar el boton 1 aceleraremos y con el 2 frenaremos, y pulsando arriba o abajo en el Wiimote (que girado sería izquierda y derecha) giraremos el coche.

Los comentarios se ponen con // delante, así el GlovePie no lo interpretará como una acción.

Con esta programación básica podremos tener controles para juegos sencillos, emuladores o controles multimedia, a continuación pongo un ejemplo algo más elaborado, un script para controlar el Media Player Classic



// Media Player Control by Scatsy V 0.1


// Controles de archivo


Ctrl+o = Wiimote.One // Abrir Archivo

Ctrl+l = Wiimote.Two // Cargar Subtitulos


// Controles de reproducción


Space = Wiimote.A // Play-Pause

Period = Wiimote.B // Stop

Ctrl+right = Wiimote.Right // Avanzar 5 segundos

Ctrl+Left = Wiimote.Left // Retroceder 5 segundos

Add = Wiimote.up // Retraso de audio +10 ms

Subtract = Wiimote.Down // Retraso de audio -10 ms


// Controles del reproductor


Ctrl+Enter = Wiimote.Home // Pantalla Completa

Alt+X = Wiimote.B + Wiimote.A // Salir del Media Player

Up = Wiimote.Plus // Subir Volumen

Down = Wiimote.Minus // Bajar Volumen


Este script hace uso de todos los botones del Wiimote e incluso de una funcion usando 2 botones a la vez, como se puede ver es muy sencillo.


Programación media del Wiimote 

 

En esta sección extenderé un poco más acciones con el Wiimote, más concretamente las acciones relacionadas con la inclinación del mando, lo primero que tenemos que ver son los valores de inclinación.


* Wiimote.RawForceX
* Wiimote.RawForceZ
* Wiimote.RawForceY


Estos valores controlan la inclinación de los distintos ángulos del Wiimote y varian según se posicione el mismo, estos valores se programan de manera similar a los botones, solo que tenemos que tener en cuenta los valores. Para ver los valores de cada eje podemos usar el siguiente script

debug = "X=" + Wiimote.RawForceX + " Y=" + Wiimote.RawForceY + " Z=" + Wiimote.RawForceZ

Esto nos mostrará los valores de cada eje en la ventana de Debug del GlovePIE, y con esto podremos empezar a crear acciones para estos valores, por ejemplo, vamos a ver de nuevo un script para juegos de coches


// Script de ejemplo de juego de carreras hecho por Scatsy


Up = Wiimote.RawForceX <= -10 // Acelera

Down = Wiimote.RawForceX >= 20 // Frena

Left = Wiimote.RawforceZ <= -10 // Gira Izquierda

Right = Wiimote.RawforceZ >= 10 // Gira Derecha


Con este script tendremos el control del coche inclinando el mando hacia los lados y hacia delante y atras, por supuesto tendremos que coger el mando como en el script de carreras anterior.

En Up = Wiimote.RawforceX <= -10 lo que he echo es programar el mando para que al inclinarlo en el eje X (es decir, al inclinarlo hacia adelante) igual o menos que -10, se presione la tecla Up del teclado, es decir la flecha de arriba, he elegido -10 por gustos personales pero se puede poner el valor que mejor te vaya, esto es lo mismo para el resto de valores.


También podemos programar los leds, es lo más sencillo, los valores para los leds son los siguientes:


* Wiimote.Led1

* Wiimote.Led2

* Wiimote.Led3

* Wiimote.Led4


Si queremos encender o apagar algúno de los leds, simplemente le añadimos "= True" o "= False".

Por ejemplo, para encender los leds de los lados:


Wiimote.Led1 = True

Wiimote.Led2 = False

Wiimote.Led3 = False

Wiimote.Led4 = True


Programación avanzada del Wiimote







Aqui vamos a profundizar en las variables y en las condicionales, es un tema muy complejo del que se podría llenar libros enteros, pero empezaré por lo mas básico, que son los if, then, else y endif luego explicaré un poco lo de las variables.

Estas 4 palabritas que he puesto definen casi todo en la programación avanzada del Wiimote, sirven para hacer condicionales, el GlovePIE usa un lenguaje de muy bajo nivel por lo tanto es bastante sencillo de comprender, pero por supuesto, con estas condicionales se pueden hacer cosas basante complejas, como siempre veamos un ejemplo.


//Ejemplo de vibración por Scatsy


if wiimote.b then // El Wiimote tiembla al usar el disparo primario

wiimote.rumble = true

wait 400 ms

wiimote.rumble = false

Endif


if pressed (wiimote.a) then // El Wiimote tiembla al usar el disparo secundario

wiimote.rumble = true

wait 300 ms

wiimote.rumble = false

Endif


If Pressed(e) Then // El Wiimote tiembla si se pulsa e

Wiimote.Rumble = True

wait 200 ms

Wiimote.Rumble = False

EndIf


Como veis, todas las condicionales empiezan por if y acaban en endif, en la primera condicional if wiimote.b then le estamos diciendo básicamente al wiimote que se prepare para algo cuando esté pulsado el botón b del wiimote, siempre tendremos que empezar así if acción then reacción, si lo traducís al español tiene lógica "si Wiimote.b entonces", a continuación tendremos que poner la condición, en el caso del ejemplo, le hemos dicho que el wiimote vibre "wiimote.rumble = true" cuando esté pulsado el boton B "if wiimote.b", luego le hemos dicho que espere 300 milisegundos y se apague "wait 300 ms | Wiimote.rumble = false", por último hemos puesto el endif que es lo que hace que la condición se acabe.

En la segunda condición, hay algo cambiado, el pressed, el sistema es el mismo, pero esto indica que en vez de vibrar mientras se pulse, vibrará durante 300 ms cuando sea pulsado, es decir, en la primera condición el Wiimote vibrará mientras tengamos pulsado el botón B del wiimote, mientras que en la segunda condición, el Wiimote vibrará durante 300 ms cuando pulsemos el boton A del Wiimote.

Por último, la tercera condición es exactamente la misma que la segunda, salvo que en vez de indicar a un botón del Wiimote, indicamos a un boton del teclado.


Hay otras formas de definir todo esto, usando la función Else, como siempre, un ejemplo


//Ejemplo de leds por Scatsy


if wiimote.b = true then

wiimote.led3 = true

wiimote.led2 = true

else

wiimote.led2 = false

wiimote.led3 = false

endif


Este ejemplo es muy sencillo y similar a los demas, en la primera condicional del ejemplo anterior, le habiamos dicho al GlovePIE que mientras estuviera pulsado el boton B del Wiimote, este vibrara, y que al soltarlo esperara 300 ms y dejara de vibrar, con este script hacemos lo mismo, mientras pulsemos el boton B del Wiimote, los leds 2 y 3 se encenderan y cuando lo soltemos se apagarán, si intentamos hacer esto de la misma forma que el ejemplo anteriór, lo único que conseguiremos es que los leds empiezen a parpadear, sin embargo podemos hacer lo mismo del ejemplo anterior con este modo, en resumen, la funcion Else hace que mientras esté pulsado ese boton o ejecutandose esa acción, se haga algo hasta que se suelte o acabe la acción.


Variables



Las variables mucho mas sencillas de lo que parece, en realidad se programa igual que cualquier función, solo que tendremos que enunciarlas antes, veamos un ejemplo


//Ejemplo de variables por Scatsy


Var.A = Wiimote.A and Wiimote.B

Var.B = Wiimote.A and not Wiimote.B


if Var.A = true then


Wiimote.Led1 = True

Wiimote.Led4 = True

else

Wiimote.Led1 = False

Wiimote.Led4 = False

end


if Var.B = True Then


Wiimote.Led2 = True

Wiimote.Led3 = True

else

Wiimote.led2 = False

Eiimote.Led3 = False

endif


En el ejemplo, hemos enunciado primero las variables y lo que son, Var.A es que esten pulsados los botones A y B del Wiimote, mientras que Var.B es que esté pulsado el botón A del Wiimote pero no el B, entonces cuando las condiciones de estas variables se cumplan "Var.A = True", la acción que hemos hecho se ejecutará, esto viene bien por si queremos asignar 2 o mas botones a una determinada acción o que cuando ocurran 2 cosas a la vez se ejecute una determinada acción (por ejemplo cuando el Wiimote esté en horizontal y pulsemos el botón A del Wiimote).

También podemos encadenar todo tipo de variables y acciones, por ejemplo, tomando el mismo ejemplo de antes pero añadiendole una cosa mas


//Ejemplo de variables por Scatsy


Var.A = Wiimote.B

Var.B = Wiimote.A


if Var.A = true then


Wiimote.Led1 = True

Wiimote.Led4 = True

else

Wiimote.Led1 = False

Wiimote.Led4 = False

end


if Var.B = True Then


Wiimote.Led2 = True

Wiimote.Led3 = True

else

Wiimote.led2 = False

Eiimote.Led3 = False

endif


if Var.B and Var.A = true then

Wiimote.Rumble = true

Else

Wiimote.Rumble = False


endif

En este ejemplo que es muy similar al anterior, si pulsamos el botón B del Wiimote, se encenderán, los leds de los laterales, si pulsamos el botón A del Wiimote, se encenderán los leds del centro y ahora si pulsamos los dos botones a la vez, se encenderan todos los leds (por las variables A y B) y ademas el Wiimote Vibrará por que se han cumplido las variables A y B. Como podéis ver, las variables son muy comodas.


Programación del Nunchuk 



GlovePIE, aparte de soportar el Wiimote, también soporta el Nunchuk, es decir, el addon principal del Wiimote, programarlo es también muy sencillo, es casi igual que el Wiimote pero cambiando los nombres, vamos a ver sus botones y valores


Botones

* Nunchuk.ZButton = Botón Z del Nunchuk
* Nunchuk.CButton = Boton C del Nunchuk


Joystick

* Wiimote.Nunchuk.JoyY = Eje Y del Joystick
* Wiimote.Nunchuk.JoyX = Eje X del Joystick

Inclinación

* Nunchuk.RawforceX = Inclinación del Eje X
* Nunchuk.RawforceY = Inclinación del Eje Y
* Nunchuk.RawforceZ = Inclinación del Eje Z


Salvo los botones, el resto de valores han de tratarse de forma analógica, al igual que haciamos con la inclinación del Wiimote, vamos a ver un ejemplo para tenerlo mas claro



// Ejemplo de movimiento en FPS creado por Scatsy


//Movimiento del personaje

W = Wiimote.Nunchuk.JoyY < -0.4 // Adelante

A = Wiimote.Nunchuk.JoyX < -0.4 // Paso Lateral izquierdo

S = Wiimote.Nunchuk.JoyY > 0.4 // Atras

D = Wiimote.Nunchuk.JoyX > 0.4 // Paso Lateral derecho

Ctrl = Wiimote.Nunchuk.ZButton // Agacharse

Space = Wiimote.Nunchuk.CButton // Saltar


Como veis es bastante sencillo, la única complicación es el movimiento en si, como ya he dicho, salvo los botones, el resto de valores tienen que ser analógicos, es decir, según empujemos el joystick del Nunchuk los valores cambiarán, estos van de -0,93 a 1,07 aproximadamente, en el caso del eje Y -0,93 sería empujando el joystick hacia alante del todo y 1,07 emujandolo hacia atras del todo, en el ejemlpo, cuando he puesto W = Wiimote.Nunchuk.JoyY < -0.4 // Adelante lo que he "dicho" al GlovePIE es que cuando el valor del eje Y sea menor de -0,4, pulse la tecla W, consiguiendo así que el personaje en nuestro FPS avance, esto, por supuesto, es personalizable y puedes poner el valor que quieras.


Programar los valores de inclinación es igual de sencillo que hacerlo con el Wiimote y se hace de la misma forma, solo cambia el nombre, veamos un ejemplo


// Ejemplo de recarga y uso en un FPS echo por Scatsy


R = Nunchuk.Rawforce >= 30 // Recarga E = Nunchuk.Rawforce <= -30 // Usa


Con esto, inclinando el Nunchuk hacia un lado o a otro recargaremos el arma en nuestro FPS o usaremos un objeto (siempre y cuando las teclas que tengais sean esas que son las que vienen normalmente en los FPS), inclinando el Nunchuk a la izquierda veremos los valores positivos, mientras que inclinandolo a la derecha veremos los negativos, esto, como todo, es personalizable para el gusto de cada uno.


Podeis ver los valores del Nunchuk con este Script

debug = "X=" + nunchuk.joyX + " Y=" + Nunchuk.joyY + " RZ=" + Nunchuk.RawForceZ + " RY=" + Nunchuk.RawForceY + " RX=" + Nunchuk.RawForceX


Listado de funciones comunes 



Wiimote Nunchuk
Botones Cruceta Vibración Leds Sensores Botones Cruceta Sensor
Wiimote.A Wiimote.Left Wiimote.Rumble Wiimote.Led1 Wiimote.RawForceX Nunchuk.C Nuncuk.JoyY Nunchuk.RawforceX
Wiimote.B Wiimote.Right Wiimote.Led2 Wiimote.RawForceY Nunchuk.Z Nuncuk.JoyX Nunchuk.RawforceY
Wiimote.One Wiimote.Up Wiimote.Led3 Wiimote.RawForceZ Nunchuk.RawforceZ
Wiimote.Two Wiimote.Down Wiimote.Led4 Wiimote.RawAccX Nunchuk.RawAccX
Wiimote.Home Wiimote.RawAccY Nunchuk.RawAccY
Wiimote.Plus Wiimote.RawAccZ Nunchuk.RawAccZ
Wiimote.Minus 





Construcción de una WiiBar Casera



En realidad no hay una forma standard de crear una WiiBar casera, basta con tener un led en el centro superior del monitor o tv o 2 leds separados unos 20 cm, dependiendo de la distancia a la que vayas a usar el Wiimote de la barra.

Puedes ver diferentes barras caseras en este enlace de Elotrolado



Scripts para usar el Wiimote en el PC


A continuación os dejo una lista de scripts para usar el Wiimote en el PC, estos están en formato .PIE que es el usado por GlovePIE. Para copiar alguno de los scripts de abajo crea un fichero copiando y pegando con el formato: nombrefichero.PIE o modifica el contenido de uno ya creado y cambiale el nombre.


Juego Freets of Fire
(juego código abierto tipo Guitar Hero)
Script de Freets of Fire  by Iron Tiger [Con Nunchuk]

Google Hearth by J.Coulston

Half Life 2 by Arianol and Scatsy [Con Nunchuk] 

Karafun by Soncyrow

Mouse by Vkapadia


Trackmania by Scatsy

Virtua Tennis by Ethan [Con Nunchuk]

VLC by Aepex

WiiDrum by Lorenzo

Winamp by Wylzon

Wii Battery by J.Coulston

Zelda Ocarina Of Time by Carl Kenner and Bomboy02 [Con Nunchuk] 



Enlaces


Página de GlovePie


Página de Winremote

 

No hay comentarios: