FindExistingNode() public method

public FindExistingNode ( NodeType type ) : ProductionNode
type NodeType
return ProductionNode
Ejemplo n.º 1
0
    void Start()
    {
        Debug.Log ("Start(): Initializing nodes.");

        this.context = new Context (SAMPLE_XML_FILE);
        this.depth = context.FindExistingNode (NodeType.Depth) as DepthGenerator;
        if (this.depth == null) {
            Debug.LogError ("Viewer must have a depth node!");
        }
        this.hands = context.FindExistingNode (NodeType.Hands) as HandsGenerator;
        if (this.hands == null) {
            Debug.LogError ("Viewer must have a hands node!");
        }
        this.gestures = context.FindExistingNode (NodeType.Gesture) as GestureGenerator;
        if (this.gestures == null) {
            Debug.LogError ("Viewer must have a gestures node!");
        }

        this.hands.HandCreate += new HandsGenerator.HandCreateHandler (hands_HandCreate);
        this.hands.HandUpdate += new HandsGenerator.HandUpdateHandler (hands_HandUpdate);
        this.hands.HandDestroy += new HandsGenerator.HandDestroyHandler (hands_HandDestroy);

        this.gestures.AddGesture ("Wave");
        this.gestures.AddGesture ("RaiseHand");
        this.gestures.GestureRecognized += new GestureGenerator.GestureRecognizedHandler (gestures_GestureRecognized);
        this.gestures.StartGenerating ();
    }
Ejemplo n.º 2
0
        void Initialize()
        {
            this.context = new Context("SamplesConfig.xml");
            this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
            if (this.depth == null)
            {
                throw new Exception("Viewer must have a depth node!");
            }

            this.userGenerator = new UserGenerator(this.context);
            this.skeletonCapbility = new SkeletonCapability(this.userGenerator);
            this.poseDetectionCapability = new PoseDetectionCapability(this.userGenerator);
            this.calibPose = this.skeletonCapbility.GetCalibrationPose();

            this.userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser);
            this.userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser);
            this.poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected);
            this.skeletonCapbility.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapbility_CalibrationEnd);

            this.skeletonCapbility.SetSkeletonProfile(SkeletonProfile.All);
            this.userGenerator.StartGenerating();

            App.ViewModel.Status = "Waiting to acquire user";

            this.ShouldRun = true;
            this.readerThread = new Thread(ReaderThread);
            this.readerThread.Start();
        }
Ejemplo n.º 3
0
        public static bool IsConnected()
        {
            bool isConnected = false;

            try
            {
                // string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
                var dir = GTPath.GetLocalApplicationDataPath();
                DirectoryInfo dirInfo = new DirectoryInfo(new Uri(dir).LocalPath);
                Context ctx = new Context(dirInfo.FullName + "\\" + configFile);
                ProductionNode irNode = ctx.FindExistingNode(NodeType.IR) as IRGenerator;

                if (irNode != null)
                    isConnected = true;

                irNode.Dispose();
                ctx.Dispose();
                
            }
            catch (Exception ex)
            { 
                isConnected = false;
            }

            return isConnected;
        }
Ejemplo n.º 4
0
        public StreamView()
        {
            InitializeComponent();

            pictureBoxOverlay.BackColor = Color.Transparent;

            try
            {
                this.context = new Context(@".\Data\openniconfig.xml");
                this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
                if (this.depth == null)
                {
                    throw new Exception(@"Error in Data\openniconfig.xml. No depth node found.");
                }

                this.histogram = new int[this.depth.GetDeviceMaxDepth()];

                MapOutputMode mapMode = this.depth.GetMapOutputMode();

                this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            }
            catch (Exception ex)
            {
                ///
                /// - todo: proper error logging here
                ///

                MessageBox.Show("Error initializing OpenNI.");
                MessageBox.Show(ex.Message);

                this.Close();
            }
        }
