RÉVÉLATION - TABLE MULTITOUCH

Porteur du projet : Kévin BIZE (DSAA Produit - Lycée Jean PERRIN)

Date : 01/2015

Licence : libre !

Contexte : Pratique Plastique

Programme multitouch: http://ccv.nuigroup.com/#home

Lien : https://www.behance.net/KevinBIZE

Description

Ce projet est un dispositif permettant de retranscrire un mouvement. J’ai choisi de mettre en valeur une action que très peu de monde s’imagine, à savoir le déplacement de la souris d’ordinateur.

Pour ce faire, je me suis enregistré en train de travailler sur mon ordinateur, puis j’ai créé un dispositif qui permet à n’importe qui d’analyser le déplacement de sa main sur “une surface multitouch DIY”. Ce mouvement est retranscrit par une webcam placée dans un caisson surmonté d'une surface translucide (plexiglass) qui fera office d'interface. L’information est envoyée sur un ordinateur, qui à son tour l’envoie à un vidéoprojecteur. La projection peut être externe ou rétroprojetée en miroir sur l'interface en plexiglass.

Matériaux

Hardware:

caisson

webcam

vitre (plexiglass)

ordinateur

vidéoprojecteur

Software:

CCV

Processing

Code Processing

import oscP5.*;\\
import netP5.*;\\
import tuioZones.*;\\
import ddf.minim.*;\\
TUIOzoneCollection zones;\\
Minim minim;\\
AudioInput in;\\
int s = 9000; // sensibilité du mic\\
AudioPlayer song;\\
void reset_sketch(){\\
background(255);\\
}\\
void setup(){\\
size(displayWidth,displayHeight);\\
background(255);\\
noCursor();\\
minim = new Minim(this);\\
song = minim.loadFile ("kaytranada.mp3");\\
song.play();\\
// son\\
minim = new Minim(this); // Objet minim\\
minim.debugOn();\\
in = minim.getLineIn(Minim.MONO, 64); // entrée son\\
// create a draggable, throwable, and scalable zone for a photo\\
zones=new TUIOzoneCollection(this);\\
zones.setZone("zone1", width/2,height/2,400,300);\\
zones.setZoneParameter("zone1","DRAGGABLE",true);\\
}\\
void draw(){
// draw the touch trails for testing hardware calibration
int[][] coord=zones.getPoints();
stroke(0);
fill (227,227,227,120);
smooth();
strokeWeight(1);
//filtre blur trop gourmand!!
//²filter(BLUR, 2);
if (coord.length>0){\\
for (int i=0;i<coord.length;i++){\\
ellipse(coord[i][0],coord[i][1],in.left.get(i)*s, in.left.get(i)*s);\\
int [][] trail=zones.getTrail(coord[i][2]);\\
if (trail.length>1){\\
for (int j=1;j<trail.length;j++){\\
line(trail[j][0],trail[j][1],trail[j-1][0],trail[j-1][1]);\\
ellipse(trail[j][0],trail[j][1],in.left.get(i)*s, in.left.get(i)*s);\\
println(trail[j][2] + "," + trail[j][3]);\\
}\\
}\\
}\\
}\\
}\\
// impression écran, ici touche "s"\\
void keyPressed(){\\
if (key == 's') {\\
saveFrame("draw-####.tif");\\
}\\
}\\
void keyReleased(){\\
if (key == 'r'){\\
reset_sketch();\\
}\\
}\\