예제 #1
0
        void SetUpKinect()
        {
            this.context = new XnMOpenNIContext();
            this.context.Init();

            this.session = new XnMSessionManager(context, "Wave", "RaiseHand");
            this.session.SessionStarted += new EventHandler <PointEventArgs>(session_SessionStarted);
            this.session.SessionEnded   += new EventHandler(session_SessionEnded);
            bool steadyBeforeSwipe = true;


            var swipeDetector = new XnMSwipeDetector(steadyBeforeSwipe);

            swipeDetector.MotionSpeedThreshold = 0.5f;
            swipeDetector.MotionTime           = 300;
            swipeDetector.SteadyDuration       = 300;


            swipeDetector.GeneralSwipe += new EventHandler <SwipeDetectorGeneralEventArgs>(swipeDetector_GeneralSwipe);

            this.session.AddListener(swipeDetector);



            var start  = new ThreadStart(RunKinect);
            var thread = new Thread(start);

            thread.Start();
        }
예제 #2
0
        /// <summary>
        /// Registers gestures to be tracked by the Kinect
        /// </summary>
        static void RegisterGestures()
        {
            double hBound = 5;
            double vBound = 6;

            Double.TryParse(ConfigurationManager.AppSettings["horBound"], out hBound);
            Double.TryParse(ConfigurationManager.AppSettings["verBound"], out vBound);

            leftBoundary  = -(double)hBound * (300.00 / (double)7); // Left treshold needed for swipe
            rightBoundary = -leftBoundary;                          // Right treshold needed for swipe
            topBoundary   = (double)vBound * (200.00 / (double)7);  //Top treshold
            botBoundary   = -topBoundary;                           //Bottom treshold

            double actHeight = 0;

            Double.TryParse(ConfigurationManager.AppSettings["kinectHeight"], out actHeight);

            adjustedHeight = actHeight - baseKinectHeight;

            XnMPointDenoiser pointFilter  = new XnMPointDenoiser();
            XnMPointControl  pointControl = new XnMPointControl();

            pointControl.PointUpdate += new EventHandler <PointBasedEventArgs>(control_PointUpdate);
            pointFilter.PointCreate  += new EventHandler <PointBasedEventArgs>(control_PointCreate);

            XnMSwipeDetector swipeDetector = new XnMSwipeDetector(true);

            swipeDetector.MotionSpeedThreshold = 0.8f;
            swipeDetector.MotionTime           = 180; //350
            swipeDetector.SteadyDuration       = 150; //200

            swipeDetector.SwipeRight += new EventHandler <SwipeDetectorEventArgs>(swipeDetector_SwipeRight);
            swipeDetector.SwipeLeft  += new EventHandler <SwipeDetectorEventArgs>(swipeDetector_SwipeLeft);
            swipeDetector.SwipeDown  += new EventHandler <SwipeDetectorEventArgs>(swipeDetector_SwipeDown);
            swipeDetector.SwipeUp    += new EventHandler <SwipeDetectorEventArgs>(swipeDetector_SwipeUp);

            XnMSteadyDetector steadyDetector = new XnMSteadyDetector();

            steadyDetector.DetectionDuration = 800;
            steadyDetector.Steady           += new EventHandler <SteadyEventArgs>(steadyDetector_Steady);

            //XnMPushDetector pushDetector = new XnMPushDetector();
            //pushDetector.Push += new EventHandler<PushDetectorEventArgs>(pushDetector_Push);

            XnMBroadcaster broadcaster = new XnMBroadcaster();

            pointFilter.AddListener(pointControl);
            broadcaster.AddListener(pointFilter);
            broadcaster.AddListener(swipeDetector);
            broadcaster.AddListener(steadyDetector);
            //broadcaster.AddListener(steadyDetector);
            HorSwipeStarted = VertSwipeStarted = true;
            sessionManager.AddListener(broadcaster);
        }
예제 #3
0
        public static void Run()
        {
            Initializing = true;
            Trace.WriteLine("Initializing Kinect...");

            XnMOpenNIContext context = new XnMOpenNIContext();

            try
            {
                context.Init();
                KinectExists = true;
                Trace.WriteLine("Kinect exists");
            }
            catch (XnMException)
            {
                Initializing = false;
                Active       = false;
                KinectExists = false;
                return;
            }

            // Kinect session
            Trace.WriteLine("Creating session manager...");
            sessionManager = new XnMSessionManager(context, "Wave", "RaiseHand");
            sessionManager.SessionStarted += new EventHandler <PointEventArgs>(sessionManager_SessionStarted);
            sessionManager.SessionEnded   += new EventHandler(sessionManager_SessionEnded);

            // hand tracking filter
            Trace.WriteLine("Creating filters...");
            var pointManager = new KinectPointManager();

            sessionManager.AddListener(pointManager);

            var swipeDetector = new XnMSwipeDetector(true);

            swipeDetector.GeneralSwipe        += new EventHandler <SwipeDetectorGeneralEventArgs>(swipeDetector_GeneralSwipe);
            swipeDetector.MotionSpeedThreshold = .7f;
            swipeDetector.MotionTime           = 300;

            sessionManager.AddListener(swipeDetector);

            Initializing = false;
            Trace.WriteLine("Kinect initialized");

            // infinite loop until app shutdown
            while (!ShutDown)
            {
                context.Update();
                sessionManager.Update(context);
            }
        }
