front_processing/doc/readme.txt
author bastiena
Mon, 19 Mar 2012 10:21:56 +0100
changeset 5 d40f84d77db4
child 7 8a21bec5d45f
permissions -rw-r--r--
Documentations (readme) Installer Deletion of useless comments and code lines
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
     1
TraKERS (Tracking using Kinect and Extracting Robust Skeletons) est une interface basée sur la détection de gestures / positions du squelette envoyé par le SDK Microsoft (1.0) de Kinect.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
     2
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
     3
Auteur : Alexandre BASTIEN.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
     4
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
     5
I) TraKERS - Eléments requis :
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
     6
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
     7
Dans cette partie, il vous faudra installer Processing, disponible ici : http://processing.org/download/
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
     8
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
     9
Vous les trouverez ici si vous le souhaitez : http://www.microsoft.com/en-us/kinectforwindows/develop/release-notes.aspx
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    10
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    11
II) TraKERS - Structure :
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    12
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    13
Dans le Front, se trouvent deux exécutables "Trakers" et "Trakers_gestures", respectivement pour le tracé de courbes via les coordonnées des positions des mains récupérées du Middleware et pour l'affichage des gestes détectés. Il aurait été possible de les rassembler en un programme, mais pour des raisons de clarté lors de l'utilisation, j'ai préféré procéder ainsi.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    14
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    15
III) TraKERS - Utilisation :
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    16
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    17
Si le Middleware est lancé, le programme de Front lancé fait office de client, et récupère les notifications envoyées. Détaillons les deux programmes :
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    18
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    19
A) Trakers
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    20
Comme indiqué plus haut, il reçoit et affiche les coordonnées des mains entrant dans le champ délimité par le Middleware.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    21
Afin d'indiquer les limites de zone de dessin, un masque noir a été appliqué, et se met à jour.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    22
Les notifications du client s'affichent en blanc en haut du masque, et indique si une ou deux mains sont détectées.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    23
Lorsque l'on dessine, une série d'ellipses apparaissent à l'écran, formant des courbes.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    24
Lorsque deux mains sont détectées, la gauche est rouge et l'autre verte.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    25
Si une main et une seule est détectée, la courbe sera rouge.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    26
Si la ou les mains s'approchent et atteignent une certaine proximité, le segment dessiné deviendra bleu à partir de ce moment-là.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    27
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    28
B) Trakers_gestures
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    29
Le même masque a été appliqué dans ce programme d'affichage de notifications de gestes indiqués par le Middleware.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    30
Le programme indique simplement dans la partie supérieure du masque s'il détecte ou non une gesture, et s'il en détecte une, donne le code envoyé par le Middleware.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    31
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    32
IV) Fonctionnement :
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    33
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    34
Les programmes sont découpés en fonctions, afin de rendre leur structure plus cohérente.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    35
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    36
Il existe deux fonctions principales sous Processing.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    37
void setup(), qui permet d'initialiser des variables, la taille de la fenêtre, etc.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    38
void draw(), qui est raffraichie constamment et sert principalement à dessiner ou faire appel aux fonctions amenées à être appelées toutes les N ms.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    39
Il est bien entendu possible de dessiner via des fonctions déjà implémentées et prêtes à l'emploi, dont la documentation se trouve ici :
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    40
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    41
http://processing.org/reference/
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    42
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    43
Ils reçoivent des messages OSC de la part du Middleware. Ceux-ci sont contenus dans des objets qui sont des TuioCursors (en 3D) pour gérer la position des mains et des TuioStrings (objets personnalisés, ajoutés aux dll client et serveur TUIO).
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    44
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    45
Dans les programmes, les curseurs 3D sont principalement utilisés pour transmettre les coordonnées X, Y et Z (X et Y étant des pixels, et Z une distance en mètres). Les strings, quant à eux, ne véhiculent que de simples messages textuels.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    46
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    47
Ils sont envoyés par des listes présentes dans le client TUIO.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    48
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    49
Voici un bout de code expliquant comment obtenir la position des mains :
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    50
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    51
TuioProcessing tuioClient;
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    52
tuioClient = new TuioProcessing(host, port; //host pourrait être this par défaut et port le numéro du port au format int.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    53
//On récupère les curseurs.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    54
Vector tuioCursorList = tuioClient.getTuioCursors();
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    55
//Si aucune main n'est repérée.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    56
if(tuioCursorList.size() <= 0)
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    57
{
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    58
	//fonction_1();
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    59
}
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    60
//Si une main est repérée.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    61
else if (tuioCursorList.size() == 1)
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    62
{
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    63
	TuioCursor cursor = (TuioCursor)tuioCursorList.elementAt(0);
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    64
	//fonctionAffiche1Main(cursor);
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    65
}
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    66
//Si c'est les 2.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    67
else if(tuioCursorList.size() == 2)
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    68
{
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    69
	//fonctionAffiche2Mains(tuioCursorList);
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    70
}
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    71
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    72
Voici à présent comment extraire les positions d'une main, via un tuioCursor :
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    73
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    74
//On obtient la liste des points (déplacements) du curseur TUIO.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    75
Vector pointList = cursor.getPath();
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    76
for (int j=0;j<pointList.size();j++)
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    77
{
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    78
	//On prend chaque point pour les afficher.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    79
	TuioPoint pt = (TuioPoint)pointList.get(j);
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    80
	//On affiche les coordonnées dans la fenêtre à la position (100 ; j*20), j allant de 20 à N.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    81
	text(pt.getX() + " " + pt.getY() + " " + pt.getZ(), 100, j*20+20);
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    82
	//Si deux mains sont détectées, on quitte la fonction.
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    83
	if(tuioClient.getTuioCursors().size() == 2)
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    84
		break;
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    85
}
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    86
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    87
Il est à noter que plusieurs projets existent sous Processing, notamment dans l'affichage de fluides ou de fumée par exemple :
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    88
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    89
http://processing.org/discourse/yabb/YaBB.cgi?board=Contribution_Simlation;action=display;num=1045166270
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    90
http://bodytag.org/nav.php?u=fluid3/
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    91
http://bodytag.org/fluid3/fluid3.pde
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    92
http://bodytag.org/nav.php?u=smoke2/
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    93
http://bodytag.org/smoke2/smoke2.pde
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    94
d40f84d77db4 Documentations (readme)
bastiena
parents:
diff changeset
    95
Si vous expérimentez des difficultés ou souhaitez me soumettre une requête, voici mon adresse : alexandre.bastien@iri.centrepompidou.fr