void FaceOsc::sendFaceOsc(ofxFaceTracker& tracker) { clearBundle(); if(tracker.getFound()) { addMessage("/found", 1); ofVec2f position = tracker.getPosition(); addMessage("/pose/position", position); addMessage("/pose/scale", tracker.getScale()); ofVec3f orientation = tracker.getOrientation(); addMessage("/pose/orientation", orientation); addMessage("/gesture/mouth/width", tracker.getGesture(ofxFaceTracker::MOUTH_WIDTH)); addMessage("/gesture/mouth/height", tracker.getGesture(ofxFaceTracker::MOUTH_HEIGHT)); addMessage("/gesture/eyebrow/left", tracker.getGesture(ofxFaceTracker::LEFT_EYEBROW_HEIGHT)); addMessage("/gesture/eyebrow/right", tracker.getGesture(ofxFaceTracker::RIGHT_EYEBROW_HEIGHT)); addMessage("/gesture/eye/left", tracker.getGesture(ofxFaceTracker::LEFT_EYE_OPENNESS)); addMessage("/gesture/eye/right", tracker.getGesture(ofxFaceTracker::RIGHT_EYE_OPENNESS)); addMessage("/gesture/jaw", tracker.getGesture(ofxFaceTracker::JAW_OPENNESS)); addMessage("/gesture/nostrils", tracker.getGesture(ofxFaceTracker::NOSTRIL_FLARE)); } else { addMessage("/found", 0); } sendBundle(); }
//------------------------------------------------------------------------------------- void Channel::clearState( bool warnOnDiscard /*=false*/ ) { // 清空未处理的接受包缓存 for(uint8 i=0; i<2; i++) { if (bufferedReceives_[i].size() > 0) { BufferedReceives::iterator iter = bufferedReceives_[i].begin(); int hasDiscard = 0; for(; iter != bufferedReceives_[i].end(); iter++) { Packet* pPacket = (*iter); if(pPacket->opsize() > 0) hasDiscard++; if(pPacket->isTCPPacket()) TCPPacket::ObjPool().reclaimObject(static_cast<TCPPacket*>(pPacket)); else UDPPacket::ObjPool().reclaimObject(static_cast<UDPPacket*>(pPacket)); } if (hasDiscard > 0 && warnOnDiscard) { WARNING_MSG(fmt::format("Channel::clearState( {} ): " "Discarding {} buffered packet(s)\n", this->c_str(), hasDiscard)); } bufferedReceives_[i].clear(); } } clearBundle(); lastReceivedTime_ = timestamp(); isCondemn_ = false; numPacketsSent_ = 0; numPacketsReceived_ = 0; numBytesSent_ = 0; numBytesReceived_ = 0; lastTickBytesReceived_ = 0; proxyID_ = 0; strextra_ = ""; channelType_ = CHANNEL_NORMAL; bufferedReceivesIdx_ = 0; SAFE_RELEASE(pPacketReader_); pFilter_ = NULL; stopInactivityDetection(); this->endpoint(NULL); }
void FaceOsc::sendFaceOsc(ofxFaceTracker& tracker) { clearBundle(); if(tracker.getFound()) { addMessage("/found", 1); if(bIncludePose) { ofVec2f position = tracker.getPosition(); addMessage("/pose/position", position); addMessage("/pose/scale", tracker.getScale()); ofVec3f orientation = tracker.getOrientation(); addMessage("/pose/orientation", orientation); } if (bIncludeGestures) { addMessage("/gesture/mouth/width", tracker.getGesture(ofxFaceTracker::MOUTH_WIDTH)); addMessage("/gesture/mouth/height", tracker.getGesture(ofxFaceTracker::MOUTH_HEIGHT)); addMessage("/gesture/eyebrow/left", tracker.getGesture(ofxFaceTracker::LEFT_EYEBROW_HEIGHT)); addMessage("/gesture/eyebrow/right", tracker.getGesture(ofxFaceTracker::RIGHT_EYEBROW_HEIGHT)); addMessage("/gesture/eye/left", tracker.getGesture(ofxFaceTracker::LEFT_EYE_OPENNESS)); addMessage("/gesture/eye/right", tracker.getGesture(ofxFaceTracker::RIGHT_EYE_OPENNESS)); addMessage("/gesture/jaw", tracker.getGesture(ofxFaceTracker::JAW_OPENNESS)); addMessage("/gesture/nostrils", tracker.getGesture(ofxFaceTracker::NOSTRIL_FLARE)); } if(bIncludeAllVertices){ ofVec2f center = tracker.getPosition(); ofxOscMessage msg; msg.setAddress("/raw"); for(ofVec2f p : tracker.getImagePoints()) { if (bNormalizeRaw) { msg.addFloatArg((p.x-center.x)/tracker.getScale()); msg.addFloatArg((p.y-center.y)/tracker.getScale()); } else { msg.addFloatArg(p.x); msg.addFloatArg(p.y); } } bundle.addMessage(msg); } } else { addMessage("/found", 0); } sendBundle(); }
void ofApp::update() { if(faceShift.update()) { lastPacket = ofGetElapsedTimef(); timer.tick(); clearBundle(); if(faceShift.getFound()) { for(int i = 0; i < addresses.size(); i++) { addMessage("/gesture" + addresses[i], faceShift.getBlendshapeWeight(i)); } addMessage("/gesture/eye/gaze/left", faceShift.getLeftEyeRotation()); addMessage("/gesture/eye/gaze/right", faceShift.getRightEyeRotation()); addMessage("/pose/position", faceShift.getPosition()); addMessage("/pose/orientation", faceShift.getRotationEuler()); addMessage("/timestamp", (float) faceShift.getTimestamp()); addMessage("/found", 1); } else { addMessage("/found", 0); } sendBundle(); } }
void Channel::clearState(bool warnOnDiscard) { if (mBufferedReceives.size() > 0) { BufferedReceives::iterator iter = mBufferedReceives.begin(); int hasDiscard = 0; for(; iter != mBufferedReceives.end(); ++iter) { Packet* pPacket = (*iter); if(pPacket->length() > 0) hasDiscard++; reclaimPacket(pPacket->isTCPPacket(), pPacket); } if (hasDiscard > 0 && warnOnDiscard) { // WARNING_MSG(fmt::format("Channel::clearState( {} ): " // "Discarding {} buffered packet(s)\n", // this->c_str(), hasDiscard)); } mBufferedReceives.clear(); } clearBundle(); mLastReceivedTime = timestamp(); mNumPacketsSent = 0; mNumPacketsReceived = 0; mNumBytesSent = 0; mNumBytesReceived = 0; mLastTickBytesReceived = 0; proxyID_ = 0; mStrExtra = ""; mChannelType = Chanel_Normal; if(mpEndPoint && mProtocolType == Protocol_TCP && !this->isDestroyed()) { this->stopSend(); if(mpNetworkManager) { if(!this->isDestroyed()) mpNetworkManager->dispatcher().deregisterReadFileDescriptor(*mpEndPoint); } } mFlags = 0; mpFilter = NULL; stopInactivityDetection(); if(mpEndPoint) { mpEndPoint->close(); this->pEndPoint(NULL); } }