lundi 22 novembre 2010

TP3 : Jeu Interactif

Nouvelles expérimentations pour le dernier projet.
J'ai fait une révision des premières étapes du cours en analysant les pixels d'une image mais cette fois, en mouvement. Mathieu et moi tentons de créer un système de visée inspiré des fusils de Duck Hunt, un jeu vidéo du Nintendo de notre enfance. En évaluant le procédé utilisé pour détecter une cible à l'écran, nous avons découvert que c'était relativement simple, il ne faut que détecter une silhouette sur un fond d'une couleur contrastante. Nous en avons donc déduit qu'il fallait avoir une silhouette noire sur un fond blanc ou une silhouette blanche sur un fond noir.
Voici une petite vidéo qui démontre le procédé en action :
http://screencast.com/t/wZxWlgL4

Les prochaines étapes sont : peaufiner le système électronique de déclenchement avec Mathieu, acheter les éléments scénaristiques, vérifier que les ressources matérielles sont suffisantes, établir un réseaux interne pour faire communiquer les différentes machines qui orchestreront l'action et ajouter des éléments ludiques qui capteront l'attention lors d'un échec de tir ou une réussite.

UPDATE du 2 décembre :

Les premiers tests pour adapter un fusil en plastique du Dollorama pour notre expérience ont échoués pour cause de fragilité du matériel. Cette petite vidéo illustre justement la gâchette qui casse :
http://www.youtube.com/watch?v=2I0hIH6LBZw

Nous avons donc décidé d'opter pour un fusil de bois construit de nos mains. Les tests sont concluants, ce système fonctionne bien. Des photos au bas du texte montrent bien le développement des fusils. Ils sont composés d'un contact électrique pour fermer le circuit à l'aide la gâchette, un ressort qui ramenne la gâchette en place, un espace pour une webcam au bout du canon et un autre pour les fils au bas de la poignée.

Les webcams sont arrivées! On peut maintenant tester le fonctionnement du fusil directement. Voici une petite vidéo qui illustre le plan final du fusil. Nous l'avons sablé de façon à ce qu'il soit facile à tenir :

La détection de deux points est plutôt à point mais un problème persiste : la sensibilité de la caméra en mode automatique. Je ne suis pas capable d'obtenir des résultats satisfaisants pour suivre une couleur en forte concentration puisque la sensibilité d'exposition de la caméra change constamment. Lorsque je suis très proche et que les LED forcent une certaine exposition le résultat est très satisfaisant comme le démontre ce lien :
Cependant, lorsque la sensibilité augmente, tout devient blanc et les LED ne sont plus repérés. Nous abandonnons donc cette idée pour cause de manque de matériel de pointe qui permettrait d'arriver à nos fins.

UPDATE du 6 décembre : 
Le fonctionnement final en communication OSC est terminé, il est désormais possible de faire réagir un projet Flash à partir de Processing. Cela est même possible de plusieurs ordinateurs différents, les ordinateurs peuvent tous communiquer ensemble. Le principe de communication d'Arduino vers Processing étant déja établit, on passe dans une chaîne de programmes pour terminer sur un visuel simple et ludique qui donne un aspect magique au produit. Voici une petite vidéo qui démontre le résultat dans Flash avec les fusils :

UPDATE du 11 décembre :
Le son fonctionne et la communication OSC aussi. D'ailleurs, voici une photo pour le démontrer :
Effectivement, Mathieu m'envoie de son ordinateur les messages accompagnés d'identifiants dont je me sers pour déclencher les sons associés. Le tout se fait instantanément comme vous pouvez le voir.

UPDATE du 14 décembre :
La présentation a été faite, tout a fonctionné comme prévu, sauf quelques pépins de dernièrement minute concernant le matériel. La communication OSC fonctionnait a merveille, les animation visuelles étaient déclenchées juste aux bons moments et les participants ont vraiment apprécié le jeu.
Pour résumer le tout, mon ordinateur contrôlait le son et l'image et deux autres ordinateurs envoyaient un message s'ils étaient sur la cible grâce aux webcams branchées dans les fusils. Un sketch Processing gérait le déroulement du jeu et envoyait des messages à Adobe Flex pour déclencher des animations flash pré-établies. Le deuxième sketch Processing se chargeait du son et recevait également des messages grâce au premier sketch. Chaque message était interprété pour déclencher un son relié à l'action qui se déroulait. Les deux sketchs qui contrôlaient un carré de 40 x 40 pixels au centre de l'image donnée par chacun des fusils envoyaient également un message au premier sketch qui ensuite communiquait le message au sketch du son et à Flex. Donc pour résumer : Les fusils parlaient à l'arbitre, le contact électrique des fusils envoyait un input à Arduino qui le communiquait à Processing et l'arbitre se chargeait de distribuer les messages au son et à l'image.
Voici ce qui a été filmé pendant notre présentation (excusez la piètre qualité, ça été filmé avec du Nikon) :