annotate of/testApp.cpp.orig @ 50:f4c6999ecfe9 tip

added the files on my computer that aren't aiff s> these shoudl be everything for the big bang fair 2011 - heresy, and tim's file's also here
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Sat, 08 Oct 2011 22:12:49 +0100
parents
children
rev   line source
andrew@50 1 #include "testApp.h"
andrew@50 2
andrew@50 3 //--------------------------------------------------------------
andrew@50 4 void testApp::setup(){
andrew@50 5 drawIt=false;
andrew@50 6 // load the default ofxOpenNI config settings
andrew@50 7 // see bin/data/openni/config/ofxopenni_config.xml
andrew@50 8 context.setupUsingXMLFile();
andrew@50 9
andrew@50 10 // uncomment this to see what open ni is doing inside
andrew@50 11 //context.enableLogging(OF_LOG_VERBOSE);
andrew@50 12
andrew@50 13 // setup resources
andrew@50 14 depth.setup(&context);
andrew@50 15 image.setup(&context);
andrew@50 16 user.setup(&context, &depth);
andrew@50 17 // Davy.loadImage("images/davy.jpg");
andrew@50 18 ofEnableSmoothing();
andrew@50 19 ofSetBackgroundAuto(false);
andrew@50 20 ofBackground(238,238,224);
andrew@50 21 // ofEnableAlphaBlending();
andrew@50 22 ofSetLineWidth(12);
andrew@50 23
andrew@50 24
andrew@50 25
andrew@50 26 anubis.loadImage("images/anubis-wall-mask.gif");
andrew@50 27
andrew@50 28 franklinBook.loadFont("frabk.ttf", 32);
andrew@50 29
andrew@50 30 sender.setup( HOST, PORT );
andrew@50 31 stopSender.setup( HOST, STOPPORT );
andrew@50 32
andrew@50 33 maxTorsoValues[0] = 0;
andrew@50 34 maxTorsoValues[1] = 0;
andrew@50 35 maxTorsoValues[2] = 0;
andrew@50 36 double timeNow = ofGetElapsedTimeMillis();
andrew@50 37 for (int user = 0;user < NUMBER_OF_USERS;user++)
andrew@50 38 lastRecordedTime[user] = timeNow;
andrew@50 39 }
andrew@50 40
andrew@50 41 //--------------------------------------------------------------
andrew@50 42 void testApp::update(){
andrew@50 43
andrew@50 44 // update the open ni context and user tracker
andrew@50 45 context.update();
andrew@50 46 user.update();
andrew@50 47
andrew@50 48
andrew@50 49 }
andrew@50 50
andrew@50 51
andrew@50 52 void testApp::getCoordinates(int userID){
andrew@50 53 //tracked = user.getTrackedUser(i);
andrew@50 54 ofxTrackedUser* tracked = user.getTrackedUser(userID);
andrew@50 55
andrew@50 56
andrew@50 57 double timeNow = ofGetElapsedTimeMillis();
andrew@50 58
andrew@50 59
andrew@50 60
andrew@50 61
andrew@50 62 if ((fabs(torso[userID][0] - tracked->left_upper_torso.end.x) + fabs(torso[userID][1] - tracked->left_upper_torso.end.y) > 0.1 && tracked->left_upper_torso.end.x > 0 )){
andrew@50 63 //printf("tracking time %d and last recorded %d\n", timeNow, lastRecordedTime[userID]);
andrew@50 64 userPresent[userID] = true;
andrew@50 65 lastRecordedTime[userID] = timeNow ;
andrew@50 66 torso[userID][0] = tracked->left_upper_torso.end.x;
andrew@50 67 torso[userID][1] = tracked->left_upper_torso.end.y;
andrew@50 68 torso[userID][2] = tracked->left_upper_torso.end.z;
andrew@50 69
andrew@50 70 checkTorsoMaxima(userID);
andrew@50 71
andrew@50 72 //recent track, low distance but do nothing yet
andrew@50 73 }
andrew@50 74 else if(userPresent[userID] && (timeNow - lastRecordedTime[userID]) > 500 ){
andrew@50 75 //not recent track => stopped
andrew@50 76 userPresent[userID] = false;
andrew@50 77 printf("user %i has STOPPED!\n", userID);
andrew@50 78 torso[userID][0] = tracked->left_upper_torso.end.x;
andrew@50 79 torso[userID][1] = tracked->left_upper_torso.end.y;
andrew@50 80 torso[userID][2] = tracked->left_upper_torso.end.z;
andrew@50 81
andrew@50 82 sendStopMessageForUser(userID);
andrew@50 83
andrew@50 84 }
andrew@50 85 ofSetColor(0x00FF00);
andrew@50 86 outputString = "HeadX : ";
andrew@50 87 outputString += ofToString(torso[0][0]);
andrew@50 88 franklinBook.drawString(outputString, 100,600);
andrew@50 89
andrew@50 90 }
andrew@50 91
andrew@50 92 void testApp::checkTorsoMaxima(int id){
andrew@50 93 for (int h = 0; h < 3;h++){
andrew@50 94 if (torso[id][h] > maxTorsoValues[h])
andrew@50 95 maxTorsoValues[h] = torso[id][h];
andrew@50 96 }
andrew@50 97 }
andrew@50 98
andrew@50 99 void testApp::sendDataViaOSC(int userID){
andrew@50 100
andrew@50 101 ofxOscMessage m;
andrew@50 102 m.setAddress( "/person" );
andrew@50 103 m.addIntArg( userID );
andrew@50 104 m.addFloatArg( torso[userID][0]/maxTorsoValues[0] );
andrew@50 105 m.addFloatArg( torso[userID][1] /maxTorsoValues[1]);
andrew@50 106 m.addFloatArg( torso[userID][2] /maxTorsoValues[2]);
andrew@50 107 sender.sendMessage( m );
andrew@50 108
andrew@50 109 }
andrew@50 110
andrew@50 111 void testApp::sendStopMessageForUser(int userID){
andrew@50 112 ofxOscMessage m;
andrew@50 113 m.setAddress( "/stoppedperson" );
andrew@50 114 m.addIntArg( userID );
andrew@50 115 m.addFloatArg( torso[userID][0]/maxTorsoValues[0] );
andrew@50 116 m.addFloatArg( torso[userID][1] /maxTorsoValues[1]);
andrew@50 117 m.addFloatArg( torso[userID][2] /maxTorsoValues[2]);
andrew@50 118 stopSender.sendMessage( m );
andrew@50 119 }
andrew@50 120
andrew@50 121 //--------------------------------------------------------------
andrew@50 122 void testApp::draw(){
andrew@50 123 ofBackground(238,238,224);
andrew@50 124
andrew@50 125 // draw depth and rgb images
andrew@50 126 //depth.draw();
andrew@50 127 if (drawIt != true) {
andrew@50 128 image.draw();
andrew@50 129 user.draw();
andrew@50 130 }
andrew@50 131 // draw all the users automatically?
andrew@50 132
andrew@50 133
andrew@50 134
andrew@50 135
andrew@50 136 stringstream info;
andrew@50 137 info << "number of tracked users: " << user.getNumTrackedUsers() << endl;
andrew@50 138
andrew@50 139 // draw the neck positions of each user
andrew@50 140 for(int i = 0; i < user.getNumTrackedUsers(); ++i) {
andrew@50 141 ofxTrackedUser* tracked = user.getTrackedUser(i);
andrew@50 142 if(tracked != NULL) {
andrew@50 143
andrew@50 144
andrew@50 145
andrew@50 146 //andrews code
andrew@50 147 int userID = i;
andrew@50 148
andrew@50 149 if (userID < 6){
andrew@50 150
andrew@50 151 getCoordinates(userID);
andrew@50 152
andrew@50 153
andrew@50 154 if (userPresent[userID]){
andrew@50 155 sendDataViaOSC(userID);
andrew@50 156
andrew@50 157 ofSetColor(0x000000);
andrew@50 158 outputString = "Us ";
andrew@50 159 outputString += ofToString(userID);
andrew@50 160 outputString += " ";
andrew@50 161 outputString += ofToString(userPresent[userID]);
andrew@50 162 outputString += "HeadX : ";
andrew@50 163 outputString += ofToString(torso[userID][0], 2);
andrew@50 164 outputString += " HeadY : ";
andrew@50 165 outputString += ofToString(torso[userID][1], 2);
andrew@50 166 outputString += " HeadZ : ";
andrew@50 167 outputString += ofToString(torso[userID][2], 2);
andrew@50 168
andrew@50 169 franklinBook.drawString(outputString, 100,600+userID*40);
andrew@50 170
andrew@50 171 ofSetColor(0,0,255);
andrew@50 172 ofCircle(tracked->neck.begin.x, tracked->neck.begin.y , 40);
andrew@50 173
andrew@50 174
andrew@50 175
andrew@50 176 }
andrew@50 177
andrew@50 178 ofSetColor(255,255,255);
andrew@50 179 anubis.draw(tracked->neck.begin.x- anubis.width/2,tracked->neck.begin.y - anubis.height/2);
andrew@50 180
andrew@50 181 }
andrew@50 182
andrew@50 183 //end andrew
andrew@50 184
andrew@50 185 info << i << " neck pos: "
andrew@50 186 << tracked->left_lower_arm.end.x << " "
andrew@50 187 << tracked->left_lower_arm.end.y << " "
andrew@50 188 << tracked->neck.begin.z << endl;
andrew@50 189
andrew@50 190
andrew@50 191 if (tracked->neck.begin.x != 0)
andrew@50 192
andrew@50 193
andrew@50 194 ofSetColor(139,0,0,100);
andrew@50 195 ofNoFill();
andrew@50 196 float w = ofGetWidth();
andrew@50 197 float h = ofGetHeight();
andrew@50 198
andrew@50 199 // ofBezier(tracked->neck.begin.x,tracked->neck.begin.y,tracked->neck.end.x,tracked->neck.end.y,tracked->left_lower_arm.begin.x,tracked->left_lower_arm.begin.y,tracked->left_lower_arm.end.x,/*tracked->left_lower_arm.end.y*/ w);
andrew@50 200 // ofBezier(tracked->neck.begin.x,tracked->neck.begin.y,tracked->neck.end.x,tracked->neck.end.y,tracked->right_lower_arm.begin.x,tracked->right_lower_arm.begin.y,tracked->right_lower_arm.end.x,/*tracked->right_lower_arm.end.y*/ w);
andrew@50 201 // ofBezier(tracked->neck.begin.x,tracked->neck.begin.y,tracked->neck.end.x,tracked->neck.end.y,tracked->left_lower_leg.begin.x,tracked->left_lower_leg.begin.y,tracked->left_lower_leg.end.x,/*tracked->left_lower_leg.end.y*/ h);
andrew@50 202 // ofBezier(tracked->neck.begin.x,tracked->neck.begin.y,tracked->neck.end.x,tracked->neck.end.y,tracked->right_lower_leg.begin.x,tracked->right_lower_leg.begin.y,tracked->right_lower_leg.end.x,/*tracked->right_lower_leg.end.y*/ h);
andrew@50 203
andrew@50 204 //acid smiley
andrew@50 205 /* ofFill();
andrew@50 206 ofSetColor(255,255,100);
andrew@50 207 ofCircle(tracked->neck.begin.x,tracked->neck.begin.y,30);
andrew@50 208 ofSetColor(0);
andrew@50 209 ofCircle(tracked->neck.begin.x,tracked->neck.begin.y,35);
andrew@50 210 ofSetColor(255,255,100);
andrew@50 211 ofCircle(tracked->neck.begin.x,tracked->neck.begin.y,30);
andrew@50 212 ofSetColor(0);
andrew@50 213 ofCircle(tracked->neck.begin.x+10.0f,tracked->neck.begin.y,6);
andrew@50 214 ofCircle(tracked->neck.begin.x-10.0f,tracked->neck.begin.y,6);
andrew@50 215 */
andrew@50 216 // anubis.draw(tracked->neck.begin.x,tracked->neck.begin.y);
andrew@50 217
andrew@50 218
andrew@50 219
andrew@50 220 ofBezier(tracked->neck.begin.x,tracked->neck.begin.y,tracked->neck.end.x,tracked->neck.end.y,tracked->left_lower_arm.begin.x,tracked->left_lower_arm.begin.y,tracked->left_lower_arm.end.x,/*tracked->left_lower_arm.end.y*/ w);
andrew@50 221 ofBezier(tracked->neck.begin.x,tracked->neck.begin.y,tracked->neck.end.x,tracked->neck.end.y,tracked->right_lower_arm.begin.x,tracked->right_lower_arm.begin.y,tracked->right_lower_arm.end.x,/*tracked->right_lower_arm.end.y*/ w);
andrew@50 222 ofBezier(tracked->neck.begin.x,tracked->neck.begin.y,tracked->neck.end.x,tracked->neck.end.y,tracked->left_lower_leg.begin.x,tracked->left_lower_leg.begin.y,tracked->left_lower_leg.end.x,/*tracked->left_lower_leg.end.y*/ h);
andrew@50 223 ofBezier(tracked->neck.begin.x,tracked->neck.begin.y,tracked->neck.end.x,tracked->neck.end.y,tracked->right_lower_leg.begin.x,tracked->right_lower_leg.begin.y,tracked->right_lower_leg.end.x,/*tracked->right_lower_leg.end.y*/ h);
andrew@50 224 ofFill();
andrew@50 225 ofSetColor(255,255,100);
andrew@50 226 ofCircle(tracked->neck.begin.x,tracked->neck.begin.y,30);
andrew@50 227 ofSetColor(0);
andrew@50 228 ofCircle(tracked->neck.begin.x,tracked->neck.begin.y,35);
andrew@50 229 ofSetColor(255,255,100);
andrew@50 230 ofCircle(tracked->neck.begin.x,tracked->neck.begin.y,30);
andrew@50 231 ofSetColor(0);
andrew@50 232 ofCircle(tracked->neck.begin.x+10.0f,tracked->neck.begin.y,6);
andrew@50 233 ofCircle(tracked->neck.begin.x-10.0f,tracked->neck.begin.y,6);
andrew@50 234
andrew@50 235 }
andrew@50 236 }
andrew@50 237
andrew@50 238 //faint rectangle?
andrew@50 239 ofFill();
andrew@50 240 ofSetColor(238,238,224,20);
andrew@50 241 // ofRect(0,0,ofGetWidth(),ofGetHeight()); blurring
andrew@50 242 ofDrawBitmapString(info.str(), 10, 500);
andrew@50 243
andrew@50 244 }
andrew@50 245
andrew@50 246 //--------------------------------------------------------------
andrew@50 247 void testApp::keyPressed(int key){
andrew@50 248 ofSetColor(238,238,224);
andrew@50 249 ofRect(0,0,ofGetWidth(),ofGetHeight());
andrew@50 250 // drawIt =!drawIt;
andrew@50 251 ofToggleFullscreen();
andrew@50 252
andrew@50 253 sendDataViaOSC(0);
andrew@50 254 }
andrew@50 255
andrew@50 256 //--------------------------------------------------------------
andrew@50 257 void testApp::keyReleased(int key){
andrew@50 258
andrew@50 259 }
andrew@50 260
andrew@50 261 //--------------------------------------------------------------
andrew@50 262 void testApp::mouseMoved(int x, int y ){
andrew@50 263
andrew@50 264 }
andrew@50 265
andrew@50 266 //--------------------------------------------------------------
andrew@50 267 void testApp::mouseDragged(int x, int y, int button){
andrew@50 268
andrew@50 269 }
andrew@50 270
andrew@50 271 //--------------------------------------------------------------
andrew@50 272 void testApp::mousePressed(int x, int y, int button){
andrew@50 273 ofSetColor(238,238,224);
andrew@50 274 ofFill();
andrew@50 275 ofRect(0,0,ofGetWidth(),ofGetHeight());
andrew@50 276
andrew@50 277 }
andrew@50 278
andrew@50 279 //--------------------------------------------------------------
andrew@50 280 void testApp::mouseReleased(int x, int y, int button){
andrew@50 281
andrew@50 282 }
andrew@50 283
andrew@50 284 //--------------------------------------------------------------
andrew@50 285 void testApp::windowResized(int w, int h){
andrew@50 286
andrew@50 287 }
andrew@50 288