Mercurial > hg > movesynth
view 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 source
#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){ }