예제 #4
0
        /// <summary>
        /// Registers gestures to be tracked by the Kinect
        /// </summary>
        static void RegisterGestures()
        {
            double hBound = 5;
            double vBound = 6;

            Double.TryParse(ConfigurationManager.AppSettings["horBound"], out hBound);
            Double.TryParse(ConfigurationManager.AppSettings["verBound"], out vBound);

            leftBoundary = -(double)hBound * (300.00 / (double)7); // Left treshold needed for swipe
            rightBoundary = -leftBoundary; // Right treshold needed for swipe
            topBoundary = (double)vBound * (200.00 / (double)7); //Top treshold
            botBoundary = -topBoundary; //Bottom treshold

            double actHeight = 0;
            Double.TryParse(ConfigurationManager.AppSettings["kinectHeight"], out actHeight);

            adjustedHeight = actHeight - baseKinectHeight;

            XnMPointDenoiser pointFilter = new XnMPointDenoiser();
            XnMPointControl pointControl = new XnMPointControl();
            pointControl.PointUpdate += new EventHandler<PointBasedEventArgs>(control_PointUpdate);
            pointFilter.PointCreate += new EventHandler<PointBasedEventArgs>(control_PointCreate);

            XnMSwipeDetector swipeDetector = new XnMSwipeDetector(true);
            swipeDetector.MotionSpeedThreshold = 0.8f;
            swipeDetector.MotionTime = 180; //350
            swipeDetector.SteadyDuration = 150; //200

            swipeDetector.SwipeRight += new EventHandler<SwipeDetectorEventArgs>(swipeDetector_SwipeRight);
            swipeDetector.SwipeLeft += new EventHandler<SwipeDetectorEventArgs>(swipeDetector_SwipeLeft);
            swipeDetector.SwipeDown += new EventHandler<SwipeDetectorEventArgs>(swipeDetector_SwipeDown);
            swipeDetector.SwipeUp += new EventHandler<SwipeDetectorEventArgs>(swipeDetector_SwipeUp);

            XnMSteadyDetector steadyDetector = new XnMSteadyDetector();
            steadyDetector.DetectionDuration = 800;
            steadyDetector.Steady += new EventHandler<SteadyEventArgs>(steadyDetector_Steady);

            //XnMPushDetector pushDetector = new XnMPushDetector();
            //pushDetector.Push += new EventHandler<PushDetectorEventArgs>(pushDetector_Push);

            XnMBroadcaster broadcaster = new XnMBroadcaster();
            pointFilter.AddListener(pointControl);
            broadcaster.AddListener(pointFilter);
            broadcaster.AddListener(swipeDetector);
            broadcaster.AddListener(steadyDetector);
            //broadcaster.AddListener(steadyDetector);
            HorSwipeStarted = VertSwipeStarted = true;
            sessionManager.AddListener(broadcaster);
        }
        public void IniciarKinect()
        {
            Debug.WriteLine("Iniciando acceso a Kinect ...");

            //Instancia o contexto do Kinect para Iniciar Operação
            context = new XnMOpenNIContext();

            //Inicia Kinect
            context.Init();
            neverStarted = true;

            //SessionManager configurado para quando você sacudir a mão ele iniciar
            //Wave seria o movimento de tchau
            //E RaiseHand é só erguer a mão...
            //Os eventos serão disparador com o foco na mão, ou seja, se perder o foco vai ter que fazer o RaiseHand novamente
            sessionManager = new XnMSessionManager(context, "Wave", "RaiseHand");

            swipeDetector = new XnMSwipeDetector(true);
            swipeDetector.MotionTime = 600;
            swipeDetector.SteadyDuration = 10; //200   uint
            swipeDetector.SteadyMaxVelocity = 1f; //0.01    float
            swipeDetector.XAngleThreshold = 25.00f; //25.0      float
            swipeDetector.YAngleThreshold = 25.00f; //20.0      float
            swipeDetector.GeneralSwipe += OnGeneralSwipe;

            sessionManager.AddListener(swipeDetector);

            //O evento é disparado quando for feito o tchauzinho
            sessionManager.SessionStarted += SessionManagerSessionStarted;

            //Thread Necessária
            thread = new Thread(mainLoop);
            thread.Start();

            //Mensagem de Inicio
            Debug.WriteLine("Kinect configurado. Fazer saudação para iniciar Sessao");
            Debug.WriteLine("");
        }