Ejemplo n.º 5
0
        public MainWindow()
        {
            InitializeComponent();

            this.context = new Context(SAMPLE_XML_FILE);
            this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
            if (this.depth == null)
            {
                throw new Exception("Viewer must have a depth node!");
            }

            this.userGenerator = new UserGenerator(this.context);
            this.skeletonCapbility = new SkeletonCapability(this.userGenerator);
            this.poseDetectionCapability = new PoseDetectionCapability(this.userGenerator);
            this.calibPose = this.skeletonCapbility.GetCalibrationPose();

            this.userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser);
            this.userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser);
            this.poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected);
            this.skeletonCapbility.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapbility_CalibrationEnd);

            this.skeletonCapbility.SetSkeletonProfile(SkeletonProfile.All);
            this.joints = new Dictionary<uint,Dictionary<SkeletonJoint,SkeletonJointPosition>>();
            this.userGenerator.StartGenerating();

            this.histogram = new int[this.depth.GetDeviceMaxDepth()];

            MapOutputMode mapMode = this.depth.GetMapOutputMode();

            this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes/*, System.Drawing.Imaging.PixelFormat.Format24bppRgb*/);
            this.shouldRun = true;
            this.readerThread = new Thread(ReaderThread);
            this.readerThread.Start();
        }
Ejemplo n.º 6
0
        static void Run()
        {
            string SAMPLE_XML_FILE = @"../../../../Data/SamplesConfig.xml";

            Context context = new Context(SAMPLE_XML_FILE);

            DepthGenerator depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
            if (depth == null)
            {
                Console.WriteLine("Sample must have a depth generator!");
                return;
            }

            MapOutputMode mapMode = depth.GetMapOutputMode();

            DepthMetaData depthMD = new DepthMetaData();

            Console.WriteLine("Press any key to stop...");

            while (!Console.KeyAvailable)
            {
                context.WaitOneUpdateAll(depth);

                depth.GetMetaData(depthMD);

                Console.WriteLine("Frame {0} Middle point is: {1}.", depthMD.FrameID, depthMD[(int)mapMode.nXRes/2, (int)mapMode.nYRes/2]);
            }
        }
Ejemplo n.º 7
0
        public void Start()
        {
            this.context = new Context (SAMPLE_XML_FILE);
            this.depth = context.FindExistingNode (NodeType.Depth) as DepthGenerator;
            if (this.depth == null) {
                throw new Exception ("Viewer must have a depth node!");
            }

            this.depthMD = new DepthMetaData ();
            this.histogram = new int[this.depth.GetDeviceMaxDepth ()];
        }
Ejemplo n.º 8
0
    void Start()
    {
        rgbTexture = new Texture2D (640, 480, TextureFormat.RGB24, false);
        rgbMaterial.mainTextureScale = new Vector2 (0.62f, 0.93f); // fixes weird scaling problem
        rgbMaterial.mainTexture = rgbTexture;

        context = new Context (XML_FILE);
        depth = context.FindExistingNode (NodeType.Depth) as DepthGenerator;
        if (depth == null) {
            Debug.LogError ("Viewer must have a depth node!");
            return;
        }

        imageGenerator = context.FindExistingNode (NodeType.Image) as ImageGenerator;
        if (imageGenerator == null) {
            Debug.LogError ("Viewer must have an image generator!");
            return;
        }
        depth.GetAlternativeViewPointCap ().SetViewPoint (imageGenerator);

        imageGenerator.StartGenerating ();
    }
Ejemplo n.º 9
0
        public Form1()
        {
            InitializeComponent();

            this.context = new Context(SAMPLE_XML_FILE);
            this.image = context.FindExistingNode(NodeType.Image) as ImageGenerator;

            if (this.image == null)
            {
                throw new Exception("Viewer must have an image node!");
            }

            var mapMode = this.image.GetMapOutputMode();

            this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            this.shouldRun = true;
            this.readerThread = new Thread(ReaderThread);
            this.readerThread.Start();
        }
