Loading src/TrackingNetworkManager.cpp +18 −54 Original line number Diff line number Diff line Loading @@ -36,30 +36,13 @@ void TrackingNetworkManager::setup(ofxGui &gui, string _realsenseSerial){ listeningGroup->add<ofxGuiTextField>(listeningIP.set("RX IP",localAddress)); listeningGroup->add<ofxGuiIntInputField>(listeningPort.set("RX Port", NETWORK_LISTENING_PORT, NETWORK_LISTENING_PORT, NETWORK_LISTENING_PORT + 99)); streamingGuiGroup.setName("Streaming"); streamingGuiGroup.add(streamingWholeBody.set("Whole body", true)); panel->addGroup(streamingGuiGroup); panel->loadFromFile("broadcast.xml"); // TODO: check usefulness frameNumber = 0; } //-------------------------------------------------------------- void TrackingNetworkManager::update(const SkeletonFinder& skeletonFinder){ frameNumber++; long currentMillis = ofGetElapsedTimeMillis(); //Check if its about time to send a broadcast message if(knownClients.size() > 0 && (currentMillis - broadCastTimer) > BROADCAST_CLIENT_FREQ){ sendBroadCastAddress(); checkTrackingClients(currentMillis); } else if(knownClients.size() == 0 && (currentMillis - broadCastTimer) > BROADCAST_NOCLIENT_FREQ){ sendBroadCastAddress(); } //send trackingdata to all connected clients sendTrackingData(skeletonFinder); Loading Loading @@ -121,38 +104,33 @@ void TrackingNetworkManager::update(const SkeletonFinder& skeletonFinder){ } void TrackingNetworkManager::sendTrackingData(const SkeletonFinder& skeletonFinder) { // send frame number ofxOscMessage frame; frame.setAddress("/ks/server/track/frame/start"); frame.addIntArg(mServerID.get()); frame.addIntArg(frameNumber); sendMessageToTrackingClients(frame); vector<Skeleton> skeletons = skeletonFinder.getSkeletons(); if (skeletons.size() > 0) { // Only one skeleton is to be on the scene for the perspective to work if (skeletons.size() > 1) { sendMultipleSkeletonsAlert(); } sendSkeletonData(skeletons[0]); } } void TrackingNetworkManager::sendMultipleSkeletonsAlert() { ofxOscMessage alertMsg; alertMsg.setAddress("/ks/server/track/multiple-skeletons"); sendMessageToTrackingClients(alertMsg); } void TrackingNetworkManager::sendSkeletonData(const Skeleton& skel) { ofxOscMessage skeletonMsg; skeletonMsg.setAddress("/ks/server/track/skeleton"); if (streamingWholeBody.get()) { for (auto joint = skel.joints.begin(); joint != skel.joints.end(); ++joint) { skeletonMsg.addFloatArg(joint->pos.x); skeletonMsg.addFloatArg(joint->pos.y); skeletonMsg.addFloatArg(joint->pos.z); skeletonMsg.addFloatArg(joint->confidence); } } else { 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); } Loading Loading @@ -190,20 +168,6 @@ int TrackingNetworkManager::getTrackingClientIndex(string _ip, int _port){ return knownClients.size() -1; } void TrackingNetworkManager::sendBroadCastAddress(){ ofxOscMessage broadcast; broadcast.setAddress("/ks/server/broadcast"); broadcast.addStringArg(mDeviceSerial); broadcast.addIntArg(mServerID.get()); broadcast.addStringArg(listeningIP.get()); broadcast.addIntArg(listeningPort.get()); broadcastSender.setup(broadcastIP.get(), broadcastPort.get()); broadcastSender.sendMessage(broadcast); broadCastTimer = ofGetElapsedTimeMillis(); } //-------------------------------------------------------------- string TrackingNetworkManager::getOscMsgAsString(ofxOscMessage m){ string msg_string; Loading src/TrackingNetworkManager.h +1 −11 Original line number Diff line number Diff line Loading @@ -13,7 +13,6 @@ #include "ofxOsc.h" #include "TrackingClient.h" #include "SkeletonFinder.h" #include "Frustum.h" #include <cmath> #include <regex> Loading @@ -37,13 +36,12 @@ public: void sendTrackingData(const SkeletonFinder& skeletonFinder); void sendSkeletonData(const Skeleton& skeleton); void sendMultipleSkeletonsAlert(); void sendMessageToTrackingClients(ofxOscMessage _msg); void checkTrackingClients(long _currentMillis); int getTrackingClientIndex(string _ip, int _port); void sendBroadCastAddress(); string getOscMsgAsString(ofxOscMessage m); vector<string> matchesInRegex(string _str, string _reg); Loading @@ -52,10 +50,6 @@ public: string mDeviceSerial; float scale; long frameNumber; //---------------------------------------- // Server side: ofxOscReceiver serverReceiver; // OSC receiver Loading Loading @@ -86,10 +80,6 @@ public: ofParameter<int> listeningPort; ofParameter<int> mServerID; ofParameterGroup streamingGuiGroup; ofParameter<bool> streamingWholeBody; }; Loading
src/TrackingNetworkManager.cpp +18 −54 Original line number Diff line number Diff line Loading @@ -36,30 +36,13 @@ void TrackingNetworkManager::setup(ofxGui &gui, string _realsenseSerial){ listeningGroup->add<ofxGuiTextField>(listeningIP.set("RX IP",localAddress)); listeningGroup->add<ofxGuiIntInputField>(listeningPort.set("RX Port", NETWORK_LISTENING_PORT, NETWORK_LISTENING_PORT, NETWORK_LISTENING_PORT + 99)); streamingGuiGroup.setName("Streaming"); streamingGuiGroup.add(streamingWholeBody.set("Whole body", true)); panel->addGroup(streamingGuiGroup); panel->loadFromFile("broadcast.xml"); // TODO: check usefulness frameNumber = 0; } //-------------------------------------------------------------- void TrackingNetworkManager::update(const SkeletonFinder& skeletonFinder){ frameNumber++; long currentMillis = ofGetElapsedTimeMillis(); //Check if its about time to send a broadcast message if(knownClients.size() > 0 && (currentMillis - broadCastTimer) > BROADCAST_CLIENT_FREQ){ sendBroadCastAddress(); checkTrackingClients(currentMillis); } else if(knownClients.size() == 0 && (currentMillis - broadCastTimer) > BROADCAST_NOCLIENT_FREQ){ sendBroadCastAddress(); } //send trackingdata to all connected clients sendTrackingData(skeletonFinder); Loading Loading @@ -121,38 +104,33 @@ void TrackingNetworkManager::update(const SkeletonFinder& skeletonFinder){ } void TrackingNetworkManager::sendTrackingData(const SkeletonFinder& skeletonFinder) { // send frame number ofxOscMessage frame; frame.setAddress("/ks/server/track/frame/start"); frame.addIntArg(mServerID.get()); frame.addIntArg(frameNumber); sendMessageToTrackingClients(frame); vector<Skeleton> skeletons = skeletonFinder.getSkeletons(); if (skeletons.size() > 0) { // Only one skeleton is to be on the scene for the perspective to work if (skeletons.size() > 1) { sendMultipleSkeletonsAlert(); } sendSkeletonData(skeletons[0]); } } void TrackingNetworkManager::sendMultipleSkeletonsAlert() { ofxOscMessage alertMsg; alertMsg.setAddress("/ks/server/track/multiple-skeletons"); sendMessageToTrackingClients(alertMsg); } void TrackingNetworkManager::sendSkeletonData(const Skeleton& skel) { ofxOscMessage skeletonMsg; skeletonMsg.setAddress("/ks/server/track/skeleton"); if (streamingWholeBody.get()) { for (auto joint = skel.joints.begin(); joint != skel.joints.end(); ++joint) { skeletonMsg.addFloatArg(joint->pos.x); skeletonMsg.addFloatArg(joint->pos.y); skeletonMsg.addFloatArg(joint->pos.z); skeletonMsg.addFloatArg(joint->confidence); } } else { 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); } Loading Loading @@ -190,20 +168,6 @@ int TrackingNetworkManager::getTrackingClientIndex(string _ip, int _port){ return knownClients.size() -1; } void TrackingNetworkManager::sendBroadCastAddress(){ ofxOscMessage broadcast; broadcast.setAddress("/ks/server/broadcast"); broadcast.addStringArg(mDeviceSerial); broadcast.addIntArg(mServerID.get()); broadcast.addStringArg(listeningIP.get()); broadcast.addIntArg(listeningPort.get()); broadcastSender.setup(broadcastIP.get(), broadcastPort.get()); broadcastSender.sendMessage(broadcast); broadCastTimer = ofGetElapsedTimeMillis(); } //-------------------------------------------------------------- string TrackingNetworkManager::getOscMsgAsString(ofxOscMessage m){ string msg_string; Loading
src/TrackingNetworkManager.h +1 −11 Original line number Diff line number Diff line Loading @@ -13,7 +13,6 @@ #include "ofxOsc.h" #include "TrackingClient.h" #include "SkeletonFinder.h" #include "Frustum.h" #include <cmath> #include <regex> Loading @@ -37,13 +36,12 @@ public: void sendTrackingData(const SkeletonFinder& skeletonFinder); void sendSkeletonData(const Skeleton& skeleton); void sendMultipleSkeletonsAlert(); void sendMessageToTrackingClients(ofxOscMessage _msg); void checkTrackingClients(long _currentMillis); int getTrackingClientIndex(string _ip, int _port); void sendBroadCastAddress(); string getOscMsgAsString(ofxOscMessage m); vector<string> matchesInRegex(string _str, string _reg); Loading @@ -52,10 +50,6 @@ public: string mDeviceSerial; float scale; long frameNumber; //---------------------------------------- // Server side: ofxOscReceiver serverReceiver; // OSC receiver Loading Loading @@ -86,10 +80,6 @@ public: ofParameter<int> listeningPort; ofParameter<int> mServerID; ofParameterGroup streamingGuiGroup; ofParameter<bool> streamingWholeBody; };