/// <summary> /// handle the replay skeleton frame /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void replay_SkeletonFrameReady(object sender, ReplaySkeletonFrameReadyEventArgs e) { Skeleton[] skeletons; var frame = e.SkeletonFrame; if (_finalframeno <= frame.FrameNumber) { if (_learning) { this.tcStopLearningClick(null, null); } else if (_playingback) { this.tcStopPlayBackClick(null, null); } else if (_playingbackmaster) { this.tcStopPlaybackMasterClick(null, null); } else { this.tcStopReplayClick(null, null); } } if (frame == null) return; skeletons = new Skeleton[frame.ArrayLength]; skeletons = frame.Skeletons; Point[] temppt = new Point[dimension]; double[] templength = new double[dimension]; //DrawSkeleton(skeletons, MasterSkeletonCanvas); /// get the joint angle data of master /// then make comparison if (_learning) { foreach (var data in skeletons) { if (SkeletonTrackingState.Tracked == data.TrackingState) { temppt = Skeleton3DDataExtract.ProcessData(data); //if (temppt[4].X >= 0) _MasterAngle = temppt; //Console.WriteLine(_MasterAngle[4].X); if (_LearnerAngle != null && _MasterAngle != null) { _masterskeleton = data; _anglesdiff = MotionDetection.Detect(_LearnerAngle, _MasterAngle, dimension, threshold, detection); _master_length = Skeleton3DDataExtract.LengthGeneration(data); _masterseq.Add(temppt); } } } //_masterseqNum.Add(frame); } else if(_replaying || _playingback || _learning || _playingbackmaster) { ReplaySkeleton.DrawSkeleton(skeletons); } }
/// <summary> /// handle the replay skeleton frame /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void playback_SkeletonFrameReady(object sender, ReplaySkeletonFrameReadyEventArgs e) { Skeleton[] skeletons; var frame = e.SkeletonFrame; if (frame == null ) return; // make sure it is replaying the dtw selected path skeletons = new Skeleton[frame.ArrayLength]; skeletons = frame.Skeletons; Point[] temppt = new Point[dimension]; //DrawSkeleton(skeletons, MasterSkeletonCanvas); RealTimeSkeleton.DrawSkeleton(skeletons); }