Ejemplo n.º 10
0
        public MainWindow()
        {
            InitializeComponent();

            this.context = new Context(SAMPLE_XML_FILE);
            this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
            if (this.depth == null)
            {
                throw new Exception("Viewer must have a depth node!");
            }

            this.histogram = new int[this.depth.GetDeviceMaxDepth()];

            MapOutputMode mapMode = this.depth.GetMapOutputMode();

            this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            this.shouldRun = true;
            this.readerThread = new Thread(ReaderThread);
            this.readerThread.Start();
        }
Ejemplo n.º 11
0
        /// <summary>
        /// OpenNIスレッドの起動
        /// 
        /// </summary>
        private void StartOpenNI()
        {
            try
            {
                context = new Context(Application.StartupPath + Settings.OPENNI_CONFIG);
            } catch(GeneralException ge){
                Console.WriteLine(ge.Message);
                this.Close();
                return;
            }
            depthGenerator = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
            if (this.depthGenerator == null)
            {
                throw new Exception("Viewer must have a depth node!");
            }

            userGenerator = new UserGenerator(context);
            userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser);
            userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser);
            userGenerator.StartGenerating();

            imageGenerator = context.FindExistingNode(NodeType.Image) as ImageGenerator;
            imageGenerator.StartGenerating();

            poseDetectionCapability = new PoseDetectionCapability(userGenerator);
            poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected);

            skeletonCapability = new SkeletonCapability(userGenerator);
            skeletonCapability.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapability_CalibrationEnd);
            skeletonCapability.SetSkeletonProfile(SkeletonProfile.All);

            depthGenerator.GetAlternativeViewPointCap().SetViewPoint(imageGenerator);

            histogram = new int[depthGenerator.GetDeviceMaxDepth()];

            // 出力モード
            //this.mapMode = depthGenerator.GetMapOutputMode();
            this.mapMode = imageGenerator.GetMapOutputMode();

            bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes/*, System.Drawing.Imaging.PixelFormat.Format24bppRgb*/);
            shouldRun = true;
            openNiThread = new Thread(ReaderThread);
            openNiThread.Start();
        }
