# HG changeset patch # User Andrew N Robertson # Date 1298024265 0 # Node ID e71aad40a068312c4579e255e24f45c726c4cdde # Parent 78bf0b15093df089844e47b47c9f72d6d9eec7c5 slight modification oif how the update is done. Sending osc as per tim's specification. Have added example anubis image that we can adapt. diff -r 78bf0b15093d -r e71aad40a068 of/anubis-wall-mask.gif Binary file of/anubis-wall-mask.gif has changed diff -r 78bf0b15093d -r e71aad40a068 of/testApp.cpp --- a/of/testApp.cpp Thu Feb 17 17:04:47 2011 +0000 +++ b/of/testApp.cpp Fri Feb 18 10:17:45 2011 +0000 @@ -18,17 +18,21 @@ ofEnableSmoothing(); ofSetBackgroundAuto(false); ofBackground(238,238,224); - ofEnableAlphaBlending(); + // ofEnableAlphaBlending(); ofSetLineWidth(12); -franklinBook.loadFont("frabk.ttf", 32); + + anubis.loadImage("images/anubis-wall-mask.gif"); + + franklinBook.loadFont("frabk.ttf", 32); + + sender.setup( HOST, PORT ); } //-------------------------------------------------------------- void testApp::update(){ - // update the open ni context and user tracker context.update(); user.update(); @@ -36,22 +40,43 @@ } -void testApp::getCoordinates(ofxTrackedUser* tracked, int userID){ +void testApp::getCoordinates(int userID){ //tracked = user.getTrackedUser(i); + ofxTrackedUser* tracked = user.getTrackedUser(userID); - head[userID][0] = tracked->neck.begin.x; - head[userID][1] = tracked->neck.begin.y; - head[userID][2] = tracked->neck.begin.z; + + 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) { + userPresent[userID] = true; + 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; + }else + { + userPresent[userID] = false; + } ofSetColor(0x00FF00); outputString = "HeadX : "; - outputString += ofToString(head[0][0]); + outputString += ofToString(torso[0][0]); franklinBook.drawString(outputString, 100,600); } +void testApp::sendDataViaOSC(int userID){ + + ofxOscMessage m; + m.setAddress( "/person" ); + m.addIntArg( userID ); + m.addFloatArg( torso[userID][0] ); + m.addFloatArg( torso[userID][1] ); + m.addFloatArg( torso[userID][2] ); + sender.sendMessage( m ); + +} + //-------------------------------------------------------------- void testApp::draw(){ + ofBackground(238,238,224); // draw depth and rgb images //depth.draw(); @@ -63,6 +88,7 @@ + stringstream info; info << "number of tracked users: " << user.getNumTrackedUsers() << endl; @@ -71,27 +97,42 @@ ofxTrackedUser* tracked = user.getTrackedUser(i); if(tracked != NULL) { - //getCoordinates(tracked, i); + //andrews code int userID = i; if (userID < 6){ - head[userID][0] = tracked->neck.begin.x; - head[userID][1] = tracked->neck.begin.y; - head[userID][2] = tracked->neck.begin.z; - - ofSetColor(0x000000); - outputString = "HeadX : "; - outputString += ofToString(head[userID][0]); + 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(head[userID][1]); + outputString += ofToString(torso[userID][1], 2); outputString += " HeadZ : "; - outputString += ofToString(head[userID][2]); + outputString += ofToString(torso[userID][2], 2); - //outputString += ofToString(head[0][0]); 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 @@ -100,6 +141,7 @@ << 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); @@ -107,12 +149,12 @@ 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); +// 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); @@ -123,21 +165,28 @@ 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); } } + + //faint rectangle? ofFill(); ofSetColor(238,238,224,20); - ofRect(0,0,ofGetWidth(),ofGetHeight()); +// 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; +// drawIt =!drawIt; ofToggleFullscreen(); + + sendDataViaOSC(0); } //-------------------------------------------------------------- diff -r 78bf0b15093d -r e71aad40a068 of/testApp.h --- a/of/testApp.h Thu Feb 17 17:04:47 2011 +0000 +++ b/of/testApp.h Fri Feb 18 10:17:45 2011 +0000 @@ -6,6 +6,10 @@ #include "ofMain.h" #include "ofxOpenNI.h" +#include "ofxOsc.h" + +#define HOST "localhost" +#define PORT 12346 class testApp : public ofBaseApp{ @@ -14,7 +18,8 @@ void update(); void draw(); - void getCoordinates(ofxTrackedUser* tracked, int userID); + void getCoordinates(int userID); + void sendDataViaOSC(int userID); void keyPressed (int key); void keyReleased(int key); @@ -28,15 +33,22 @@ ofxUserGenerator user; ofxImageGenerator image; //ofImage Davy; + + ofImage anubis; bool drawIt; - int head[6][3];//x,y,and z of the head - + float torso[6][3];//x,y,and z of the head + bool userPresent[6]; + ofTrueTypeFont franklinBook; string outputString; + ofxOscSender sender; + + }; + #endif