void sendHandOSC() { if (!haveHand) return; lo_bundle bundle = lo_bundle_new(LO_TT_IMMEDIATE); if (!raw) { jointCoords[0] = off_x + (mult_x * (480 - handCoords[0]) / 960); //Normalize coords to 0..1 interval jointCoords[1] = off_y + (mult_y * (320 - handCoords[1]) / 640); //Normalize coords to 0..1 interval jointCoords[2] = off_z + (mult_z * handCoords[2] * 7.8125 / 10000); //Normalize coords to 0..7.8125 interval } else { jointCoords[0] = handCoords[0]; jointCoords[1] = handCoords[1]; jointCoords[2] = handCoords[2]; } oscFunc(&bundle, "l_hand", 6); lo_send_bundle(addr, bundle); printf("hand %.3f %.3f \r", jointCoords[0], jointCoords[1]); haveHand = false; }
void sendHandOSC() { if (!haveHand) return; osc::OutboundPacketStream p(osc_buffer, OUTPUT_BUFFER_SIZE); p << osc::BeginBundleImmediate; if (!raw) { jointCoords[0] = off_x + (mult_x * (480 - handCoords[0]) / 960); //Normalize coords to 0..1 interval jointCoords[1] = off_y + (mult_y * (320 - handCoords[1]) / 640); //Normalize coords to 0..1 interval jointCoords[2] = off_z + (mult_z * handCoords[2] * 7.8125 / 10000); //Normalize coords to 0..7.8125 interval } else { jointCoords[0] = handCoords[0]; jointCoords[1] = handCoords[1]; jointCoords[2] = handCoords[2]; } oscFunc(&p, "l_hand"); p << osc::EndBundle; transmitSocket->Send(p.Data(), p.Size()); printf("hand %.3f %.3f \r", jointCoords[0], jointCoords[1]); haveHand = false; }
void sendOSC() { if (handMode) { sendHandOSC(); return; } XnUserID aUsers[15]; XnUInt16 nUsers = 15; userGenerator.GetUsers(aUsers, nUsers); for (int i = 0; i < nUsers; ++i) { if (userGenerator.GetSkeletonCap().IsTracking(aUsers[i])) { lo_bundle bundle = lo_bundle_new(LO_TT_IMMEDIATE); if (jointPos(aUsers[i], XN_SKEL_HEAD) == 0) { oscFunc(&bundle, "head", 0); } if (jointPos(aUsers[i], XN_SKEL_NECK) == 0) { oscFunc(&bundle, "neck", 1); } if (jointPos(aUsers[i], XN_SKEL_LEFT_COLLAR) == 0) { oscFunc(&bundle, "l_collar", 2); } if (jointPos(aUsers[i], XN_SKEL_LEFT_SHOULDER) == 0) { oscFunc(&bundle, "l_shoulder", 3); } if (jointPos(aUsers[i], XN_SKEL_LEFT_ELBOW) == 0) { oscFunc(&bundle, "l_elbow", 4); } if (jointPos(aUsers[i], XN_SKEL_LEFT_WRIST) == 0) { oscFunc(&bundle, "l_wrist", 5); } if (jointPos(aUsers[i], XN_SKEL_LEFT_HAND) == 0) { oscFunc(&bundle, "l_hand", 6); } if (jointPos(aUsers[i], XN_SKEL_LEFT_FINGERTIP) == 0) { oscFunc(&bundle, "l_fingertip", 7); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_COLLAR) == 0) { oscFunc(&bundle, "r_collar", 8); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_SHOULDER) == 0) { oscFunc(&bundle, "r_shoulder", 9); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_ELBOW) == 0) { oscFunc(&bundle, "r_elbow", 10); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_WRIST) == 0) { oscFunc(&bundle, "r_wrist", 11); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_HAND) == 0) { oscFunc(&bundle, "r_hand", 12); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_FINGERTIP) == 0) { oscFunc(&bundle, "r_fingertip", 13); } if (jointPos(aUsers[i], XN_SKEL_TORSO) == 0) { oscFunc(&bundle, "torso", 14); } if (jointPos(aUsers[i], XN_SKEL_WAIST) == 0) { oscFunc(&bundle, "waist", 15); } if (jointPos(aUsers[i], XN_SKEL_LEFT_HIP) == 0) { oscFunc(&bundle, "l_hip", 16); } if (jointPos(aUsers[i], XN_SKEL_LEFT_KNEE) == 0) { oscFunc(&bundle, "l_knee", 17); } if (jointPos(aUsers[i], XN_SKEL_LEFT_ANKLE) == 0) { oscFunc(&bundle, "l_ankle", 18); } if (jointPos(aUsers[i], XN_SKEL_LEFT_FOOT) == 0) { oscFunc(&bundle, "l_foot", 19); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_HIP) == 0) { oscFunc(&bundle, "r_hip", 20); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_KNEE) == 0) { oscFunc(&bundle, "r_knee", 21); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_ANKLE) == 0) { oscFunc(&bundle, "r_ankle", 22); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_FOOT) == 0) { oscFunc(&bundle, "r_foot", 23); } if (lo_send_bundle(addr, bundle) != 0) { printf("error: unable to send bundle\n"); lo_bundle_pp(bundle); } lo_bundle_free_messages(bundle); } else { //Send user's center of mass sendUserPosMsg(aUsers[i]); } } }
void sendOSC() { if (handMode) { sendHandOSC(); return; } XnUserID aUsers[15]; XnUInt16 nUsers = 15; userGenerator.GetUsers(aUsers, nUsers); for (int i = 0; i < nUsers; ++i) { if (userGenerator.GetSkeletonCap().IsTracking(aUsers[i])) { osc::OutboundPacketStream p(osc_buffer, OUTPUT_BUFFER_SIZE); p << osc::BeginBundleImmediate; if (jointPos(aUsers[i], XN_SKEL_HEAD) == 0) { oscFunc(&p, "head"); } if (jointPos(aUsers[i], XN_SKEL_NECK) == 0) { oscFunc(&p, "neck"); } if (jointPos(aUsers[i], XN_SKEL_LEFT_COLLAR) == 0) { oscFunc(&p, "l_collar"); } if (jointPos(aUsers[i], XN_SKEL_LEFT_SHOULDER) == 0) { oscFunc(&p, "l_shoulder"); } if (jointPos(aUsers[i], XN_SKEL_LEFT_ELBOW) == 0) { oscFunc(&p, "l_elbow"); } if (jointPos(aUsers[i], XN_SKEL_LEFT_WRIST) == 0) { oscFunc(&p, "l_wrist"); } if (jointPos(aUsers[i], XN_SKEL_LEFT_HAND) == 0) { oscFunc(&p, "l_hand"); } if (jointPos(aUsers[i], XN_SKEL_LEFT_FINGERTIP) == 0) { oscFunc(&p, "l_fingertip"); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_COLLAR) == 0) { oscFunc(&p, "r_collar"); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_SHOULDER) == 0) { oscFunc(&p, "r_shoulder"); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_ELBOW) == 0) { oscFunc(&p, "r_elbow"); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_WRIST) == 0) { oscFunc(&p, "r_wrist"); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_HAND) == 0) { oscFunc(&p, "r_hand"); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_FINGERTIP) == 0) { oscFunc(&p, "r_fingertip"); } if (jointPos(aUsers[i], XN_SKEL_TORSO) == 0) { oscFunc(&p, "torso"); } if (jointPos(aUsers[i], XN_SKEL_WAIST) == 0) { oscFunc(&p, "waist"); } if (jointPos(aUsers[i], XN_SKEL_LEFT_HIP) == 0) { oscFunc(&p, "l_hip"); } if (jointPos(aUsers[i], XN_SKEL_LEFT_KNEE) == 0) { oscFunc(&p, "l_knee"); } if (jointPos(aUsers[i], XN_SKEL_LEFT_ANKLE) == 0) { oscFunc(&p, "l_ankle"); } if (jointPos(aUsers[i], XN_SKEL_LEFT_FOOT) == 0) { oscFunc(&p, "l_foot"); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_HIP) == 0) { oscFunc(&p, "r_hip"); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_KNEE) == 0) { oscFunc(&p, "r_knee"); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_ANKLE) == 0) { oscFunc(&p, "r_ankle"); } if (jointPos(aUsers[i], XN_SKEL_RIGHT_FOOT) == 0) { oscFunc(&p, "r_foot"); } p << osc::EndBundle; transmitSocket->Send(p.Data(), p.Size()); } else { //Send user's center of mass sendUserPosMsg(aUsers[i]); } } }