void InitializeGesture() { gestureFrameReaders = new VisualGestureBuilderFrameReader[BODY_COUNT]; for ( int count =0; count < BODY_COUNT; count++ ) { VisualGestureBuilderFrameSource gestureFrameSource; gestureFrameSource = new VisualGestureBuilderFrameSource( kinect, 0 ); gestureFrameReaders[count] = gestureFrameSource.OpenReader(); gestureFrameReaders[count].FrameArrived += gestureFrameReaders_FrameArrived; } VisualGestureBuilderDatabase gestureDatabase; gestureDatabase = new VisualGestureBuilderDatabase( "SampleDatabase.gbd" ); uint gestureCount; gestureCount = gestureDatabase.AvailableGesturesCount; gestures = gestureDatabase.AvailableGestures; for ( int count = 0; count<BODY_COUNT; count++ ) { VisualGestureBuilderFrameSource gestureFrameSource; gestureFrameSource = gestureFrameReaders[count].VisualGestureBuilderFrameSource; gestureFrameSource.AddGestures( gestures ); foreach ( var g in gestures ) { gestureFrameSource.SetIsEnabled( g, true ); } } }
//Constractor public GestureDetector(KinectSensor _sensor, GestureAnalysis _gestureAnalysis, Exercise _currentExercise) { if (_sensor == null) { throw new ArgumentNullException("kinectSensor"); } if (_gestureAnalysis == null) { throw new ArgumentNullException("gestureResultView"); } this._sensor = _sensor; this._gestureAnalysis = _gestureAnalysis; // create the vgb source. The associated body tracking ID will be set when a valid body frame arrives from the sensor. vgbFrameSource = new VisualGestureBuilderFrameSource(_sensor, 0); //vgbFrameSource.TrackingIdLost += Source_TrackingIdLost; // open the reader for the vgb frames vgbFrameReader = vgbFrameSource.OpenReader(); if (this.vgbFrameReader != null) { vgbFrameReader.IsPaused = true; vgbFrameReader.FrameArrived += VgbFrameReader_FrameArrived; } // load all gestures from the gesture database if (File.Exists(_currentExercise.DBPath)) { using (var database = new VisualGestureBuilderDatabase(_currentExercise.DBPath)) { vgbFrameSource.AddGestures(database.AvailableGestures); //setup the continuous gesture foreach (var gesture in database.AvailableGestures) { if (gesture.Name.Equals(_currentExercise.ContinuousGestureName)) { ContinuousGestureData = gesture; break; } } } //todo - implmnt gesture disable foreach (var gesutre in this.vgbFrameSource.Gestures) { foreach (var notTrackGesture in _currentExercise.VTGestureList) { if (gesutre.Name.Equals(notTrackGesture.GestureName) && !notTrackGesture.IsTrack) { vgbFrameSource.SetIsEnabled(gesutre, false); } } } } }