samedi 9 mai 2009

Les mouvements , le Doomlike , le bonheur ...

La wiimote possède une caméra infrarouge qui lui permet de distinguer sur la sensor bar 4 leds infrarouges et de renvoyer leurs coordonnées à votre wii ou a votre PC.
La wii n’utilise pas à fond les capacités de cette wiimote car les mouvements vus par la wiimote des leds infrarouges sont dépendants , puisqu’elles sont fixes les unes par rapports aux autres sur votre sensor bar , l’idée est d’exploiter presque au maximum cette merveille qu’est la wiimote en se mettant sur le corps des leds infrarouges , qui pourront alors se déplacer indépendamment et donc on pourra au final réaliser un gameplay à base de mouvement .

Tout d’abord le résultat final : une vidéo de la jouabilité réalisée sous doom 3 :
Remarque : Ce script est utilisable sous tous les doomlikes , mais il est préférable de l'utiliser dans ceux ou l'on peut régler la fluidité de la souris comme dans doom 3 , sinon la vue se déplace par a coups .

Motiondoom3
Vidéo envoyée par Physicfrenchie








Le matériel nécessaire :

-la wiimote
prix de la wiimote : une trentaine d'euros chez micromania .
-windows xp ou vista
-un dongle bluetooth qui permet à votre PC d’utiliser le bluetooth (une vingtaine d’euros ), c’est en fait une petite clé usb : attention , tous les dongles ne sont pas compatibles je vous renvois donc à la liste de compatibilité suivante :
http://wiibrew.org/wiki/List_of_Working_Bluetooth_Devices/

Attention , pour faire fonctionner le bluetooth vous avez besoin de deux choses , le pilote , que vous pouvez trouver sur le site du constructeur ou que windows va vous installer automatiquement si vous avez de la chance et l’application gérant ce bluetooth , et moi je vous recommande bluesoleil :
www.bluesoleil.com/download/


- les leds IR
https://fr.farnell.com/jsp/search/productdetail.jsp?SKU=3152868/

2,5 euros les 5 c'est donné.

-le câble électrique :
https://fr.farnell.com/jsp/search/productdetail.jsp?SKU=1172853/
9.4 euros
-Le Fer à souder : https://fr.farnell.com/jsp/search/productdetail.jsp?SKU=4683924/
13.8 euros
-L'Étain : https://fr.farnell.com/jsp/search/productdetail.jsp?SKU=1689796/
6.5 euros

Pour les résistances vous pouvez prendre ceci (sachant que vous avez le choix ): http://fr.farnell.com/multicomp/mf50-30r/resistance-0-5w-1-30r/dp/9340394/

