readme - Front Processing.txt
author bastiena
Mon, 14 May 2012 17:20:35 +0200
changeset 32 4003f84cd349
parent 9 0f44b7360c8d
child 41 d2f735d7763f
permissions -rw-r--r--
Front IDILL : Player implemented and was mostly tested, still memory leaks.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9
0f44b7360c8d Installer updated
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.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
     2
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
     3
Auteur : Alexandre BASTIEN.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
     4
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
     5
I) TraKERS - Eléments requis :
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
     6
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
     7
Dans cette partie, il vous faudra installer Processing, disponible ici : http://processing.org/download/
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
     8
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
     9
II) TraKERS - Structure :
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    10
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    11
Dans le Front, se trouvent deux principaux 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.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    12
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    13
III) TraKERS - Utilisation :
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    14
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    15
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 :
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    16
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    17
A) Trakers (composé du fichier principal et d'un fichier "TuioFunctions" gérant la réception des messages)
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    18
Comme indiqué plus haut, il reçoit et affiche les coordonnées des mains entrant dans le champ délimité par le Middleware.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    19
Afin d'indiquer les limites de zone de dessin, un masque noir a été appliqué, et se met à jour.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    20
Les notifications du client s'affichent en blanc en haut du masque, et indique si une ou deux mains sont détectées.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    21
Lorsque l'on dessine, une série d'ellipses apparaissent à l'écran, formant des courbes.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    22
Lorsque deux mains sont détectées, la gauche est rouge et l'autre verte.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    23
Si une main et une seule est détectée, la courbe sera rouge.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    24
Si la ou les mains s'approchent et atteignent une certaine proximité, le segment dessiné deviendra bleu à partir de ce moment-là.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    25
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    26
B) Trakers_gestures (composé du fichier principal et d'un fichier "TuioFunctions" gérant la réception des messages)
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    27
Le même masque a été appliqué dans ce programme d'affichage de notifications de gestes indiqués par le Middleware.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    28
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.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    29
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    30
Il existe d'autres exemples au sein de cet installeur, qui seront abordés au sein du tutoriel présent dans le dossier : front_processing/doc.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    31
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    32
IV) Fonctionnement :
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    33
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    34
Les programmes sont découpés en fonctions, afin de rendre leur structure plus cohérente.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    35
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    36
Il existe deux fonctions principales sous Processing.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    37
void setup(), qui permet d'initialiser des variables, la taille de la fenêtre, etc.
0f44b7360c8d Installer updated
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.
0f44b7360c8d Installer updated
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 :
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    40
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    41
http://processing.org/reference/
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    42
0f44b7360c8d Installer updated
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).
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    44
0f44b7360c8d Installer updated
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.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    46
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    47
Ils sont envoyés par des listes présentes dans le client TUIO.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    48
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    49
Voici un bout de code expliquant comment obtenir la position des mains :
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    50
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    51
TuioProcessing tuioClient;
0f44b7360c8d Installer updated
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.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    53
//On récupère les curseurs.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    54
Vector tuioCursorList = tuioClient.getTuioCursors();
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    55
//Si aucune main n'est repérée.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    56
if(tuioCursorList.size() <= 0)
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    57
{
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    58
    //fonction_1();
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    59
}
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    60
//Si une main est repéré
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    61
else if (tuioCursorList.size() == 1)
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    62
{
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    63
    TuioCursor cursor = (TuioCursor)tuioCursorList.elementAt(0);
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    64
    //fonctionAffiche1Main(cursor);
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    65
	//s'il y en a un deuxième, on l'obtient à elementAt(1)
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    66
}
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    67
//Si c'est les 2.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    68
else if(tuioCursorList.size() == 2)
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    69
{
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    70
    //fonctionAffiche2Mains(tuioCursorList);
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    71
}
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    72
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    73
Voici à présent comment extraire la position actuelle d'une main, via un tuioCursor :
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    74
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    75
//On obtient le point actuel du curseur TUIO.
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    76
TuioPoint pt = cursor.getPosition();
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    77
//On affiche les coordonnées dans la fenêtre à la position (100 ; 20).
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    78
text(pt.getX() + " " + pt.getY() + " " + pt.getZ(), 100, 20);
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    79
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    80
Il est à noter que plusieurs projets existent sous Processing, notamment dans l'affichage de fluides ou de fumée par exemple :
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    81
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    82
http://processing.org/discourse/yabb/YaBB.cgi?board=Contribution_Simlation;action=display;num=1045166270
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    83
http://bodytag.org/nav.php?u=fluid3/
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    84
http://bodytag.org/fluid3/fluid3.pde
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    85
http://bodytag.org/nav.php?u=smoke2/
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    86
http://bodytag.org/smoke2/smoke2.pde
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    87
0f44b7360c8d Installer updated
bastiena
parents:
diff changeset
    88
Si vous expérimentez des difficultés ou souhaitez me soumettre une requête, voici mon adresse : alexandre.bastien@iri.centrepompidou.fr