void DrawLimb(nite::UserTracker* pUserTracker, const nite::SkeletonJoint& joint1, const nite::SkeletonJoint& joint2, int color) { float coordinates[6] = {0}; pUserTracker->convertJointCoordinatesToDepth(joint1.getPosition().x, joint1.getPosition().y, joint1.getPosition().z, &coordinates[0], &coordinates[1]); pUserTracker->convertJointCoordinatesToDepth(joint2.getPosition().x, joint2.getPosition().y, joint2.getPosition().z, &coordinates[3], &coordinates[4]); coordinates[0] *= GL_WIN_SIZE_X/(float)g_nXRes; coordinates[1] *= GL_WIN_SIZE_Y/(float)g_nYRes; coordinates[3] *= GL_WIN_SIZE_X/(float)g_nXRes; coordinates[4] *= GL_WIN_SIZE_Y/(float)g_nYRes; if (joint1.getPositionConfidence() == 1 && joint2.getPositionConfidence() == 1) { glColor3f(1.0f - Colors[color][0], 1.0f - Colors[color][1], 1.0f - Colors[color][2]); } else if (joint1.getPositionConfidence() < 0.5f || joint2.getPositionConfidence() < 0.5f) { return; } else { glColor3f(.5, .5, .5); } glPointSize(2); glVertexPointer(3, GL_FLOAT, 0, coordinates); glDrawArrays(GL_LINES, 0, 2); glPointSize(10); if (joint1.getPositionConfidence() == 1) { glColor3f(1.0f - Colors[color][0], 1.0f - Colors[color][1], 1.0f - Colors[color][2]); } else { glColor3f(.5, .5, .5); } glVertexPointer(3, GL_FLOAT, 0, coordinates); glDrawArrays(GL_POINTS, 0, 1); if (joint2.getPositionConfidence() == 1) { glColor3f(1.0f - Colors[color][0], 1.0f - Colors[color][1], 1.0f - Colors[color][2]); } else { glColor3f(.5, .5, .5); } glVertexPointer(3, GL_FLOAT, 0, coordinates+3); glDrawArrays(GL_POINTS, 0, 1); }
void Joint::updateJointData(const nite::SkeletonJoint& data) { joint = data; const nite::Point3f& pos = data.getPosition(); const nite::Quaternion& rot = data.getOrientation(); setGlobalOrientation(ofQuaternion(-rot.x, -rot.y, rot.z, rot.w)); setGlobalPosition(pos.x, pos.y, -pos.z); }