private void OnSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { using (var frame = e.OpenSkeletonFrame()) { if (frame.SkeletonArrayLength == 0) { return; } var skeletons = new Skeleton[frame.SkeletonArrayLength]; frame.CopySkeletonDataTo(skeletons); if (skeletons.All(s => s.TrackingState == SkeletonTrackingState.NotTracked)) { return; } var skeleton = FindSkeleton(skeletons); var scaled = ScaleSkeleton(skeleton); OnSkeletonFrameRead(skeleton.TrackingId, scaled, frame.Timestamp); } }
void KinectRuntimeSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { if (replay != null && !replay.IsFinished) { return; } if (fpsEnd == 1) { using (SkeletonFrame frame = e.OpenSkeletonFrame()) { if (frame == null) { return; } fpsEnd = SelectFPS(); Skeleton[] skeletons = new Skeleton[frame.SkeletonArrayLength]; frame.GetSkeletons(ref skeletons); if (skeletons.Length != 0) { foreach (Skeleton skel in skeletons) { if (skel.TrackingState == SkeletonTrackingState.Tracked) { if (BVHFile != null) { if (BVHFile.IsRecording == true && BVHFile.IsInitializing == true) { BVHFile.Entry(skel); if (BVHFile.intializingCounter > initFrames) { BVHFile.StartWritingEntry(); } } if (BVHFile.IsRecording == true && BVHFile.IsInitializing == false) { BVHFile.Motion(skel); Controls.ConsoleControl.LogEntries.Add(new LogEntry(DateTime.Now, "Recording...")); } } } } } if (recorder != null && ((recorder.Options & KinectRecordOptions.Skeletons) != 0)) { recorder.Record(frame); } if (skeletons.All(s => s.TrackingState == SkeletonTrackingState.NotTracked)) { return; } ProcessFrame(frame); } } else { fpsEnd -= 1; } }