Ejemplo n.º 12
0
    void Start()
    {
        context = new Context(XML_FILE);
        depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
        if (depth == null) {
            Debug.LogError("Viewer must have a depth node!");
            return;
        }
        imageGenerator = context.FindExistingNode(NodeType.Image) as ImageGenerator;
        if (imageGenerator == null) {
            Debug.LogError("Viewer must have an image generator!");
            return;
        }

        userGenerator = new UserGenerator(context);
        skeletonCapability = new SkeletonCapability(userGenerator);
        poseDetectionCapability = new PoseDetectionCapability(userGenerator);
        calibPose = skeletonCapability.GetCalibrationPose();

        userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser);
        userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser);
        poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected);
        skeletonCapability.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapability_CalibrationEnd);

        skeletonCapability.SetSkeletonProfile(SkeletonProfile.All);
        userGenerator.StartGenerating();

        MapOutputMode mapMode = depth.GetMapOutputMode();

        GameObject o = new GameObject("User");
        mainUser = o.transform;
        mainUser.position = new Vector3(0,0,0);
        mainUser.parent = transform;

        GameObject obj = Instantiate(o, new Vector3(0,0,0), Quaternion.identity) as GameObject;
        center = obj.transform;
        //center.parent = mainUser;
        obj.name = "Center";
        createDefaultLineRenderer(center);

        obj = Instantiate(o, new Vector3(0,0,0), Quaternion.identity) as GameObject;
        leftArm = obj.transform;
        //leftArm.parent = mainUser;
        obj.name = "L Arm";
        createDefaultLineRenderer(leftArm);

        obj = Instantiate(o, new Vector3(0,0,0), Quaternion.identity) as GameObject;
        rightArm = obj.transform;
        //rightArm.parent = mainUser;
        obj.name = "R Arm";
        createDefaultLineRenderer(rightArm);

        obj = Instantiate(o, new Vector3(0,0,0), Quaternion.identity) as GameObject;
        leftLeg = obj.transform;
        //leftLeg.parent = mainUser;
        obj.name = "L Leg";
        createDefaultLineRenderer(leftLeg);

        obj = Instantiate(o, new Vector3(0,0,0), Quaternion.identity) as GameObject;
        rightLeg = obj.transform;
        //rightLeg.parent = mainUser;
        obj.name = "R Leg";
        createDefaultLineRenderer(rightLeg);
    }
        public void initKinect()
        {

            kinectStarted = true;

            FMessage[0] = "Init OpenNI Node";

            this.context = new Context(SAMPLE_XML_FILE);
            this.depth = context.FindExistingNode(xn.NodeType.Depth) as DepthGenerator;

            if (this.depth == null)
            {
                //throw new Exception("Viewer must have a depth node!");
                FLogger.Log(LogType.Debug, "non ci siamo eh");
            }
            else
            {
                FLogger.Log(LogType.Debug, "Ecchime sono un Primesense attivato e running....:P");
            }

            this.userGenerator = new UserGenerator(this.context);
            this.skeletonCapbility = new SkeletonCapability(this.userGenerator);
            this.poseDetectionCapability = new PoseDetectionCapability(this.userGenerator);
            this.calibPose = this.skeletonCapbility.GetCalibrationPose();

            this.userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser);
            this.userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser);
            this.poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected);
            this.skeletonCapbility.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapbility_CalibrationEnd);

            this.skeletonCapbility.SetSkeletonProfile(SkeletonProfile.All);
            this.joints = new Dictionary<uint, Dictionary<SkeletonJoint, SkeletonJointPosition>>();
            this.userGenerator.StartGenerating();

            FMessage[0] = "OpenNI Node registered";

            this.histogram = new int[this.depth.GetDeviceMaxDepth()];

            MapOutputMode mapMode = this.depth.GetMapOutputMode();

            texW = (int)mapMode.nXRes;
            texH = (int)mapMode.nYRes;
            FLogger.Log(LogType.Debug, "Winit: " + texW + "Hinit: " + texH);
            FLogger.Log(LogType.Debug, "kinectStarted = " + kinectStarted);
            this.bitmap = new System.Drawing.Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes, System.Drawing.Imaging.PixelFormat.Format32bppArgb);


            this.shouldRun = true;
            this.readerThread = new Thread(ReaderThread);
            this.readerThread.Start();

            FMessage[0] = "OpenNI Thread Started ";

        }
Ejemplo n.º 14
0
        public override bool Initialize()
        {
            // string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
            var dir = GTPath.GetLocalApplicationDataPath();
            DirectoryInfo dirInfo = new DirectoryInfo(new Uri(dir).LocalPath);
            this.context = new Context(dirInfo.FullName + Path.DirectorySeparatorChar + configFile);

            this.ir = context.FindExistingNode(NodeType.IR) as IRGenerator;
            
            if (this.ir != null)
		        return true;
            else
                return false;
        }
