Example #1
0
        // 初期化
        private void xnInitialize()
        {
            // コンテキストの初期化
            ScriptNode scriptNode;

            context = Context.CreateFromXmlFile(CONFIG_XML_PATH, out scriptNode);

            // イメージジェネレータの作成
            image = context.FindExistingNode(NodeType.Image) as ImageGenerator;
            if (image == null)
            {
                throw new Exception(context.GlobalErrorState);
            }

            // デプスジェネレータの作成
            depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
            if (depth == null)
            {
                throw new Exception(context.GlobalErrorState);
            }

            // デプスの座標をイメージに合わせる
            depth.AlternativeViewpointCapability.SetViewpoint(image);

            // ユーザージェネレータの作成
            user = context.FindExistingNode(NodeType.User) as UserGenerator;
            if (depth == null)
            {
                throw new Exception(context.GlobalErrorState);
            }

            // ユーザー検出機能をサポートしているか確認
            if (!user.IsCapabilitySupported("User::Skeleton"))
            {
                throw new Exception("ユーザー検出をサポートしていません");
            }

            // 背景イメージを作成
            MapOutputMode mapMode = image.MapOutputMode;

            background = new Bitmap((int)mapMode.XRes, (int)mapMode.YRes,
                                    System.Drawing.Imaging.PixelFormat.Format24bppRgb);
        }
        // 初期化
        private void xnInitialize()
        {
            // コンテキストの初期化
            ScriptNode scriptNode;

            context = Context.CreateFromXmlFile(CONFIG_XML_PATH, out scriptNode);

            // イメージジェネレータの作成
            image = context.FindExistingNode(NodeType.Image) as ImageGenerator;
            if (image == null)
            {
                throw new Exception(context.GlobalErrorState);
            }

            // デプスジェネレータの作成
            depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
            if (depth == null)
            {
                throw new Exception(context.GlobalErrorState);
            }

            // デプスの座標をイメージに合わせる
            depth.AlternativeViewpointCapability.SetViewpoint(image);

            // ユーザージェネレータの作成
            user = context.FindExistingNode(NodeType.User) as UserGenerator;
            if (depth == null)
            {
                throw new Exception(context.GlobalErrorState);
            }

            // ユーザー検出機能をサポートしているか確認
            if (!user.IsCapabilitySupported("User::Skeleton"))
            {
                throw new Exception("ユーザー検出をサポートしていません");
            }
        }
Example #3
0
        // 初期化
        private void xnInitialize()
        {
            // コンテキストの初期化
            ScriptNode scriptNode;

            context = Context.CreateFromXmlFile(CONFIG_XML_PATH, out scriptNode);

            // 鏡モード(反転)にしない
            context.GlobalMirror = false;

            // イメージジェネレータの作成
            image = context.FindExistingNode(NodeType.Image) as ImageGenerator;
            if (image == null)
            {
                throw new Exception(context.GlobalErrorState);
            }

            // デプスジェネレータの作成
            depth = context.FindExistingNode(NodeType.Depth) as DepthGenerator;
            if (depth == null)
            {
                throw new Exception(context.GlobalErrorState);
            }

            // デプスの座標をイメージに合わせる
            depth.AlternativeViewpointCapability.SetViewpoint(image);

            // ユーザージェネレータの作成
            user = context.FindExistingNode(NodeType.User) as UserGenerator;
            if (depth == null)
            {
                throw new Exception(context.GlobalErrorState);
            }

            // ユーザー検出機能をサポートしているか確認
            if (!user.IsCapabilitySupported("User::Skeleton"))
            {
                throw new Exception("ユーザー検出をサポートしていません");
            }

            // ユーザー認識のコールバックを登録
            user.NewUser  += new EventHandler <NewUserEventArgs>(user_NewUser);
            user.LostUser += new EventHandler <UserLostEventArgs>(user_LostUser);

            //キャリブレーションにポーズが必要か確認
            skelton = user.SkeletonCapability;
            if (skelton.DoesNeedPoseForCalibration)
            {
                // ポーズ検出のサポートチェック
                if (!user.IsCapabilitySupported("User::PoseDetection"))
                {
                    throw new Exception("ユーザー検出をサポートしていません");
                }

                // キャリブレーションポーズの取得
                pose = skelton.CalibrationPose;

                // ポーズ検出のコールバックを登録
                PoseDetectionCapability poseDetect = user.PoseDetectionCapability;
                poseDetect.PoseDetected += new EventHandler <PoseDetectedEventArgs>(poseDetect_PoseDetected);
                poseDetect.PoseEnded    += new EventHandler <PoseEndedEventArgs>(poseDetect_PoseEnded);
            }

            // キャリブレーションのコールバックを登録
            skelton.CalibrationStart += new EventHandler <CalibrationStartEventArgs>(skelton_CalibrationStart);
            skelton.CalibrationEnd   += new EventHandler <CalibrationEndEventArgs>(skelton_CalibrationEnd);

            // すべてをトラッキングする
            skelton.SetSkeletonProfile(SkeletonProfile.All);

            // ジェスチャーの検出開始
            context.StartGeneratingAll();
        }