Mercurial > hg > movesynth
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/of/testApp.cpp.orig Sat Oct 08 22:12:49 2011 +0100 @@ -0,0 +1,288 @@ +#include "testApp.h" + +//-------------------------------------------------------------- +void testApp::setup(){ + drawIt=false; + // load the default ofxOpenNI config settings + // see bin/data/openni/config/ofxopenni_config.xml + context.setupUsingXMLFile(); + + // uncomment this to see what open ni is doing inside + //context.enableLogging(OF_LOG_VERBOSE); + + // setup resources + depth.setup(&context); + image.setup(&context); + user.setup(&context, &depth); +// Davy.loadImage("images/davy.jpg"); + ofEnableSmoothing(); + ofSetBackgroundAuto(false); + ofBackground(238,238,224); + // ofEnableAlphaBlending(); + ofSetLineWidth(12); + + + + anubis.loadImage("images/anubis-wall-mask.gif"); + + franklinBook.loadFont("frabk.ttf", 32); + + sender.setup( HOST, PORT ); + stopSender.setup( HOST, STOPPORT ); + + maxTorsoValues[0] = 0; + maxTorsoValues[1] = 0; + maxTorsoValues[2] = 0; + double timeNow = ofGetElapsedTimeMillis(); + for (int user = 0;user < NUMBER_OF_USERS;user++) + lastRecordedTime[user] = timeNow; +} + +//-------------------------------------------------------------- +void testApp::update(){ + + // update the open ni context and user tracker + context.update(); + user.update(); + + +} + + +void testApp::getCoordinates(int userID){ + //tracked = user.getTrackedUser(i); + ofxTrackedUser* tracked = user.getTrackedUser(userID); + + + double timeNow = ofGetElapsedTimeMillis(); + + + + + 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 )){ + //printf("tracking time %d and last recorded %d\n", timeNow, lastRecordedTime[userID]); + userPresent[userID] = true; + lastRecordedTime[userID] = timeNow ; + torso[userID][0] = tracked->left_upper_torso.end.x; + torso[userID][1] = tracked->left_upper_torso.end.y; + torso[userID][2] = tracked->left_upper_torso.end.z; + + checkTorsoMaxima(userID); + + //recent track, low distance but do nothing yet + } + else if(userPresent[userID] && (timeNow - lastRecordedTime[userID]) > 500 ){ + //not recent track => stopped + userPresent[userID] = false; + printf("user %i has STOPPED!\n", userID); + torso[userID][0] = tracked->left_upper_torso.end.x; + torso[userID][1] = tracked->left_upper_torso.end.y; + torso[userID][2] = tracked->left_upper_torso.end.z; + + sendStopMessageForUser(userID); + + } + ofSetColor(0x00FF00); + outputString = "HeadX : "; + outputString += ofToString(torso[0][0]); + franklinBook.drawString(outputString, 100,600); + +} + +void testApp::checkTorsoMaxima(int id){ + for (int h = 0; h < 3;h++){ + if (torso[id][h] > maxTorsoValues[h]) + maxTorsoValues[h] = torso[id][h]; + } +} + +void testApp::sendDataViaOSC(int userID){ + + ofxOscMessage m; + m.setAddress( "/person" ); + m.addIntArg( userID ); + m.addFloatArg( torso[userID][0]/maxTorsoValues[0] ); + m.addFloatArg( torso[userID][1] /maxTorsoValues[1]); + m.addFloatArg( torso[userID][2] /maxTorsoValues[2]); + sender.sendMessage( m ); + +} + +void testApp::sendStopMessageForUser(int userID){ + ofxOscMessage m; + m.setAddress( "/stoppedperson" ); + m.addIntArg( userID ); + m.addFloatArg( torso[userID][0]/maxTorsoValues[0] ); + m.addFloatArg( torso[userID][1] /maxTorsoValues[1]); + m.addFloatArg( torso[userID][2] /maxTorsoValues[2]); + stopSender.sendMessage( m ); +} + +//-------------------------------------------------------------- +void testApp::draw(){ + ofBackground(238,238,224); + + // draw depth and rgb images + //depth.draw(); +if (drawIt != true) { +image.draw(); +user.draw(); +} + // draw all the users automatically? + + + + + stringstream info; + info << "number of tracked users: " << user.getNumTrackedUsers() << endl; + + // draw the neck positions of each user + for(int i = 0; i < user.getNumTrackedUsers(); ++i) { + ofxTrackedUser* tracked = user.getTrackedUser(i); + if(tracked != NULL) { + + + + //andrews code + int userID = i; + + if (userID < 6){ + + getCoordinates(userID); + + + if (userPresent[userID]){ + sendDataViaOSC(userID); + + ofSetColor(0x000000); + outputString = "Us "; + outputString += ofToString(userID); + outputString += " "; + outputString += ofToString(userPresent[userID]); + outputString += "HeadX : "; + outputString += ofToString(torso[userID][0], 2); + outputString += " HeadY : "; + outputString += ofToString(torso[userID][1], 2); + outputString += " HeadZ : "; + outputString += ofToString(torso[userID][2], 2); + + franklinBook.drawString(outputString, 100,600+userID*40); + + ofSetColor(0,0,255); + ofCircle(tracked->neck.begin.x, tracked->neck.begin.y , 40); + + + + } + + ofSetColor(255,255,255); + anubis.draw(tracked->neck.begin.x- anubis.width/2,tracked->neck.begin.y - anubis.height/2); + + } + + //end andrew + + info << i << " neck pos: " + << tracked->left_lower_arm.end.x << " " + << tracked->left_lower_arm.end.y << " " + << tracked->neck.begin.z << endl; + + + if (tracked->neck.begin.x != 0) + + + ofSetColor(139,0,0,100); + ofNoFill(); + float w = ofGetWidth(); + float h = ofGetHeight(); + +// 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); +// 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); +// 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); +// 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); + + //acid smiley + /* ofFill(); + ofSetColor(255,255,100); + ofCircle(tracked->neck.begin.x,tracked->neck.begin.y,30); + ofSetColor(0); + ofCircle(tracked->neck.begin.x,tracked->neck.begin.y,35); + ofSetColor(255,255,100); + ofCircle(tracked->neck.begin.x,tracked->neck.begin.y,30); + ofSetColor(0); + ofCircle(tracked->neck.begin.x+10.0f,tracked->neck.begin.y,6); + ofCircle(tracked->neck.begin.x-10.0f,tracked->neck.begin.y,6); + */ +// anubis.draw(tracked->neck.begin.x,tracked->neck.begin.y); + + + +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); +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); +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); +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); +ofFill(); +ofSetColor(255,255,100); + ofCircle(tracked->neck.begin.x,tracked->neck.begin.y,30); +ofSetColor(0); +ofCircle(tracked->neck.begin.x,tracked->neck.begin.y,35); +ofSetColor(255,255,100); + ofCircle(tracked->neck.begin.x,tracked->neck.begin.y,30); + ofSetColor(0); +ofCircle(tracked->neck.begin.x+10.0f,tracked->neck.begin.y,6); +ofCircle(tracked->neck.begin.x-10.0f,tracked->neck.begin.y,6); + + } + } + + //faint rectangle? + ofFill(); + ofSetColor(238,238,224,20); +// ofRect(0,0,ofGetWidth(),ofGetHeight()); blurring + ofDrawBitmapString(info.str(), 10, 500); + +} + +//-------------------------------------------------------------- +void testApp::keyPressed(int key){ + ofSetColor(238,238,224); + ofRect(0,0,ofGetWidth(),ofGetHeight()); +// drawIt =!drawIt; + ofToggleFullscreen(); + + sendDataViaOSC(0); +} + +//-------------------------------------------------------------- +void testApp::keyReleased(int key){ + +} + +//-------------------------------------------------------------- +void testApp::mouseMoved(int x, int y ){ + +} + +//-------------------------------------------------------------- +void testApp::mouseDragged(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void testApp::mousePressed(int x, int y, int button){ + ofSetColor(238,238,224); + ofFill(); + ofRect(0,0,ofGetWidth(),ofGetHeight()); + +} + +//-------------------------------------------------------------- +void testApp::mouseReleased(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void testApp::windowResized(int w, int h){ + +} +