public static void assign_joint_value(HumanSenser.SkeletonJointTransformation src, int joint, int index) { switch (joint) { case 0: copy_joint_info(src, ref rec_head[index]); break; case 1: copy_joint_info(src, ref rec_chest[index]); break; case 2: copy_joint_info(src, ref rec_lshoulder[index]); break; case 3: copy_joint_info(src, ref rec_lelbow[index]); break; case 4: copy_joint_info(src, ref rec_lhand[index]); break; case 5: copy_joint_info(src, ref rec_rshoulder[index]); break; case 6: copy_joint_info(src, ref rec_relbow[index]); break; case 7: copy_joint_info(src, ref rec_rhand[index]); break; } }
public static void create_joint_array(HumanSenser.SkeletonJoint joint, int size) { switch (joint) { case HumanSenser.SkeletonJoint.HEAD: rec_head = new HumanSenser.SkeletonJointTransformation[size]; break; case HumanSenser.SkeletonJoint.TORSO_CENTER: rec_chest = new HumanSenser.SkeletonJointTransformation[size]; break; case HumanSenser.SkeletonJoint.LEFT_SHOULDER: rec_lshoulder = new HumanSenser.SkeletonJointTransformation[size]; break; case HumanSenser.SkeletonJoint.LEFT_ELBOW: rec_lelbow = new HumanSenser.SkeletonJointTransformation[size]; break; case HumanSenser.SkeletonJoint.LEFT_HAND: rec_lhand = new HumanSenser.SkeletonJointTransformation[size]; break; case HumanSenser.SkeletonJoint.RIGHT_SHOULDER: rec_rshoulder = new HumanSenser.SkeletonJointTransformation[size]; break; case HumanSenser.SkeletonJoint.RIGHT_ELBOW: rec_relbow = new HumanSenser.SkeletonJointTransformation[size]; break; case HumanSenser.SkeletonJoint.RIGHT_HAND: rec_rhand = new HumanSenser.SkeletonJointTransformation[size]; break; } }
public static void copy_joint_info(HumanSenser.SkeletonJointTransformation src, ref HumanSenser.SkeletonJointTransformation dest) { dest.ori.confidence = src.ori.confidence; dest.ori.m00 = src.ori.m00; dest.ori.m01 = src.ori.m01; dest.ori.m02 = src.ori.m02; dest.ori.m10 = src.ori.m10; dest.ori.m11 = src.ori.m11; dest.ori.m12 = src.ori.m12; dest.ori.m20 = src.ori.m20; dest.ori.m21 = src.ori.m21; dest.ori.m22 = src.ori.m22; dest.pos.confidence = src.pos.confidence; dest.pos.x = src.pos.x; dest.pos.y = src.pos.y; dest.pos.z = src.pos.z; }
public static extern bool GetUserCenterOfMass(uint userID, ref HumanSenser.XnVector3D pCenterOfMass);
public static extern bool GetTransferredJointTransformation(uint userID, HumanSenser.SkeletonJoint joint, ref HumanSenser.SkeletonJointTransformation pTransformation);
public static void reload_joint_info(HumanSenser.SkeletonJoint joint, ref HumanSenser.SkeletonJointTransformation dest, int index) { switch (joint) { case HumanSenser.SkeletonJoint.HEAD: dest = rec_head[index]; break; case HumanSenser.SkeletonJoint.TORSO_CENTER: dest = rec_chest[index]; break; case HumanSenser.SkeletonJoint.LEFT_SHOULDER: dest = rec_lshoulder[index]; break; case HumanSenser.SkeletonJoint.LEFT_ELBOW: dest = rec_lelbow[index]; break; case HumanSenser.SkeletonJoint.LEFT_HAND: dest = rec_lhand[index]; break; case HumanSenser.SkeletonJoint.RIGHT_SHOULDER: dest = rec_rshoulder[index]; break; case HumanSenser.SkeletonJoint.RIGHT_ELBOW: dest = rec_relbow[index]; break; case HumanSenser.SkeletonJoint.RIGHT_HAND: dest = rec_rhand[index]; break; } }
bool TransformBone(uint userId, HumanSenser.SkeletonJoint joint, Transform dest) { HumanSenser.SkeletonJointTransformation trans = new HumanSenser.SkeletonJointTransformation(); if (DetectBone(userId, joint, ref trans) == true) { Vector3 newPos = new Vector3(trans.pos.x, trans.pos.y, (trans.pos.z -= distanceToCamera)); if (relativeTo != null) { dest.localPosition = (newPos *= m_jointPositionScale); } else { dest.position = (newPos *= m_jointPositionScale); } return true; } return false; }
bool GetSubjectTransformation(uint userID, HumanSenser.SkeletonJoint joint, ref HumanSenser.SkeletonJointTransformation pTransformation) { if (!Replay) { if (HumanSenser.GetTransferredJointTransformation(userID, joint, ref pTransformation)) { } else { return false; } } return true; }
bool DetectBone(uint userId, HumanSenser.SkeletonJoint joint, ref HumanSenser.SkeletonJointTransformation trans) { if (GetSubjectTransformation(userId, joint, ref trans)) { if (trans.pos.confidence > 0.5f) { return true; } } return false; }