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

}