public void RefreshBodyObject(User user)//Kinect.Body body, GameObject bodyObject) { if (Application.isPlaying && showSkeletons) { KinectSkeleton skeleton = GetKinectSkeleton(user.skeletonID); if (skeleton != null && (skeleton.valid)) { for (int i = 0; i < skeleton.jointPositions3D.Length; i++) { KinectSkeleton.TrackingState state = skeleton.jointStates[i]; bool tracked = state != KinectSkeleton.TrackingState.NotTracked; //JointMaterial = joints[i].GetComponent<Renderer>().material; //JointMaterial.color = GetColorForState(state); if (tracked) { joints[i].localPosition = skeleton.jointPositions3D[i]; } } for (int k = 0; k < HumanTopology.BONE_CONNECTIONS.Length; k++) { BoneConnection bone = HumanTopology.BONE_CONNECTIONS[k]; JointType joint1 = bone.fromJoint; JointType joint2 = bone.toJoint; LineRenderer lr = joints[(int)joint2].GetComponent <LineRenderer>(); lr.SetPosition(0, joints[(int)joint1].position); lr.SetPosition(1, joints[(int)joint2].position); } /*for (int i = 0; i < HumanTopology.BONE_CONNECTIONS.Length; i++) * { * BoneConnection bone = HumanTopology.BONE_CONNECTIONS[i]; * JointType joint1 = bone.fromJoint; * JointType joint2 = bone.toJoint; * KinectSkeleton.TrackingState state1 = skeleton.jointStates[(int)joint1]; * KinectSkeleton.TrackingState state2 = skeleton.jointStates[(int)joint2]; * LineRenderer lr = joints[i].GetComponent<LineRenderer>(); * bool tracked = state1 != KinectSkeleton.TrackingState.NotTracked && state2 != KinectSkeleton.TrackingState.NotTracked; * if (tracked) * { * lr.SetPosition(0, skeleton.jointPositions3D[(int)joint1]); * lr.SetPosition(1, skeleton.jointPositions3D[(int)joint2]); * * lr.startColor = GetColorForState(state1); * lr.endColor = GetColorForState(state2); * } * * }*/ } } }
private static Color GetColorForState(KinectSkeleton.TrackingState state) { switch (state) { case KinectSkeleton.TrackingState.Tracked: return(Color.green); case KinectSkeleton.TrackingState.Inferred: return(Color.red); default: return(Color.black); } }