Mercurial > hg > movesynth
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 |