Ejemplo n.º 15
0
        public void Run()
        {
            this.context = new Context (SAMPLE_XML_FILE);

            var ges = context.FindExistingNode (NodeType.Gesture) as GestureGenerator;
            if (ges == null)
                throw new Exception ("Viewer must have a gesture node!");

            //foreach (var ggs in ges.EnumerateAllGestures ()) Console.Error.WriteLine (ggs); return;

            this.depth = context.FindExistingNode (NodeType.Depth) as DepthGenerator;
            if (this.depth == null)
                throw new Exception ("Viewer must have a depth node!");

            user_gen = new UserGenerator (context);
            skel_cap = new SkeletonCapability (user_gen);
            pose_cap = new PoseDetectionCapability (user_gen);
            calib_pose = skel_cap.GetCalibrationPose ();

            user_gen.NewUser += delegate (ProductionNode node, uint id) {
                if (user_count++ > 0)
                    Console.Error.WriteLine ("WARNING: this application does not recognize more than 1 person");
                else
                    pose_cap.StartPoseDetection (calib_pose, id);
            };

            user_gen.LostUser += delegate (ProductionNode node, uint id) {
                user_count--;
                joints.Remove (id);
            };

            pose_cap.PoseDetected += delegate (ProductionNode node, string pose, uint id) {
                pose_cap.StopPoseDetection (id);
                skel_cap.RequestCalibration (id, true);
            };

            skel_cap.CalibrationEnd += delegate (ProductionNode node, uint id, bool success) {
                if (success) {
                    skel_cap.StartTracking (id);
                    joints.Add (id, new Dictionary<SkeletonJoint, SkeletonJointPosition>());
                } else {
                    pose_cap.StartPoseDetection (calib_pose, id);
                }
            };

            skel_cap.SetSkeletonProfile (SkeletonProfile.All);
            joints = new Dictionary<uint,Dictionary<SkeletonJoint,SkeletonJointPosition>> ();
            user_gen.StartGenerating ();

            histogram = new int [this.depth.GetDeviceMaxDepth ()];

            MapOutputMode mapMode = this.depth.GetMapOutputMode ();

            tcp_client = new TcpClient ();
            tcp_client.Connect ("localhost", 9801);
            tcp_writer = new StreamWriter (tcp_client.GetStream ());

            //			bitmap = new Bitmap ((int) mapMode.nXRes, (int) mapMode.nYRes/*, System.Drawing.Imaging.PixelFormat.Format24bppRgb*/);
            should_run = true;
            readerThread = new Thread (ReaderThread);
            readerThread.Start ();

            shouldPrintState = false;

            Console.WriteLine ("Type [CR] to stop");
            Console.ReadLine ();
            should_run = false;
        }
        /// <summary>
        /// This method gets executed when the window loads. In it, we initialize our connection with Kinect
        /// and set up the timer which will update our depth image.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                // Initialize the context from the configuration file
                this.context = new Context(@"..\..\data\openniconfig.xml");
                // Get the depth generator from the config file.
                this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
                if (this.depth == null)
                    throw new Exception(@"Error in Data\openniconfig.xml. No depth node found.");
                MapOutputMode mapMode = this.depth.GetMapOutputMode();
                this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

                // Initialize Matrixes
                this.depthMatrix = new Matrix<Double>(480, 640);
                this.depthMatrixROI = new Matrix<Double>(480, 640);
                this.depthMatrixROIByte = new Matrix<Byte>(480, 640);
                this.backgroundDepthMatrix = new Matrix<Double>(480, 640);
                // Initialize Images
                this.depthMatrixImage = new Image<Gray,double>(640,480);
                this.depthMatrixROIImage = new Image<Gray, byte>(640, 480);
                this.backgroundDepthImage = new Image<Gray, double>(640, 480);
                this.trackingImage = new Image<Bgr, byte>(640, 480, new Bgr(0, 0, 0));

                // Initialize Blob Tracking Components
                    // Blob Tracking Parameter
                blobParam = new Emgu.CV.VideoSurveillance.BlobTrackerAutoParam<Gray>();
                blobParam.BlobTracker = new Emgu.CV.VideoSurveillance.BlobTracker(Emgu.CV.CvEnum.BLOBTRACKER_TYPE.CC);
                blobParam.BlobDetector = new Emgu.CV.VideoSurveillance.BlobDetector(Emgu.CV.CvEnum.BLOB_DETECTOR_TYPE.CC);
                //blobParam.FGDetector = new Emgu.CV.VideoSurveillance.FGDetector<Gray>(Emgu.CV.CvEnum.FORGROUND_DETECTOR_TYPE.FGD);
                //blobParam.FGTrainFrames = 10;
                    // Blob Tracking initialization
                blobTracker = new Emgu.CV.VideoSurveillance.BlobTrackerAuto<Gray>(blobParam);

                progressBar1.Minimum = 0;
                progressBar1.Maximum = ((Convert.ToInt16(textBoxLifespan.Text) * 4) / _tickDuration);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error initializing OpenNI.");
                MessageBox.Show(ex.Message);
                this.Close();
            }

            // Set the timer to update teh depth image every 10 ms.
            DispatcherTimer dispatcherTimer = new DispatcherTimer();
            dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
            dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, _tickDuration);
            dispatcherTimer.Start();
            Console.WriteLine("Finished loading");
        }