5.4 centimes d'euro l'unité (vous ne saviez pas que vous pouviez acheter quelque chose avec 5.4 centimes d'euros et bien voilà)

Enfin une paire de gants qui traine chez vous , et un peu de scotch pour vous protéger des pates des diodes et soudures lorsque vous manipulez les gants pour éviter le coup de jus .
Pour faire moins craignos , vous pouvez aussi coller des bouts de tissus .

Coût total en imaginant acheter une vingtaine de leds et de résistances et que vous ne disposez pas de fer à souder :
Total : 93.50 euros
Prix d'une wii : 246 euros (avec wiisports) !!!!

Petite précisions techniques : le sens de la led est important, la borne ou il y a le méplat doit pointer vers la borne – (le 0V) de votre alimentation.
- vous pouvez également réaliser une sensor bar pour votre PC (une led suffit) pour utiliser la wiimote comme une souris. (il ya un script glovepie pour faire cela (onedotmouse inclus avec glovepie))
- si c’est une utilisation d’ »essai » pour cette souris, vous pouvez utiliser des bougies à
la place de votre sensor bar (qui émet également de l’infrarouge)
- pour vérifier que la led émet , utilisez l’appareil photo numérique , ou celui de votre téléphone pour « voir » la lumière infrarouge , qui je vous le rappelle est invisble à l’œil nu .

Pour les aspects purement techniques ils sont contenus dans cette vidéo qui aborde point par point, l’alimentation des leds infrarouges (usb , transfo , piles ) , la connexion de la wiimote au PC , le choix des leds , le choix des résistances , le tableau blanc interactif ,et une introduction à glovepie :




Une fois que vous avez vu cette vidéo vous devriez être capable de réaliser vous-même les gants .
Pour ce qui est de la position des leds : il y en a une sur mon index droit , une sur mon poing gauche et une dernière sur mon pouce qui est en réalité sur une baguette chinoise collée à mon pouce , pour l’éloigner de celle de mon index et permettre à la wiimote de mieux les distinguer .

L’étape suivante concerne la programmation pure et dure .

Glovepie, les scripts , explications :

Tout d’abord vous avez besoin de glovepie version 0.29 :
http://carl.kenner.googlepages.com/glovepie_download
qui permet de programmer l’interaction entre votre wii et votre PC au travers d’un script .
Glovepie doit donc rester actif (et en mode run ) lorsque vous lancer votre jeu


Le langage de glovepie est très simple, et intuitif d'abord les structures de base :
d'abord sachez que vous pouvez mettre un commentaire avec // (mets tout ce qui a après et sur la ma ligne en commentaire)
ou encore /* commentaire */ (met tout ce qu'il ya entre ces deux balises (ici "commentaire") en commentaire et ce même sur plusieurs lignes.
tous le reste de ce texte peut être directement copié dans un script glovepie et executable en faisant run (ou f9)
Glovepie exécute en boucle le programme que vous avez écrit, ainsi si votre programme est trop long ou mal organisé , le temps de faire cette boucle sera trop
long pour que votre gameplay soit satisfaisant, donc le critère de la longueur est important.
Mais sachez qu'avant que cela n'atteigne votre gameplay il faut que votre programme soit vraiment très long, ainsi , réaliser un programme de 600 lignes bien organisées ne pose
aucun problème de rapidité.
Il n'existe pas de compilation des programmes, elle est automatique , une fois votre programme écrit faites juste run .

key.c=var.a //si vous appuyez sur la touche c de votre clavier (à n'importe quel moment ) la variable var.a sera mise à 1 ( sachez que vous n'avez pas besoin comme dans d'autres langages , le C par exemple de déclarer l'existence de vos variables avant leur utilisation , glovepie le fait automatiquement .

key.x=var.b //si vous appuyez sur la touche x de votre clavier (à n'importe quel moment) la variable var.b sera mise à 1



if var.a=1 and var.b=2 then // dans glovepie les variables que vous voulez utiliser s'écrivent var.quelquechose , a ne désignerait pas une variable mais la touche a de votre clavier alors attention


midi.a5=true // active le son midi a5
wait 60 ms // attends 60 millisecondes
midi.a5=false //désactive le son midi a5

end if // fins des différentes actions concernant la condition "var.a=1 et var.b=0 " c'est à dire étant donné la façon dont le programme est écrit dès que j'ai appuyé sur c et x.
//vous pouvez écrire directement comme condition pour réaliser la même chose : if key.c=1 and key.x=1 then

//sachez également que key.c et key.x comme toutes les touches de votre clavier sont des variables logiques vous pouvez donc "oublier le "=1" de serait sous entendu de cette façon :
// if key.c and key.x

// Utilisation de la wiimote comme manette classique :
key.s=wiimote.A // attribue à l'appui sur la touche a de votre wiimote un appui virtuel sur la touche s de votre clavier.

// pour la désignation des autres boutons : voir http://www.wiili.org/index.php/GlovePIE#Buttons

// la structure est toujours la même wiimote.nomdubouton qui renvoie 1 ou 0 selon que vous appuyez effectivement ou non sur ce bouton en réalité .

// vous voyez donc qu'il est très simple d'utiliser sa wiimote comme simple manette (en considérant qu'on a passé la difficulté connexion par bluetooth )

// vous pouvez maintenant paramétrer votre wiimote comme bon vous semble (sans utiliser d'IR ou de Nunchuk )

//rq : pour que vos jeux comprennent que vous avez effectivement appuyer sur une touche il faut que l'appui soit suffisamment long
//exemple
Key.a=1
key.a=0
//ces deux lignes vont être exécutées à la suite par glovepie très rapidement et ceci peut faire que cela n'ait aucun effet dans votre jeu d'où l'intérêt de l'instruction wait
key.a=1
wait 60 ms
key.a=0
// 60 ms suffisent pour votre jeu et n'obstrue pas le gameplay

// pour utiliser le Nunchuk vous devez faire exactement la même chose en écrivant par exemple : Wiimote.Nunchuk.CButton

// précédemment j'ai détaillé l'utilisation de la manettes en tant que boutons logiques c'est à dire qu'ils sont on ou off .
// détaillons maintenant l'utilisation analogique , c'est à dire le stick analogique du Nunchuk , l'accéléromètre de votre wiimote ou encore l' infrarouge qui peuvent prendre plus de 2 valeurs .

// L’utilisation analogique revient à considérer des coordonnées d'axes
wiimote.nunchuk.joyX // désigne la coordonnée en X du stick analogique de votre nunchuk c'est a dire le déplacement latéral
//lorsque le joystick est a fond a gauche JoyX vaut -1 , a fond a droite :1 , au milieu :0
//
wiimote.nunchuk.joyY// est l'axe vertical du joystick : il vaut -1 en haut 1 en bas et 0 au milieu

//pour l'accéléromètre vous pouvez l'utiliser en faisant : wiimote.RawAccX qui est l'accélération suivant x de votre wiimote en mètre/(seconde)² (même structure pour y et pour z )
// je rappelle que g , la pesanteur vaut 9.81 mètres/(secondes)²

//le Nunchuk possède également son accéléromètre accessible par presque les même commandes wiimote.nunchuk.rawAccx et de même pour y et z .

//enfin l'infrarouge :

// vous pouvez savoir si un point infrarouge est visible avec wiimote.dot1vis qui renvoie 1 dans ce cas

// vous pouvez savoir si deux point sont visibles si wiimote.dot1vis et wiimote.dot2vis valent 1 en même temps
// la wiimote peut distinguer quatre points infrarouges et donner leurs coordonnées : la résolution de la camera de la wiimote est de 1024*768 points et les indications que je vais donner sont considérées du point de vue de la camera de votre wiimote

wiimote.dot1x (désigne la coordonnée du point 1 sur l'axe horizontal et vaut 0 tout a gauche et 1023 tout a droite )
wiimote.dot1y (désigne la coordonnée du point 1 sur l'axe vertical et vaut 0 tout en haut et 767 tout en bas )

// rappelez vous que l'angle de vision de votre wiimote est d'environ 30 degrés , ceci est à prendre en compte pour savoir de quelle étendue spatiale vous disposez si vous êtes par exemple a deux mètres de votre wiimote avec vos leds

Avec les indications que je vous ai donné vous devriez être en mesure de comprendre déjà quelques programmes préfaits qui sont directement intégrés avec glovepie .

Mon script jouable avec trois leds : (utilisé dans la première vidéo que vous avez vu) :Le script est annoté de façon à comprendre comment il fonctionne
et de façon a pouvoir le modifier selon la position que vous allez prendre face à votre wiimote et la distance à laquelle vous allez jouer , le programme est fait par défaut pour fonctionner à une distance de 1m 50 environ . et votre wiimote doit être disposée de façon à vous voir en entier.
:

http://www.megaupload.com/?d=IGFDC2JP

Si vous avez des questions , n’hésitez pas à me joindre par mail :

Physicfrenchie@gmail.com

1 commentaire:

  1. Bravo franchement je trouve ça sympa même si pour l'instant je du mal avec Smoothboard
    merci

    RépondreSupprimer