changeset 31:e71aad40a068

slight modification oif how the update is done. Sending osc as per tim's specification. Have added example anubis image that we can adapt.
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Fri, 18 Feb 2011 10:17:45 +0000
parents 78bf0b15093d
children f7caff1c2fa6
files of/anubis-wall-mask.gif of/testApp.cpp of/testApp.h
diffstat 3 files changed, 90 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
Binary file of/anubis-wall-mask.gif has changed
--- 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);
 }
 
 //--------------------------------------------------------------
--- 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