Ejemplo n.º 17
0
    void Start()
    {
        /*really unity?

        do you do that for real?

        */

        InitializeCharacter();
        this.context = new Context(SAMPLE_XML_FILE);
            this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
            if (this.depth == null)
            {
                throw new Exception("Viewer must have a depth node!");
            }

            this.userGenerator = new UserGenerator(this.context);
            this.skeletonCapbility = new SkeletonCapability(this.userGenerator);
            this.poseDetectionCapability = new PoseDetectionCapability(this.userGenerator);
            this.calibPose = this.skeletonCapbility.GetCalibrationPose();

            this.userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser);
            this.userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser);
            this.poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected);
            this.skeletonCapbility.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapbility_CalibrationEnd);

            this.skeletonCapbility.SetSkeletonProfile(SkeletonProfile.All);
            this.joints = new Dictionary<uint,Dictionary<SkeletonJoint,SkeletonJointPosition>>();
            this.userGenerator.StartGenerating();

            this.histogram = new int[this.depth.GetDeviceMaxDepth()];

            MapOutputMode mapMode = this.depth.GetMapOutputMode();

        //			this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes/*, System.Drawing.Imaging.PixelFormat.Format24bppRgb*/);
            usersLblTex = new Texture2D((int)mapMode.nXRes, (int)mapMode.nYRes);
        Debug.Log("usersLblTex = w: "+ usersLblTex.width + " h: " + usersLblTex.height );

            usersMapSize = mapMode.nXRes * mapMode.nYRes;
            usersMapColors = new Color[usersMapSize];
            usersMapRect = new Rect(Screen.width - usersLblTex.width / 2, Screen.height - usersLblTex.height / 2, usersLblTex.width / 2, usersLblTex.height / 2);
        usersLabelMap = new short[usersMapSize];
        usersDepthMap = new short[usersMapSize];

        usersHistogramMap = new float[5000];

            //DepthMetaData depthMD = new DepthMetaData();

            this.shouldRun = true;
            //this.readerThread = new Thread(ReaderThread);
        //	this.readerThread.Start();
    }
Ejemplo n.º 18
0
        private void InitOpenNi(AsyncStateData asyncData)
        {
            _niContext = new Context("openni.xml");

            _imageNode = (ImageGenerator)_niContext.FindExistingNode(NodeType.Image);

            _imageMeta = new ImageMetaData();
            _imageNode.GetMetaData(_imageMeta);

            // create the image bitmap source on
            asyncData.AsyncOperation.SynchronizationContext.Send(
                md => CreateImageBitmap(_imageMeta, out _rgbImageSource),
                null);

            // add depth node
            _depthNode = (DepthGenerator)_niContext.FindExistingNode(NodeType.Depth);

            _depthMeta = new DepthMetaData();
            _depthNode.GetMetaData(_depthMeta);

            asyncData.AsyncOperation.SynchronizationContext.Send(
                state => CreateImageBitmap(_depthMeta, out _depthImageSource, PixelFormats.Pbgra32),
                null);

            // add scene node
            //_sceneNode = (SceneAnalyzer) _niContext.FindExistingNode(NodeType.Scene);

            //_sceneMeta = new SceneMetaData();
            ////_sceneNode.GetMetaData(_sceneMeta);

            //asyncData.AsyncOperation.SynchronizationContext.Send(
            //    state => CreateImageBitmap(_sceneMeta, out _sceneImageSource, PixelFormats.Pbgra32),
            //    null);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// This method gets executed when the window loads. In it, we initialize our connection with Kinect
        /// and set up the timer which will update our depth image.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            try
            {
                // Initialize the context from the configuration file
                this.context = new Context(@"..\..\data\openniconfig.xml");
                // Get the depth generator from the config file.
                this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
                if (this.depth == null)
                    throw new Exception(@"Error in Data\openniconfig.xml. No depth node found.");
                MapOutputMode mapMode = this.depth.GetMapOutputMode();
                this.bitmap = new Bitmap((int)mapMode.nXRes, (int)mapMode.nYRes, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error initializing OpenNI.");
                MessageBox.Show(ex.Message);
                this.Close();
            }

            // Set the timer to update teh depth image every 10 ms.
            DispatcherTimer dispatcherTimer = new DispatcherTimer();
            dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
            dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 10);
            dispatcherTimer.Start();
            Console.WriteLine("Finished loading");
        }
