Loading src/BlobTracker.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -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; Loading src/BlobTracker.h +2 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading src/TrackingNetworkManager.cpp +37 −24 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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; Loading @@ -113,6 +115,8 @@ void TrackingNetworkManager::sendTrackingData(const BodyFinder& bodyFinder) { return; } sendBlobData(activeBlobs[0]); } else { sendNoBodyFound(); } #else vector<Skeleton> skeletons = bodyFinder.getSkeletons(); Loading @@ -125,6 +129,8 @@ void TrackingNetworkManager::sendTrackingData(const BodyFinder& bodyFinder) { return; } sendSkeletonData(skeletons[0]); } else { sendNoBodyFound(); } #endif } Loading @@ -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 Loading @@ -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 /** Loading @@ -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 Loading src/TrackingNetworkManager.h +2 −0 Original line number Diff line number Diff line Loading @@ -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); Loading src/ofApp.cpp +18 −6 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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(); Loading Loading @@ -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); Loading Loading @@ -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(); } Loading @@ -466,7 +478,7 @@ void ofApp::keyPressed(int key){ break; case 'p': bPreviewPointCloud = !bPreviewPointCloud; bDisplayBlobTrackerVision = !bDisplayBlobTrackerVision; break; case 'v': Loading Loading
src/BlobTracker.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
src/BlobTracker.h +2 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading
src/TrackingNetworkManager.cpp +37 −24 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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; Loading @@ -113,6 +115,8 @@ void TrackingNetworkManager::sendTrackingData(const BodyFinder& bodyFinder) { return; } sendBlobData(activeBlobs[0]); } else { sendNoBodyFound(); } #else vector<Skeleton> skeletons = bodyFinder.getSkeletons(); Loading @@ -125,6 +129,8 @@ void TrackingNetworkManager::sendTrackingData(const BodyFinder& bodyFinder) { return; } sendSkeletonData(skeletons[0]); } else { sendNoBodyFound(); } #endif } Loading @@ -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 Loading @@ -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 /** Loading @@ -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 Loading
src/TrackingNetworkManager.h +2 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
src/ofApp.cpp +18 −6 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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(); Loading Loading @@ -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); Loading Loading @@ -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(); } Loading @@ -466,7 +478,7 @@ void ofApp::keyPressed(int key){ break; case 'p': bPreviewPointCloud = !bPreviewPointCloud; bDisplayBlobTrackerVision = !bDisplayBlobTrackerVision; break; case 'v': Loading