Jun 16 2008

Tranche de rigolade

Tag: Eclipse,MatosTurbo Connard @ 13:24

J’avais vu une vidéo marrante sur vimeo.com et comme tester la vidéo temps réel était dans mes projets je me suis lancé.

Rien de très compliqué :
Je stocke autant d’images que de “tranche de vidéo” et je recompose avec les tranches décalées dans le temps. Tranche du bas t0, la tranche d’au dessus t-1, etc…


Testing GSCapture for Processing on Ubuntu from Turbo Connard on Vimeo.


Jun 12 2008

“Nice Flocking Effect”

Tag: Eclipse,le site,WiimoteTurbo Connard @ 14:39

Bon alors en continuant mes “expérimentations” j’ai remarqué qu’il est bien plus hype de poster ses vidéos sur Vimeo… C’est bien plus classe.
Bref pour faire comme tout le monde j’ai créé un compte

et j’ai posté une première vidéo :


Testing wiimote on processing from Turbo Connard on Vimeo.


Jun 03 2008

Joypad XBOX 360 sans fil

Tag: MatosTurbo Connard @ 21:54

Bon alors je comptais me refaire un Resident Evil 4 sur pc et pour ça, il me fallait un bon pad… Le pad de la xbox360 défouraille pas mal et j’ai donc investi dans un “Wireless Game Reciver for PC”. J’en ai trouvé un d’occas (à 14€) chez “trader” boulevard Beaumarchais. Finalement RE4 est à chier sur pc… on dirait un jeu de téléphone portable. Bref, j’ai quand même trouvé un moyen de recycler ce périphérique.

Bon forcément, Microsoft oblige, pour installer le bouzin c’est pas aussi simple que sous windows… C’est néanmoins “facilement” surmontable.

Après avoir parcouru les forums je suis tombé sur cette page :

https://help.ubuntu.com/community/Xbox360Controller

J’ai essayé à tout hazard et ça fonctionne nikel sous Hardy Heron. Je vais “traduire” cette page pour ceux qui ne comprennent pas la fameuse langue de Chèk Spirr.

1*/ Installation du driver.

Comme pour toute compilation, on a besoin de quelques packages. Installez donc ceux la :

sudo apt-get install linux-headers-`uname -r` build-essential automake1.9

et pour calibrer le joypad installez ça aussi :

sudo apt-get install jscalibrator libgii1 libjsw2

Il faut ensuite créer un répertoire et y télécharger les sources du driver.

cd
sudo mkdir xpad
cd xpad
sudo wget "http://xbox-linux.cvs.sourceforge.net/*checkout*/xbox-linux/kernel-2.6/drivers/usb/input/xpad.c" "http://xbox-linux.cvs.sourceforge.net/*checkout*/xbox-linux/kernel-2.6/drivers/usb/input/xpad.h"

Ca doit télécharger les sources dans le répertoire.

Créez ensuite un nouveau fichier et collez ça dedans :

KERNEL_PATH?=/usr/src/linux-headers-$(shell uname -r)
EXTRA_CFLAGS=-I$(shell pwd)
obj-m:=xpad.o
all:
$(MAKE) modules -C $(KERNEL_PATH) SUBDIRS=$(shell pwd)
install:
cp -f xpad.ko /lib/modules/$(shell uname -r)/kernel/drivers/input/joystick

Faut faire gaff pour le copier/coller. Il faut impérativement qu’il y ait une tabulation avant le “$(MAKE)” et une devant “cp”.
Enregistrez ce fichier en “Makefile” et fermez gedit

retournez dans la console

make
sudo make install
sudo modprobe -r xpad
sudo depmod -a
sudo modprobe xpad

Si ça a marché vous devriez voir apparaitre “Microsoft Xbox machin etc…” 4 fois… pour les 4 manettes ! Après faut redémarrer…

2*/ Calibrage

On peut maintenant lancer la calibration (Application >  Accessoires > joystick Calibration). Il faut appuyer sur le bouton central de la manette pour qu’elle se mette à clignoter…
A savoir que la manette ne s’arrête pas de clignoter et que pour qu’elle s’arrête de clignoter il faut soit attendre un paquet de temps soit virer les piles… Avec un peu de chance nos amis développeurs vont trouver une solution à ce blèm.

Youpi ! on a une manette microsoft qui marche sous linux… chanmax.

Alors, on peut remarquer qu’au début, je bouge les sticks analogiques et que “joystick” ne me dit pas grand chose… C’est par ce que je n’ai pas encore calibré le pad. Néanmoins le logiciel reçoit des “inputs” du pad. Ils sont représentés par la petit vague verte en haut a droite de l’appli.

3*/ Back to processing

Sur le site de processing.org on peut trouver une “library” pour la gestion des joysticks : proCONTROLL. Ca se passe ici : http://www.processing.org/reference/libraries/index.html

Téléchargez donc ce proCONTROLL et dézippez le tout quelque part.

Créez ensuite un nouveau projet “HelloXB360″. Comme pour tout projet processing il faut ajouter le core.jar (clic droit sur le projet > build path > add external archive et parcourir jusqu’au core.jar dans processing)
On ajoute de la même façon le procontroll.jar (il est dans “library” dans le zip). Il ne reste plus qu’a copier le “libjinput-linux.so” dans le repertoire “bin” de votre projet.

Voilà on a tout ce qu’il faut pour compiler un projet pour la manette xbox 360…
J’ai choppé un fichier d’exemple dans le répertoire et l’ai un peu modifié pour qu’il fonctionne sous éclipse.

le code de HelloXB360.class

import processing.core.PApplet;
import procontroll.ControllDevice;
import procontroll.ControllIO;
import procontroll.ControllStick;
public class HelloXB360 extends PApplet{
        ControllIO controllIO;
        ControllDevice joypad;
        ControllStick stick1;
        ControllStick stick2;
        float transX;
        float transY;
        public void setup(){
                size(800, 600, P3D);
                controllIO = ControllIO.getInstance(this);
                joypad = controllIO.getDevice(2);
                joypad.plug(this, "handleButton1Press", ControllIO.ON_PRESS, 1);
                joypad.plug(this, "handleButton1Release", ControllIO.ON_RELEASE, 1);
                stick1 = joypad.getStick(0);
                stick1.setMultiplier(PI);
                stick2 = joypad.getStick(1);
                stick2.setTolerance(0.06f);
                stick2.setMultiplier(0.05f);
        }
        public void handleButton1Press(){
                 fill(255,0,0);
                 joypad.rumble(1);
        }
        public void handleButton1Release(){
                  fill(255);
        }
        public void draw(){
                 background(0);
                  lights();

                  transX += stick1.getTotalY()/20;
                  transY += stick1.getTotalX()/20;
                  translate(transX,transY,0);

                  rotateX(stick2.getTotalY());
                  rotateY(stick2.getTotalX());
                  box(50);
        }
}
 

Voila le résultat c’est ça :