Ejemplo n.º 20
0
    void Start()
    {
        this.context = new Context(SAMPLE_XML_FILE);
            this.depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
            if (this.depth == null)
            {
                throw new Exception("Viewer must have a depth node!");
            }

            this.userGenerator = new UserGenerator(this.context);
            this.skeletonCapbility = new SkeletonCapability(this.userGenerator);
            this.poseDetectionCapability = new PoseDetectionCapability(this.userGenerator);
            this.calibPose = this.skeletonCapbility.GetCalibrationPose();

            this.userGenerator.NewUser += new UserGenerator.NewUserHandler(userGenerator_NewUser);
            this.userGenerator.LostUser += new UserGenerator.LostUserHandler(userGenerator_LostUser);
            this.poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler(poseDetectionCapability_PoseDetected);
            this.skeletonCapbility.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler(skeletonCapbility_CalibrationEnd);

            this.skeletonCapbility.SetSkeletonProfile(SkeletonProfile.All);
            this.userGenerator.StartGenerating();

            MapOutputMode mapMode = this.depth.GetMapOutputMode();

            this.shouldRun = true;
    }
Ejemplo n.º 21
0
        public void Initialize()
        {
            context = new Context(@"..\..\..\data\openniconfig.xml");
            depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
            rgb = context.FindExistingNode(NodeType.Image) as ImageGenerator;
            if (depth == null)
                throw new Exception(@"Error in Data\openniconfig.xml. No depth node found.");
            if (rgb == null)
                throw new Exception(@"Error in Data\openniconfig.xml. No rgb node found.");
            MapOutputMode mapMode = depth.GetMapOutputMode();

            // Initialize member variables
            depthHistogram = new int[depth.GetDeviceMaxDepth()];

            // initialize rgb array
            xn.ImageMetaData rgbMD = rgb.GetMetaData();
            rgbData = new byte[rgbMD.XRes * rgbMD.YRes * 3];
            rgbWidth = rgbMD.XRes;
            rgbHeight = rgbMD.YRes;

            xn.DepthMetaData depthMD = depth.GetMetaData();
            depthData = new ushort[depthMD.XRes * depthMD.YRes];
            oldDepthData = new ushort[depthMD.XRes * depthMD.YRes];
            histogramImage = new byte[depthMD.XRes * depthMD.YRes * 3];
            depthWidth = depthMD.XRes;
            depthHeight = depthMD.YRes;
            depthOffsetX = depthMD.XOffset;
            depthOffsetY = depthMD.YOffset;

            DispatcherTimer dispatcherTimer = new DispatcherTimer();
            dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
            dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, 30);
            dispatcherTimer.Start();
        }
