Commit ecf5bdf4 authored by Pierre Bürki's avatar Pierre Bürki
Browse files

Merge branch 'send-no-body-messages' into 'develop'

Send no body messages

See merge request !19
parents ed7025cb 49ba261b
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -19,6 +19,9 @@ BlobTracker::BlobTracker(int _ID, int _liveSpan, ofRectangle _rect, glm::vec3 _h
	update(_rect, _headBlobCenter, _headBlobSize, _headTop, 0);
}

BlobTracker::BlobTracker() :
	BlobTracker(0, 0, ofRectangle(), glm::vec3(), glm::vec2(), glm::vec3()) {}

void BlobTracker::updatePrepare()
{
	mHasBeenUpdated = false;
+2 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ class BlobTracker {
    
public:
    BlobTracker(int _ID, int _liveSpan, ofRectangle _rect, glm::vec3 _headBlobCenter, glm::vec2 _headBlobSize, glm::vec3 _headTop);
    BlobTracker();

	// returns true if the event is alive
	bool isActive();
+37 −24
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ void TrackingNetworkManager::update(const BodyFinder& bodyFinder){
	}
    
	//this is purely workaround for a mysterious OSCpack bug on 64bit linux
	// after startup, reinit the receivers
	// after startup, reinit the receivers@
	// must be a timing problem, though - in debug, stepping through, it works.
	if(ofGetFrameNum() == 60){
		serverReceiver.setup(NETWORK_LISTENING_PORT);
@@ -99,6 +99,8 @@ void TrackingNetworkManager::update(const BodyFinder& bodyFinder){

void TrackingNetworkManager::sendTrackingData(const BodyFinder& bodyFinder) {

// TODO: send nothing as well

#ifdef BLOB
    vector<BlobTracker> blobs = bodyFinder.blobEvents;
	vector<BlobTracker> activeBlobs;
@@ -113,6 +115,8 @@ void TrackingNetworkManager::sendTrackingData(const BodyFinder& bodyFinder) {
			return;
		}
		sendBlobData(activeBlobs[0]);
	} else {
		sendNoBodyFound();
	}
#else
	vector<Skeleton> skeletons = bodyFinder.getSkeletons();
@@ -125,6 +129,8 @@ void TrackingNetworkManager::sendTrackingData(const BodyFinder& bodyFinder) {
			return;
		}
		sendSkeletonData(skeletons[0]);
	} else {
		sendNoBodyFound();
	}
#endif
}
@@ -132,13 +138,39 @@ void TrackingNetworkManager::sendTrackingData(const BodyFinder& bodyFinder) {
/**
 * Send a special message via OSC to signal multiple bodies
 */
void TrackingNetworkManager::sendMultipleBodiesAlert()
{
void TrackingNetworkManager::sendMultipleBodiesAlert() {
	ofxOscMessage alertMsg;
	alertMsg.setAddress("/ks/server/track/multiple-bodies");
	sendMessageToTrackingClients(alertMsg);
}

void TrackingNetworkManager::sendNoBodyFound() {

#ifdef BLOB
	string address = "/ks/server/track/headblob";
#else
	string address = "/ks/server/track/skeleton";
#endif

	sendBody(address, glm::vec3(), -1.0f);
}

void TrackingNetworkManager::sendBody(string address, glm::vec3 position, float confidence) {
	ofxOscMessage message;
	message.setAddress(address);

	message.addIntArg(mServerID.get());

	message.addFloatArg(position.x);
	message.addFloatArg(position.y);
	message.addFloatArg(position.z);

	message.addFloatArg(confidence);

	sendMessageToTrackingClients(message);

}

#ifdef BLOB
/**
 * Send a given blob via OSC
@@ -146,16 +178,7 @@ void TrackingNetworkManager::sendMultipleBodiesAlert()
 */
void TrackingNetworkManager::sendBlobData(const BlobTracker& blob)
{
	ofxOscMessage blobMsg;
	blobMsg.setAddress("/ks/server/track/headblob");

	blobMsg.addIntArg(mServerID.get());

	blobMsg.addFloatArg(blob.headBlobCenter.x);
	blobMsg.addFloatArg(blob.headBlobCenter.y);
	blobMsg.addFloatArg(blob.headBlobCenter.z);

	sendMessageToTrackingClients(blobMsg);
	sendBody("/ks/server/track/headblob", blob.headBlobCenter, 1.0f);
}
#else
/**
@@ -163,18 +186,8 @@ void TrackingNetworkManager::sendBlobData(const BlobTracker& blob)
 */
void TrackingNetworkManager::sendSkeletonData(const Skeleton& skel)
{
	ofxOscMessage skeletonMsg;
	skeletonMsg.setAddress("/ks/server/track/skeleton");

	skeletonMsg.addIntArg(mServerID.get());

	Joint head = skel.joints[nuitrack::JOINT_HEAD];
	skeletonMsg.addFloatArg(head.pos.x);
	skeletonMsg.addFloatArg(head.pos.y);
	skeletonMsg.addFloatArg(head.pos.z);
	skeletonMsg.addFloatArg(head.confidence);

	sendMessageToTrackingClients(skeletonMsg);
	sendBody("/ks/server/track/skeleton", head.pos, head.confidence);
}
#endif

+2 −0
Original line number Diff line number Diff line
@@ -48,6 +48,8 @@ public:
    void update(const BodyFinder& bodyFinder);
    void sendTrackingData(const BodyFinder& bodyFinder);
    void sendMultipleBodiesAlert();
    void sendNoBodyFound();
    void sendBody(string address, glm::vec3 position, float confidence);

#ifdef BLOB
    void sendBlobData(const BlobTracker& blob);
+18 −6
Original line number Diff line number Diff line
@@ -278,7 +278,7 @@ void ofApp::update()
	ofBackground(100, 100, 100);

#ifdef BLOB
	if(realSense->update(ofxRealSenseTwo::PointCloud::VIDEO))
	if(realSense->update(ofxRealSenseTwo::PointCloud::DEPTH))
	{
		if (maskUpdatesCounter < MASK_UPDATE_CYCLES)
		{
@@ -348,10 +348,21 @@ void ofApp::draw() {

    if(bShowVisuals){

#ifdef BLOB
		if (bDisplayBlobTrackerVision) {
			tracker.filteredImage.draw(viewMain);
		} else {
			previewCam.begin(viewMain);
			mainGrid.drawPlane(5., 5, false);
			drawPreview();
			previewCam.end();
		}
#else
		previewCam.begin(viewMain);
		mainGrid.drawPlane(5., 5, false);
		drawPreview();
		previewCam.end();
#endif

        glDisable(GL_DEPTH_TEST);
        ofPushStyle();
@@ -416,7 +427,7 @@ void ofApp::drawCapturePointCloud(bool _mask) {

	if (_mask) {
		shader.setUniform1i("mask", 1);
		glPointSize(6 * 4);
		glPointSize(2);
	}
	else {
		shader.setUniform1i("mask", 0);
@@ -450,11 +461,12 @@ void ofApp::exit() {
void ofApp::createHelp(){
	stringstream helpStream;
    helpStream << "press v -> to show visualizations\n";
	helpStream << "press 1 - 3 -> to change the viewport\n";
	helpStream << "press p -> to show pointcloud\n";
#ifdef BLOB
	helpStream << "press p -> to show filtered capture space\n";
#endif
	helpStream << "\n";
    helpStream << "press h -> to show help \n";
	helpStream << "press l -> to load last saved settings\n";
	helpStream << "press l -> to load settings\n";

	help = helpStream.str();
}
@@ -466,7 +478,7 @@ void ofApp::keyPressed(int key){
			break;
			
		case 'p':
			bPreviewPointCloud = !bPreviewPointCloud;
			bDisplayBlobTrackerVision = !bDisplayBlobTrackerVision;
            break;
            
		case 'v':
Loading