예제 #6
0
        void SetUpKinect()
        {
            this.context = new XnMOpenNIContext();
            this.context.Init();

            this.session = new XnMSessionManager(context, "Wave", "RaiseHand");
            this.session.SessionStarted += new EventHandler<PointEventArgs>(session_SessionStarted);
            this.session.SessionEnded += new EventHandler(session_SessionEnded);
            bool steadyBeforeSwipe = true;

            var swipeDetector = new XnMSwipeDetector(steadyBeforeSwipe);

            swipeDetector.MotionSpeedThreshold = 0.5f;
            swipeDetector.MotionTime = 300;
            swipeDetector.SteadyDuration = 300;

            swipeDetector.GeneralSwipe += new EventHandler<SwipeDetectorGeneralEventArgs>(swipeDetector_GeneralSwipe);

            this.session.AddListener(swipeDetector);

            var start = new ThreadStart(RunKinect);
            var thread = new Thread(start);
            thread.Start();
        }
예제 #7
0
        public void Init()
        {
            context = new XnMOpenNIContext();
            context.Init();

            sessionManager = new XnMSessionManager(context, "Click,Wave", "RaiseHand");
            sessionManager.SessionStarted += new EventHandler<PointEventArgs>(sessionManager_SessionStarted);
            sessionManager.SessionEnded += new EventHandler(sessionManager_SessionEnded);

            //slider2D = new XnMSelectableSlider2D(xItems, yItems);

            //slider2D.Activate += new EventHandler(slider2D_Activate);
            //slider2D.Deactivate += new EventHandler(slider2D_Deactivate);

            //slider2D.ValueChanged += new EventHandler<SelectableSlider2DValueChangedEventArgs>(slider2D_ValueChanged);
            //slider2D.MessageUpdate += new EventHandler<OneMessageEventArgs>(slider2D_MessageUpdate);
            //slider2D.ItemHovered += new EventHandler<SelectableSlider2DHoverEventArgs>(slider2D_ItemHovered);
            //slider2D.ItemSelected += new EventHandler<SelectableSlider2DSelectEventArgs>(slider2D_ItemSelected);

            //pointDenoiser = new XnMPointDenoiser();
            //pointDenoiser.AddListener(slider2D);

            //flowRouter = new XnMFlowRouter();
            //flowRouter.SetActiveControl(pointDenoiser);

            circleDetector = new XnMCircleDetector();
            circleDetector.Circle += new EventHandler<CircleEventArgs>(circleDetector_Circle);

            pushDetector = new XnMPushDetector();
            pushDetector.Push += new EventHandler<PushDetectorEventArgs>(pushDetector_Push);

            swipeDetector = new XnMSwipeDetector(true);
            swipeDetector.GeneralSwipe += new EventHandler<SwipeDetectorGeneralEventArgs>(swipeDetector_GeneralSwipe);

            steadyDetector = new XnMSteadyDetector(5, 5000);
            steadyDetector.Activate += new EventHandler(steadyDetector_Activate);
            steadyDetector.Deactivate += new EventHandler(steadyDetector_Deactivate);
            steadyDetector.Steady += new EventHandler<SteadyEventArgs>(steadyDetector_Steady);

            //sessionManager.AddListener(flowRouter);
            sessionManager.AddListener(circleDetector);
            sessionManager.AddListener(pushDetector);
            sessionManager.AddListener(swipeDetector);
            sessionManager.AddListener(steadyDetector);

            Thread th = new Thread(new ThreadStart(SpinInfinite));
            th.Priority = ThreadPriority.Lowest;
            th.Start();
        }
예제 #8
0
        public static void Run()
        {
            Initializing = true;
            Trace.WriteLine("Initializing Kinect...");

            XnMOpenNIContext context = new XnMOpenNIContext();
            try
            {
                context.Init();
                KinectExists = true;
                Trace.WriteLine("Kinect exists");
            }
            catch (XnMException)
            {
                Initializing = false;
                Active = false;
                KinectExists = false;
                return;
            }

            // Kinect session
            Trace.WriteLine("Creating session manager...");
            sessionManager = new XnMSessionManager(context, "Wave", "RaiseHand");
            sessionManager.SessionStarted += new EventHandler<PointEventArgs>(sessionManager_SessionStarted);
            sessionManager.SessionEnded += new EventHandler(sessionManager_SessionEnded);

            // hand tracking filter
            Trace.WriteLine("Creating filters...");
            var pointManager = new KinectPointManager();
            sessionManager.AddListener(pointManager);

            var swipeDetector = new XnMSwipeDetector(true);
            swipeDetector.GeneralSwipe += new EventHandler<SwipeDetectorGeneralEventArgs>(swipeDetector_GeneralSwipe);
            swipeDetector.MotionSpeedThreshold = .7f;
            swipeDetector.MotionTime = 300;

            sessionManager.AddListener(swipeDetector);

            Initializing = false;
            Trace.WriteLine("Kinect initialized");

            // infinite loop until app shutdown
            while (!ShutDown)
            {
                context.Update();
                sessionManager.Update(context);
            }
        }