void HandleSkeletonDataReceived (object sender, SkeletonEventArgs e) { try { joints = e.Skeleton.UserObject.CurrentUser.SketelonJoints; for (int i = 0; i < 15; i++) { switch (i) { case 0:rotations[i] = new Quaternion((float)joints.Head.OrientX,(float)joints.Head.OrientY,(float)joints.Head.OrientZ,(float)joints.Head.OrientW); break; case 1:rotations[i] = new Quaternion((float)joints.Neck.OrientX,(float)joints.Neck.OrientY,(float)joints.Neck.OrientZ,(float)joints.Neck.OrientW); break; case 2:rotations[i] = new Quaternion((float)joints.LeftShoulder.OrientX,(float)joints.LeftShoulder.OrientY,(float)joints.LeftShoulder.OrientZ,(float)joints.LeftShoulder.OrientW); break; case 3:rotations[i] = new Quaternion((float)joints.RightShoulder.OrientX,(float)joints.RightShoulder.OrientY,(float)joints.RightShoulder.OrientZ,(float)joints.RightShoulder.OrientW); break; case 4:rotations[i] = new Quaternion((float)joints.LeftElbow.OrientX,(float)joints.LeftElbow.OrientY,(float)joints.LeftElbow.OrientZ,(float)joints.LeftElbow.OrientW); break; case 5:rotations[i] = new Quaternion((float)joints.RightElbow.OrientX,(float)joints.RightElbow.OrientY,(float)joints.RightElbow.OrientZ,(float)joints.RightElbow.OrientW); break; case 6:rotations[i] = new Quaternion((float)joints.LeftHand.OrientX,(float)joints.LeftHand.OrientY,(float)joints.LeftHand.OrientZ,(float)joints.LeftHand.OrientW); break; case 7:rotations[i] = new Quaternion((float)joints.RightHand.OrientX,(float)joints.RightHand.OrientY,(float)joints.RightHand.OrientZ,(float)joints.RightHand.OrientW); break; case 8:rotations[i] = new Quaternion((float)joints.Torso.OrientX,(float)joints.Torso.OrientY,(float)joints.Torso.OrientZ,(float)joints.Torso.OrientW); break; case 9:rotations[i] = new Quaternion((float)joints.LeftHip.OrientX,(float)joints.LeftHip.OrientY,(float)joints.LeftHip.OrientZ,(float)joints.LeftHip.OrientW); break; case 10:rotations[i] = new Quaternion((float)joints.RightHip.OrientX,(float)joints.RightHip.OrientY,(float)joints.RightHip.OrientZ,(float)joints.RightHip.OrientW); break; case 11:rotations[i] = new Quaternion((float)joints.LeftKnee.OrientX,(float)joints.LeftKnee.OrientY,(float)joints.LeftKnee.OrientZ,(float)joints.LeftKnee.OrientW); break; case 12:rotations[i] = new Quaternion((float)joints.RightKnee.OrientX,(float)joints.RightKnee.OrientY,(float)joints.RightKnee.OrientZ,(float)joints.RightKnee.OrientW); break; case 13:rotations[i] = new Quaternion((float)joints.LeftFoot.OrientX,(float)joints.LeftFoot.OrientY,(float)joints.LeftFoot.OrientZ,(float)joints.LeftFoot.OrientW); break; case 14:rotations[i] = new Quaternion((float)joints.RightFoot.OrientX,(float)joints.RightFoot.OrientY,(float)joints.RightFoot.OrientZ,(float)joints.RightFoot.OrientW); break; default: break; } } } catch(Exception ex) { Debug.Log(ex.Message); } }
private void updateTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { SkeletonEventArgs args = new SkeletonEventArgs(); args.skeletons = new KinectSkeleton[1]; args.skeletons[0] = new KinectSkeleton(); args.kinectID = kinectID; bool hasData = false; DateTime currentTime = DateTime.UtcNow; TimeSpan oneSecond = new TimeSpan(0, 0, 1); //Copy the data from the last skeleton for (int i = 0; i < lastSkeleton.skeleton.Count; i++) { if (lastSkeleton.skeleton[i].TrackingState == TrackingState.Tracked) { if (currentTime - lastSkeleton.skeleton[i].utcTime < oneSecond) { hasData = true; args.skeletons[0].skeleton[i] = lastSkeleton.skeleton[i]; //Joint is a struct, which is a value type, so we don't need a copy here if (lastSkeleton.skeleton[i].JointType == JointType.HandLeft) { args.skeletons[0].rightHandClosed = lastSkeleton.rightHandClosed; } if (lastSkeleton.skeleton[i].JointType == JointType.HandLeft) { args.skeletons[0].leftHandClosed = lastSkeleton.leftHandClosed; } } } } if (hasData) { args.skeletons[0].sourceKinectID = kinectID; args.skeletons[0].TrackingId = 0; args.skeletons[0].SkeletonTrackingState = TrackingState.Tracked; args.skeletons[0].Position = args.skeletons[0].skeleton[JointType.SpineBase].Position; } if (SkeletonChanged != null && hasData) { SkeletonChanged(this, args); } }
private void updateTime_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { SkeletonEventArgs args = new SkeletonEventArgs(); args.skeletons = new KinectSkeleton[1]; args.skeletons[0] = new KinectSkeleton(); args.kinectID = kinectID; bool hasData = false; DateTime currentTime = DateTime.UtcNow; TimeSpan oneSecond = new TimeSpan(0, 0, 1); //Copy the data from the last skeleton for (int i = 0; i < lastSkeleton.skeleton.Count; i++) { if (lastSkeleton.skeleton[i].TrackingState == TrackingState.Tracked) { if (currentTime - lastSkeleton.skeleton[i].utcTime < oneSecond) { hasData = true; args.skeletons[0].skeleton[i] = lastSkeleton.skeleton[i]; //Joint is a struct, which is a value type, so we don't need a copy here if (lastSkeleton.skeleton[i].JointType == JointType.HandLeft) { args.skeletons[0].rightHandClosed = lastSkeleton.rightHandClosed; } if (lastSkeleton.skeleton[i].JointType == JointType.HandLeft) { args.skeletons[0].leftHandClosed = lastSkeleton.leftHandClosed; } } } } if (hasData) { args.skeletons[0].sourceKinectID = kinectID; args.skeletons[0].TrackingId = 0; args.skeletons[0].SkeletonTrackingState = TrackingState.Tracked; args.skeletons[0].Position = args.skeletons[0].skeleton[JointType.SpineBase].Position; } if (SkeletonChanged != null && hasData) { SkeletonChanged(this, args); } }
//Forward all the events private void realCore_SkeletonChanged(object sender, SkeletonEventArgs e) { if (SkeletonChanged != null) { SkeletonChanged(this, e); } }
private void _kinectService_SkeletonUpdated(object sender, SkeletonEventArgs e) { SkeletonSource = _skeletonDrawer.DrawSkeleton(e); }
void MainWindow_SkeletonChangedDepth(object sender, SkeletonEventArgs e) { if (!drawingDepthSkeleton) { drawingDepthSkeleton = true; DepthImageCanvas.Children.Clear(); for (int i = 0; i < e.skeletons.Length; i++) { RenderSkeletonOnDepth(e.skeletons[i], AutoPickSkeletonRenderColor(i), e.kinectID); } } }