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){
+
+}
+