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