Ejemplo n.º 22
0
    void Start()
    {
        texture = new Texture2D (640, 480, TextureFormat.RGB24, false);
        rgbMaterial.mainTextureScale = new Vector2 (0.62f, 0.93f);
        // fixes weird scaling problem
        rgbMaterial.mainTexture = texture;

        context = new Context (XML_FILE);
        depth = context.FindExistingNode (NodeType.Depth) as DepthGenerator;
        if (depth == null) {
            Debug.LogError ("Viewer must have a depth node!");
            return;
        }

        imageGenerator = context.FindExistingNode (NodeType.Image) as ImageGenerator;
        if (imageGenerator == null) {
            Debug.LogError ("Viewer must have an image generator!");
            return;
        }
        depth.GetAlternativeViewPointCap ().SetViewPoint (imageGenerator);

        //handsGenerator = context.FindExistingNode(NodeType.Hands) as HandsGenerator;
        //if (handsGenerator == null) {
        //	Debug.LogError("Viewer must have a hands generator!");
        //	return;
        //}
        //handsGenerator.GetAlternativeViewPointCap().SetViewPoint(imageGenerator);

        //gestureGenerator = context.FindExistingNode (NodeType.Gesture) as GestureGenerator;
        //if (gestureGenerator == null) {
        //	Debug.LogError ("Viewer must have a gesture node!");
        //}
        //gestureGenerator.GetAlternativeViewPointCap().SetViewPoint(imageGenerator);

        userGenerator = new UserGenerator (context);
        skeletonCapability = new SkeletonCapability (userGenerator);
        poseDetectionCapability = new PoseDetectionCapability (userGenerator);
        calibPose = skeletonCapability.GetCalibrationPose ();

        userGenerator.NewUser += new UserGenerator.NewUserHandler (userGenerator_NewUser);
        userGenerator.LostUser += new UserGenerator.LostUserHandler (userGenerator_LostUser);
        poseDetectionCapability.PoseDetected += new PoseDetectionCapability.PoseDetectedHandler (poseDetectionCapability_PoseDetected);
        skeletonCapability.CalibrationEnd += new SkeletonCapability.CalibrationEndHandler (skeletonCapability_CalibrationEnd);

        skeletonCapability.SetSkeletonProfile (SkeletonProfile.All);

        userGenerator.StartGenerating ();
        imageGenerator.StartGenerating ();

        //handsGenerator.HandCreate += new HandsGenerator.HandCreateHandler (hands_HandCreate);
        //handsGenerator.HandUpdate += new HandsGenerator.HandUpdateHandler (hands_HandUpdate);
        //handsGenerator.HandDestroy += new HandsGenerator.HandDestroyHandler (hands_HandDestroy);

        //gestureGenerator.AddGesture ("Wave");
        //gestureGenerator.GestureRecognized += new GestureGenerator.GestureRecognizedHandler (gestures_GestureRecognized);
        //gestureGenerator.StartGenerating();

        if (drawSkeleton) {
            GameObject o = new GameObject ("User");
            mainUser = o.transform;
            mainUser.position = new Vector3 (0, 0, 0);
            mainUser.parent = transform;

            GameObject obj = Instantiate (o, new Vector3 (0, 0, 0), Quaternion.identity) as GameObject;
            center = obj.transform;
            //center.parent = mainUser;
            obj.name = "Center";
            createDefaultLineRenderer (center);

            obj = Instantiate (o, new Vector3 (0, 0, 0), Quaternion.identity) as GameObject;
            leftArm = obj.transform;
            //leftArm.parent = mainUser;
            obj.name = "L Arm";
            createDefaultLineRenderer (leftArm);

            obj = Instantiate (o, new Vector3 (0, 0, 0), Quaternion.identity) as GameObject;
            rightArm = obj.transform;
            //rightArm.parent = mainUser;
            obj.name = "R Arm";
            createDefaultLineRenderer (rightArm);

            obj = Instantiate (o, new Vector3 (0, 0, 0), Quaternion.identity) as GameObject;
            leftLeg = obj.transform;
            //leftLeg.parent = mainUser;
            obj.name = "L Leg";
            createDefaultLineRenderer (leftLeg);

            obj = Instantiate (o, new Vector3 (0, 0, 0), Quaternion.identity) as GameObject;
            rightLeg = obj.transform;
            //rightLeg.parent = mainUser;
            obj.name = "R Leg";
            createDefaultLineRenderer (rightLeg);
        }
    }