front_processing/src/Trakers/Trakers.pde
author bastiena
Mon, 19 Mar 2012 10:21:56 +0100
changeset 5 d40f84d77db4
parent 3 92f19af39024
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:
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     1
import TUIO.*;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     2
TuioProcessing tuioClient;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     3
boolean oneHandLeft;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     4
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     5
/*FONCTION D'INITIALISATION
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     6
Entrée :
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     7
Sortie : Création de la fenêtre et du client TUIO*/
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     8
void setup()
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     9
{
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    10
    size (640, 480);
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    11
    showMask();
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    12
    tuioClient = new TuioProcessing(this, 80);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    13
    textAlign(CENTER);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    14
    imageMode(CENTER);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    15
    smooth();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    16
}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    17
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    18
/*FONCTION DE DESSIN
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    19
Entrée :
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    20
Sortie : Appel à la fonction de traitement d'input du serveur toutes les n millisecondes*/
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    21
void draw()
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    22
{
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    23
    fill(0);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    24
    tuioInput();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    25
    noStroke();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    26
}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    27
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    28
/*FONCTION DE RECEPTION DES MESSAGES OSC
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    29
Entrée :
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    30
Sortie : Appel aux différentes fonctions de dessin si un message est reçu*/
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    31
void tuioInput()
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    32
{
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    33
    noFill();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    34
  
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    35
    Vector tuioCursorList = tuioClient.getTuioCursors();
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    36
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    37
    if(tuioCursorList.size() <= 0)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    38
    {
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    39
        showMask();
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    40
        text("Les mains sont trop loin ou trop près.", width/2 - 20, 20);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    41
        text("Je ne détecte aucune main.", width/2 - 20, 40);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    42
    }
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    43
        
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    44
    if(tuioCursorList.size() == 1)
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    45
    {
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    46
        handleOneHand((TuioCursor)tuioCursorList.elementAt(0));
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    47
        fill(255);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    48
        text("Les mains sont dans la zone de captation.", width/2 - 20, 20);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    49
        text("Je détecte une main.", width/2 - 20, 40);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    50
    }
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    51
    else if(tuioCursorList.size() == 2)
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    52
    {
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    53
        handleBothHands(tuioCursorList);
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    54
        fill(255);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    55
        text("Les mains sont dans la zone de captation.", width/2 - 20, 20);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    56
        text("Je détecte les deux mains.", width/2 - 20, 40);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    57
    }
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    58
}
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    59
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    60
/*FONCTION DE GENERATION DU MASQUE
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    61
Entrée :
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    62
Sortie : Place des rectangles autour de la zone de dessin*/
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    63
void showMask()
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    64
{
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    65
    background(0);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    66
    fill(255);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    67
    rect(0, 80, width, height-130);
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    68
}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    69
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    70
/*FONCTION DE GESTION DES COURBES POUR UNE MAIN DETECTEE
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    71
Entrée : Un curseur TUIO
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    72
Sortie : Appel aux différentes fonctions de dessin si un message est reçu*/
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    73
void handleOneHand(TuioCursor handCursor)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    74
{
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    75
    showMask();
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    76
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    77
    Vector pointList = handCursor.getPath();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    78
    for (int j=0;j<pointList.size();j++)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    79
    {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    80
        TuioPoint pt = (TuioPoint)pointList.get(j);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    81
        fill(0);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    82
        drawEllipse(pt.getX(), pt.getY(), pt.getZ(), !oneHandLeft);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    83
        
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    84
        if(tuioClient.getTuioCursors().size() == 2)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    85
            break;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    86
    }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    87
}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    88
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    89
/*FONCTION DE GESTION DES COURBES POUR DEUX MAINS DETECTEES
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    90
Entrée : La liste des curseurs TUIO
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    91
Sortie : Appel aux différentes fonctions de dessin si un message est reçu*/
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    92
void handleBothHands(Vector tuioCursorList)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    93
{
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    94
    showMask();
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    95
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    96
    TuioCursor handLeftCursor = (TuioCursor)tuioCursorList.elementAt(0);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    97
    TuioCursor rightLeftCursor = (TuioCursor)tuioCursorList.elementAt(1);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    98
    Vector handLeftPointList = handLeftCursor.getPath();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    99
    Vector handRightPointList = rightLeftCursor.getPath();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   100
    TuioPoint pt;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   101
    
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   102
    for(int j = 0, k = 0 ; j < handLeftPointList.size() || k < handRightPointList.size() ; j++, k++)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   103
    {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   104
        if(j < handLeftPointList.size())
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   105
        {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   106
            pt = (TuioPoint)handLeftPointList.get(j);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   107
            drawEllipse(pt.getX(), pt.getY(), pt.getZ(), true);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   108
        }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   109
        if(k < handRightPointList.size())
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   110
        {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   111
            pt = (TuioPoint)handRightPointList.get(k);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   112
            drawEllipse(pt.getX(), pt.getY(), pt.getZ(), false);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   113
        }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   114
        
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   115
        if(tuioCursorList.size() == 1)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   116
        {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   117
            if(j == handLeftPointList.size())
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   118
                oneHandLeft = false;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   119
            else if(k == handRightPointList.size())
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   120
                oneHandLeft = true;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   121
            //fill(0, 255, 0);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   122
            break;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   123
        }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   124
    }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   125
}
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   126
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   127
/*FONCTION DE DESSIN D'UN POINT DE COURBE
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   128
Entrée : Coordonnées X, Y et Z d'un point
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   129
Sortie : Le point est dessiné avec une épaisseur et une luminosité dépendant de Z*/
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   130
void drawEllipse(float x, float y, float z, boolean leftHand)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   131
{
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   132
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   133
    fill(0, 0, 255);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   134
    stroke(0,0,0);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   135
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   136
    float weight = map(z, 1, 1.5, 50, 1);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   137
    float redColor = map(z, 1, 1.5, 255, 80);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   138
    
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   139
    if(leftHand)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   140
        fill(redColor,0,0);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   141
    else
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   142
        fill(0,redColor,0);
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   143
    
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   144
    if(weight < 30)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   145
    {
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   146
        //strokeWeight(0);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   147
    }
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   148
    else
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   149
    {
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   150
        fill(0, 0, redColor);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   151
    }
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   152
    
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   153
    
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   154
    ellipse(x+20, y+100, weight, weight);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   155
}