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) : 








mardi 19 octobre 2010

Voici le résultat final de mes expérimentations.


Des goutes virtuelles simulent l'étalement de l'encre sur une lettre d'amour.
Plusieurs types de papiers et plusieurs lettres se combinent pour créer un nombre infini de possibilités.







dimanche 3 octobre 2010

Dernières avancées

J'ai atteint un niveau satisfaisant de réalisme pour ce dont je suis capable pour le moment. Étant donné le temps qui m'est alloué, je vais simplement ajouter quelques détails à cet exemple :


samedi 2 octobre 2010

Cerne de café

Après avoir manipulé les paramètres, j'en suis venu à créer cette petite image.

Une erreur se transformant en design intéressant :


jeudi 30 septembre 2010

Projet P5 : Cerne d'eau génératif

J'ai tenté plusieurs approches différentes afin de créer une forme de goute d'eau qui aurait pour effet d'étendre de l'encre sur une certaine distance. Les différentes tentatives que j'ai effectué jusqu'à maintenant ne m'ont pas permit d'atteindre mon but.

Plusieurs pistes m'ont par contre permit d'imaginer une analyse partielle des pixels d'une silhouette permettant de créer un dégradé vers l'intérieur qui pourrait potentiellement donner une forme de cerne. En effet, je ne sais pas totalement comment cela fonctionnera mais je prendrai chacun des pixels d'une silhouette en observant ses voisins immédiats. En tenant compte de la position des pixels avoisinants, on pourrait ainsi savoir dans quelle direction le dégradé devrait être placé.

Voici quelques images qui illustrent mes expérimentations :












*** Update *** 

En changeant quelques paramètres a mes test précédents, j'ai trouvé une façon de générer des taches qui ressemblent beaucoup plus à une coulée d'encre. Ce n'est pas encore totalement à point mais c'est quelque chose!