Loading addons.make +2 −0 Original line number Diff line number Diff line ofxOsc ofxNuitrack ofxRealSenseTwo ofxOpenCv ofxGuiExtended ofxNetwork src/SkeletonFinder.cpp +0 −16 Original line number Diff line number Diff line Loading @@ -68,22 +68,6 @@ void SkeletonFinder::drawSensorBox() sensorBox.draw(); } void SkeletonFinder::drawSkeletons2d(ofRectangle _rect) { // TODO ? this seems to draw the skeleton on displays 1-5, which isn't _really_ useful /*float xFactor = _rect.width / captureScreenSize.x; float yFactor = _rect.height / captureScreenSize.y; ofNoFill(); for(int i = 0; i < skeletonEvents.size(); i++){ if (skeletonEvents[i].hasBeenUpdated() && skeletonEvents[i].isActive()) { ofSetColor(255, 0, 0, 255); ofDrawRectangle(_rect.x + skeletonEvents[i].baseRectangle2d.x * xFactor, _rect.y + skeletonEvents[i].baseRectangle2d.y * yFactor, skeletonEvents[i].baseRectangle2d.width * xFactor, skeletonEvents[i].baseRectangle2d.height * yFactor); ofDrawBitmapString("blob[" + ofToString(skeletonEvents[i].mID) + "]\n alive = " + ofToString(skeletonEvents[i].getAgeInMillis()) + "\n sort = " + ofToString(skeletonEvents[i].sortPos) + "\n x = " + ofToString(skeletonEvents[i].headTop.x) + "\n y = " + ofToString(skeletonEvents[i].headTop.y) + "\n z = " + ofToString(skeletonEvents[i].headTop.z), _rect.x + skeletonEvents[i].baseRectangle2d.getCenter().x * xFactor, _rect.y + skeletonEvents[i].baseRectangle2d.getCenter().y * yFactor); } }*/ } // adapted from ofxNuitrack example void SkeletonFinder::drawSkeletons() { static vector<Bone> bones = { Loading src/SkeletonFinder.h +0 −5 Original line number Diff line number Diff line Loading @@ -62,7 +62,6 @@ public: void update(nuitrack::SkeletonData::Ptr data); void drawSensorBox(); void drawSkeletons2d(ofRectangle _rect); void drawSkeletons(); string getShortDesc(); Loading Loading @@ -91,10 +90,6 @@ public: ofParameter<int> sensorBoxBack; ofVboMesh sensorBox; // TODO: What are those ofVec3f normal; float p; }; src/TrackingNetworkManager.cpp +19 −10 Original line number Diff line number Diff line Loading @@ -9,9 +9,7 @@ #include "TrackingNetworkManager.h" void TrackingNetworkManager::setup(ofxGui &gui, string _realsenseSerial){ mDeviceSerial = _realsenseSerial; void TrackingNetworkManager::setup(ofxGui &gui){ string localAddress = "127.0.0.1"; for(int i = 0; i < localIpAddresses.size(); i++){ Loading Loading @@ -41,11 +39,11 @@ void TrackingNetworkManager::setup(ofxGui &gui, string _realsenseSerial){ //-------------------------------------------------------------- void TrackingNetworkManager::update(const SkeletonFinder& skeletonFinder){ void TrackingNetworkManager::update(const BodyFinder& bodyFinder){ long currentMillis = ofGetElapsedTimeMillis(); //send trackingdata to all connected clients sendTrackingData(skeletonFinder); sendTrackingData(bodyFinder); // OSC receiver queues up new messages, so you need to iterate // through waiting messages to get each incoming message Loading Loading @@ -103,23 +101,33 @@ void TrackingNetworkManager::update(const SkeletonFinder& skeletonFinder){ } } void TrackingNetworkManager::sendTrackingData(const SkeletonFinder& skeletonFinder) { vector<Skeleton> skeletons = skeletonFinder.getSkeletons(); void TrackingNetworkManager::sendTrackingData(const BodyFinder& bodyFinder) { #ifdef BLOB // TODO #else vector<Skeleton> skeletons = bodyFinder.getSkeletons(); if (skeletons.size() > 0) { // Only one skeleton is to be on the scene for the perspective to work if (skeletons.size() > 1) { sendMultipleSkeletonsAlert(); sendMultipleBodiesAlert(); } sendSkeletonData(skeletons[0]); } #endif } void TrackingNetworkManager::sendMultipleSkeletonsAlert() { void TrackingNetworkManager::sendMultipleBodiesAlert() { ofxOscMessage alertMsg; alertMsg.setAddress("/ks/server/track/multiple-skeletons"); alertMsg.setAddress("/ks/server/track/multiple-bodies"); sendMessageToTrackingClients(alertMsg); } #ifdef BLOB void TrackingNetworkManager::sendBlobData(const BlobTrackeb& blob) { // TODO } #else void TrackingNetworkManager::sendSkeletonData(const Skeleton& skel) { ofxOscMessage skeletonMsg; skeletonMsg.setAddress("/ks/server/track/skeleton"); Loading @@ -134,6 +142,7 @@ void TrackingNetworkManager::sendSkeletonData(const Skeleton& skel) { sendMessageToTrackingClients(skeletonMsg); } #endif void TrackingNetworkManager::sendMessageToTrackingClients(ofxOscMessage _msg){ for(int j = 0; j < knownClients.size(); j++){ Loading src/TrackingNetworkManager.h +22 −7 Original line number Diff line number Diff line Loading @@ -12,7 +12,13 @@ #include "ofConstants.h" #include "ofxOsc.h" #include "TrackingClient.h" #ifdef BLOB #include "BlobFinder.h" #include "BlobTracker.h" #else #include "SkeletonFinder.h" #endif #include <cmath> #include <regex> Loading @@ -28,15 +34,26 @@ #define NETWORK_BROADCAST_PORT 47500 #define NETWORK_LISTENING_PORT 47600 #ifdef BLOB typedef BlobFinder BodyFinder; #else typedef SkeletonFinder BodyFinder; #endif class TrackingNetworkManager { public: void setup(ofxGui &gui, string _realsenseSerial); void update(const SkeletonFinder& skeletonFinder); void setup(ofxGui &gui); void sendTrackingData(const SkeletonFinder& skeletonFinder); void update(const BodyFinder& bodyFinder); void sendTrackingData(const BodyFinder& bodyFinder); void sendMultipleBodiesAlert(); #ifdef BLOB void sendBlobData(const BlobTracker& blob); #else void sendSkeletonData(const Skeleton& skeleton); void sendMultipleSkeletonsAlert(); #endif void sendMessageToTrackingClients(ofxOscMessage _msg); void checkTrackingClients(long _currentMillis); Loading @@ -48,8 +65,6 @@ public: vector<string> localIpAddresses; string mDeviceSerial; //---------------------------------------- // Server side: ofxOscReceiver serverReceiver; // OSC receiver Loading Loading
addons.make +2 −0 Original line number Diff line number Diff line ofxOsc ofxNuitrack ofxRealSenseTwo ofxOpenCv ofxGuiExtended ofxNetwork
src/SkeletonFinder.cpp +0 −16 Original line number Diff line number Diff line Loading @@ -68,22 +68,6 @@ void SkeletonFinder::drawSensorBox() sensorBox.draw(); } void SkeletonFinder::drawSkeletons2d(ofRectangle _rect) { // TODO ? this seems to draw the skeleton on displays 1-5, which isn't _really_ useful /*float xFactor = _rect.width / captureScreenSize.x; float yFactor = _rect.height / captureScreenSize.y; ofNoFill(); for(int i = 0; i < skeletonEvents.size(); i++){ if (skeletonEvents[i].hasBeenUpdated() && skeletonEvents[i].isActive()) { ofSetColor(255, 0, 0, 255); ofDrawRectangle(_rect.x + skeletonEvents[i].baseRectangle2d.x * xFactor, _rect.y + skeletonEvents[i].baseRectangle2d.y * yFactor, skeletonEvents[i].baseRectangle2d.width * xFactor, skeletonEvents[i].baseRectangle2d.height * yFactor); ofDrawBitmapString("blob[" + ofToString(skeletonEvents[i].mID) + "]\n alive = " + ofToString(skeletonEvents[i].getAgeInMillis()) + "\n sort = " + ofToString(skeletonEvents[i].sortPos) + "\n x = " + ofToString(skeletonEvents[i].headTop.x) + "\n y = " + ofToString(skeletonEvents[i].headTop.y) + "\n z = " + ofToString(skeletonEvents[i].headTop.z), _rect.x + skeletonEvents[i].baseRectangle2d.getCenter().x * xFactor, _rect.y + skeletonEvents[i].baseRectangle2d.getCenter().y * yFactor); } }*/ } // adapted from ofxNuitrack example void SkeletonFinder::drawSkeletons() { static vector<Bone> bones = { Loading
src/SkeletonFinder.h +0 −5 Original line number Diff line number Diff line Loading @@ -62,7 +62,6 @@ public: void update(nuitrack::SkeletonData::Ptr data); void drawSensorBox(); void drawSkeletons2d(ofRectangle _rect); void drawSkeletons(); string getShortDesc(); Loading Loading @@ -91,10 +90,6 @@ public: ofParameter<int> sensorBoxBack; ofVboMesh sensorBox; // TODO: What are those ofVec3f normal; float p; };
src/TrackingNetworkManager.cpp +19 −10 Original line number Diff line number Diff line Loading @@ -9,9 +9,7 @@ #include "TrackingNetworkManager.h" void TrackingNetworkManager::setup(ofxGui &gui, string _realsenseSerial){ mDeviceSerial = _realsenseSerial; void TrackingNetworkManager::setup(ofxGui &gui){ string localAddress = "127.0.0.1"; for(int i = 0; i < localIpAddresses.size(); i++){ Loading Loading @@ -41,11 +39,11 @@ void TrackingNetworkManager::setup(ofxGui &gui, string _realsenseSerial){ //-------------------------------------------------------------- void TrackingNetworkManager::update(const SkeletonFinder& skeletonFinder){ void TrackingNetworkManager::update(const BodyFinder& bodyFinder){ long currentMillis = ofGetElapsedTimeMillis(); //send trackingdata to all connected clients sendTrackingData(skeletonFinder); sendTrackingData(bodyFinder); // OSC receiver queues up new messages, so you need to iterate // through waiting messages to get each incoming message Loading Loading @@ -103,23 +101,33 @@ void TrackingNetworkManager::update(const SkeletonFinder& skeletonFinder){ } } void TrackingNetworkManager::sendTrackingData(const SkeletonFinder& skeletonFinder) { vector<Skeleton> skeletons = skeletonFinder.getSkeletons(); void TrackingNetworkManager::sendTrackingData(const BodyFinder& bodyFinder) { #ifdef BLOB // TODO #else vector<Skeleton> skeletons = bodyFinder.getSkeletons(); if (skeletons.size() > 0) { // Only one skeleton is to be on the scene for the perspective to work if (skeletons.size() > 1) { sendMultipleSkeletonsAlert(); sendMultipleBodiesAlert(); } sendSkeletonData(skeletons[0]); } #endif } void TrackingNetworkManager::sendMultipleSkeletonsAlert() { void TrackingNetworkManager::sendMultipleBodiesAlert() { ofxOscMessage alertMsg; alertMsg.setAddress("/ks/server/track/multiple-skeletons"); alertMsg.setAddress("/ks/server/track/multiple-bodies"); sendMessageToTrackingClients(alertMsg); } #ifdef BLOB void TrackingNetworkManager::sendBlobData(const BlobTrackeb& blob) { // TODO } #else void TrackingNetworkManager::sendSkeletonData(const Skeleton& skel) { ofxOscMessage skeletonMsg; skeletonMsg.setAddress("/ks/server/track/skeleton"); Loading @@ -134,6 +142,7 @@ void TrackingNetworkManager::sendSkeletonData(const Skeleton& skel) { sendMessageToTrackingClients(skeletonMsg); } #endif void TrackingNetworkManager::sendMessageToTrackingClients(ofxOscMessage _msg){ for(int j = 0; j < knownClients.size(); j++){ Loading
src/TrackingNetworkManager.h +22 −7 Original line number Diff line number Diff line Loading @@ -12,7 +12,13 @@ #include "ofConstants.h" #include "ofxOsc.h" #include "TrackingClient.h" #ifdef BLOB #include "BlobFinder.h" #include "BlobTracker.h" #else #include "SkeletonFinder.h" #endif #include <cmath> #include <regex> Loading @@ -28,15 +34,26 @@ #define NETWORK_BROADCAST_PORT 47500 #define NETWORK_LISTENING_PORT 47600 #ifdef BLOB typedef BlobFinder BodyFinder; #else typedef SkeletonFinder BodyFinder; #endif class TrackingNetworkManager { public: void setup(ofxGui &gui, string _realsenseSerial); void update(const SkeletonFinder& skeletonFinder); void setup(ofxGui &gui); void sendTrackingData(const SkeletonFinder& skeletonFinder); void update(const BodyFinder& bodyFinder); void sendTrackingData(const BodyFinder& bodyFinder); void sendMultipleBodiesAlert(); #ifdef BLOB void sendBlobData(const BlobTracker& blob); #else void sendSkeletonData(const Skeleton& skeleton); void sendMultipleSkeletonsAlert(); #endif void sendMessageToTrackingClients(ofxOscMessage _msg); void checkTrackingClients(long _currentMillis); Loading @@ -48,8 +65,6 @@ public: vector<string> localIpAddresses; string mDeviceSerial; //---------------------------------------- // Server side: ofxOscReceiver serverReceiver; // OSC receiver Loading