void DrawStatusLabel(nite::UserTracker* pUserTracker, const nite::UserData& user) { int color = user.getId() % colorCount; glColor3f(1.0f - Colors[color][0], 1.0f - Colors[color][1], 1.0f - Colors[color][2]); float x,y; pUserTracker->convertJointCoordinatesToDepth(user.getCenterOfMass().x, user.getCenterOfMass().y, user.getCenterOfMass().z, &x, &y); x *= GL_WIN_SIZE_X/(float)g_nXRes; y *= GL_WIN_SIZE_Y/(float)g_nYRes; char *msg = g_userStatusLabels[user.getId()]; glRasterPos2i(x-((strlen(msg)/2)*8),y); glPrintString(GLUT_BITMAP_HELVETICA_18, msg); }
void updateUserState(const nite::UserData& user, unsigned long long ts) { if (user.isNew()) USER_MESSAGE("New") else if (user.isVisible() && !g_visibleUsers[user.getId()]) USER_MESSAGE("Visible") else if (!user.isVisible() && g_visibleUsers[user.getId()]) USER_MESSAGE("Out of Scene") else if (user.isLost()) USER_MESSAGE("Lost") g_visibleUsers[user.getId()] = user.isVisible(); if(g_skeletonStates[user.getId()] != user.getSkeleton().getState()) { switch(g_skeletonStates[user.getId()] = user.getSkeleton().getState()) { case nite::SKELETON_NONE: USER_MESSAGE("Stopped tracking.") break; case nite::SKELETON_CALIBRATING: USER_MESSAGE("Calibrating...") break; case nite::SKELETON_TRACKED: USER_MESSAGE("Tracking!") break; case nite::SKELETON_CALIBRATION_ERROR_NOT_IN_POSE: case nite::SKELETON_CALIBRATION_ERROR_HANDS: case nite::SKELETON_CALIBRATION_ERROR_LEGS: case nite::SKELETON_CALIBRATION_ERROR_HEAD: case nite::SKELETON_CALIBRATION_ERROR_TORSO: USER_MESSAGE("Calibration Failed... :-|") break; } } }
void User::updateUserData(const nite::UserData& data) { userdata = data; for (int i = 0; i < NITE_JOINT_COUNT; i++) { const nite::SkeletonJoint &o = data.getSkeleton().getJoint((nite::JointType)i); joints[i].updateJointData(o); } stringstream ss; ss << "[" << data.getId() << "]" << endl; ss << (data.isVisible() ? "Visible" : "Out of Scene") << endl;; switch (data.getSkeleton().getState()) { case nite::SKELETON_NONE: ss << "Stopped tracking."; break; case nite::SKELETON_CALIBRATING: ss << "Calibrating..."; break; case nite::SKELETON_TRACKED: ss << "Tracking!"; break; case nite::SKELETON_CALIBRATION_ERROR_NOT_IN_POSE: case nite::SKELETON_CALIBRATION_ERROR_HANDS: case nite::SKELETON_CALIBRATION_ERROR_LEGS: case nite::SKELETON_CALIBRATION_ERROR_HEAD: case nite::SKELETON_CALIBRATION_ERROR_TORSO: ss << "Calibration Failed... :-|"; break; } status_string = ss.str(); const nite::Point3f& pos = userdata.getCenterOfMass(); center_of_mass.set(pos.x, pos.y, -pos.z); Joint &torso = joints[nite::JOINT_TORSO]; activity += (torso.getPosition().distance(center_of_bone) - activity) * 0.1; center_of_bone = torso.getPosition(); }
void updateUserState(const nite::UserData& user, uint64_t ts) { if (user.isNew()) { USER_MESSAGE("New"); } else if (user.isVisible() && !g_visibleUsers[user.getId()]) printf("[%08" PRIu64 "] User #%d:\tVisible\n", ts, user.getId()); else if (!user.isVisible() && g_visibleUsers[user.getId()]) printf("[%08" PRIu64 "] User #%d:\tOut of Scene\n", ts, user.getId()); else if (user.isLost()) { USER_MESSAGE("Lost"); } g_visibleUsers[user.getId()] = user.isVisible(); if(g_skeletonStates[user.getId()] != user.getSkeleton().getState()) { switch(g_skeletonStates[user.getId()] = user.getSkeleton().getState()) { case nite::SKELETON_NONE: USER_MESSAGE("Stopped tracking.") break; case nite::SKELETON_CALIBRATING: USER_MESSAGE("Calibrating...") break; case nite::SKELETON_TRACKED: USER_MESSAGE("Tracking!") break; case nite::SKELETON_CALIBRATION_ERROR_NOT_IN_POSE: case nite::SKELETON_CALIBRATION_ERROR_HANDS: case nite::SKELETON_CALIBRATION_ERROR_LEGS: case nite::SKELETON_CALIBRATION_ERROR_HEAD: case nite::SKELETON_CALIBRATION_ERROR_TORSO: USER_MESSAGE("Calibration Failed... :-|") break; } } }
void DrawSkeleton(nite::UserTracker* pUserTracker, const nite::UserData& userData) { DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_HEAD), userData.getSkeleton().getJoint(nite::JOINT_NECK), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_SHOULDER), userData.getSkeleton().getJoint(nite::JOINT_LEFT_ELBOW), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_ELBOW), userData.getSkeleton().getJoint(nite::JOINT_LEFT_HAND), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_RIGHT_SHOULDER), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_ELBOW), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_RIGHT_ELBOW), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_HAND), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_SHOULDER), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_SHOULDER), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_SHOULDER), userData.getSkeleton().getJoint(nite::JOINT_TORSO), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_RIGHT_SHOULDER), userData.getSkeleton().getJoint(nite::JOINT_TORSO), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_TORSO), userData.getSkeleton().getJoint(nite::JOINT_LEFT_HIP), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_TORSO), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_HIP), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_HIP), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_HIP), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_HIP), userData.getSkeleton().getJoint(nite::JOINT_LEFT_KNEE), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_KNEE), userData.getSkeleton().getJoint(nite::JOINT_LEFT_FOOT), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_RIGHT_HIP), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_KNEE), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_RIGHT_KNEE), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_FOOT), userData.getId() % colorCount); //sprintf_s(g_generalMessage, "test"); }
void DrawSkeleton(nite::UserTracker* pUserTracker, const nite::UserData& userData) { DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_HEAD), userData.getSkeleton().getJoint(nite::JOINT_NECK), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_SHOULDER), userData.getSkeleton().getJoint(nite::JOINT_LEFT_ELBOW), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_ELBOW), userData.getSkeleton().getJoint(nite::JOINT_LEFT_HAND), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_RIGHT_SHOULDER), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_ELBOW), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_RIGHT_ELBOW), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_HAND), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_SHOULDER), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_SHOULDER), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_SHOULDER), userData.getSkeleton().getJoint(nite::JOINT_TORSO), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_RIGHT_SHOULDER), userData.getSkeleton().getJoint(nite::JOINT_TORSO), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_TORSO), userData.getSkeleton().getJoint(nite::JOINT_LEFT_HIP), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_TORSO), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_HIP), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_HIP), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_HIP), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_HIP), userData.getSkeleton().getJoint(nite::JOINT_LEFT_KNEE), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_LEFT_KNEE), userData.getSkeleton().getJoint(nite::JOINT_LEFT_FOOT), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_RIGHT_HIP), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_KNEE), userData.getId() % colorCount); DrawLimb(pUserTracker, userData.getSkeleton().getJoint(nite::JOINT_RIGHT_KNEE), userData.getSkeleton().getJoint(nite::JOINT_RIGHT_FOOT), userData.getId() % colorCount); SaveJoint(pUserTracker, userData, nite::JOINT_HEAD); SaveJoint(pUserTracker, userData, nite::JOINT_NECK); SaveJoint(pUserTracker, userData, nite::JOINT_LEFT_SHOULDER); SaveJoint(pUserTracker, userData, nite::JOINT_RIGHT_SHOULDER); SaveJoint(pUserTracker, userData, nite::JOINT_LEFT_ELBOW); SaveJoint(pUserTracker, userData, nite::JOINT_RIGHT_ELBOW); SaveJoint(pUserTracker, userData, nite::JOINT_LEFT_HAND); SaveJoint(pUserTracker, userData, nite::JOINT_RIGHT_HAND); SaveJoint(pUserTracker, userData, nite::JOINT_TORSO); SaveJoint(pUserTracker, userData, nite::JOINT_LEFT_HIP); SaveJoint(pUserTracker, userData, nite::JOINT_RIGHT_HIP); SaveJoint(pUserTracker, userData, nite::JOINT_LEFT_KNEE); SaveJoint(pUserTracker, userData, nite::JOINT_RIGHT_KNEE); SaveJoint(pUserTracker, userData, nite::JOINT_LEFT_FOOT); SaveJoint(pUserTracker, userData, nite::JOINT_RIGHT_FOOT); }
/** * update and event out on state of user and skeleton tracking */ void updateUserState(const nite::UserData& user) { if (user.isNew()) { eventIDToSend = NEW_USER; async.data = (void*) &eventIDToSend; uv_async_send(&async); } else if (!isUserVisible && user.isVisible() && user.getId() == 1) { isUserVisible = 1; eventIDToSend = USER_IS_VISIBLE; async.data = (void*) &eventIDToSend; uv_async_send(&async); } else if (isUserVisible && !user.isVisible() && user.getId() == 1) { isUserVisible = 0; eventIDToSend = USER_IS_OUT_OF_SCENE; async.data = (void*) &eventIDToSend; uv_async_send(&async); } g_visibleUsers[user.getId()] = user.isVisible(); if(g_skeletonStates[user.getId()] != user.getSkeleton().getState()) { switch(g_skeletonStates[user.getId()] = user.getSkeleton().getState()) { case nite::SKELETON_NONE: if (isSkeletonTracking) { isSkeletonTracking = false; isSkeletonCalibrating = false; eventIDToSend = SKELETON_STOPPED_TRACKING; async.data = (void*) &eventIDToSend; uv_async_send(&async); } break; case nite::SKELETON_CALIBRATING: if (!isSkeletonCalibrating) { isSkeletonCalibrating = true; eventIDToSend = SKELETON_CALIBRATING; async.data = (void*) &eventIDToSend; uv_async_send(&async); } break; case nite::SKELETON_TRACKED: if (!isSkeletonTracking) { isSkeletonTracking = true; isSkeletonCalibrating = false; eventIDToSend = SKELETON_TRACKING; async.data = (void*) &eventIDToSend; uv_async_send(&async); } break; case nite::SKELETON_CALIBRATION_ERROR_NOT_IN_POSE: case nite::SKELETON_CALIBRATION_ERROR_HANDS: case nite::SKELETON_CALIBRATION_ERROR_LEGS: case nite::SKELETON_CALIBRATION_ERROR_HEAD: case nite::SKELETON_CALIBRATION_ERROR_TORSO: eventIDToSend = SKELETON_CALIBRATION_FAILED; async.data = (void*) &eventIDToSend; uv_async_send(&async); isSkeletonTracking = false; isSkeletonCalibrating = false; break; } } }