void Start()
    {
        Xtr3dGeneratorStateManager.RegisterColorImageCallback(MyColorImageFrameReadyEventHandler);
        imageInfo = Xtr3dGeneratorStateManager.GeneratorImageInfo;
        Debug.Log("ImageInfo format" + imageInfo.Format + " " + imageInfo.Width + "," + imageInfo.Height);
        buffer = new Texture2D(imageInfo.Width, imageInfo.Height, TextureFormat.RGB24, false);

        // init frameRateCalc for calculating avarage running fps in the last given frames
        frameRateCalc = new FrameRateCalc(50);
        newRgbImage   = new byte[imageInfo.Width * imageInfo.Height * imageInfo.BitsPerPixel];
    }
示例#2
0
    void Start()
    {
        CalculateTextureParams();
        CreateJoints();
        Xtr3dGeneratorStateManager.RegisterDataCallback(MyDataFrameReady);
        // init frameRateCalc for calculating avarage running fps in the last given frames
        frameRateCalc = new FrameRateCalc(50);

        // init targets
        handTarget = GameObject.CreatePrimitive(PrimitiveType.Sphere);
        handTarget.transform.position = new Vector3(1.0f, 1.5f, -6.0f);
        handTargetCollider            = handTarget.gameObject.AddComponent <SphereCollider>();
        handTargetCollider.center     = Vector3.zero;
        handTargetCollider.radius     = 1.0f;

        elbowTarget = GameObject.CreatePrimitive(PrimitiveType.Sphere);
        elbowTarget.transform.position = new Vector3((float)-2.0, (float)(1.5), (float)(-6.0));
        elbowTargetCollider            = elbowTarget.gameObject.AddComponent <SphereCollider>();
        elbowTargetCollider.center     = Vector3.zero;
        elbowTargetCollider.radius     = 1.0f;
    }
 private void MyAllFramesReadyEventHandler(object sender, AllFramesReadyEventArgs e)
 {
     try
     {
         using (var allFrames = e.OpenFrame() as AllFramesFrame)
         {
             if (allFrames != null)
             {
                 foreach (var evtArgs in allFrames.FramesReadyEventArgs)
                 {
                     var colorImageFrameReady = evtArgs as ColorImageFrameReadyEventArgs;
                     if ((MyColorImageFrameReadyEventHandler != null) && (null != colorImageFrameReady))
                     {
                         Xtr3dGeneratorStateManager.MyColorImageFrameReadyEventHandler(sender, colorImageFrameReady);
                         continue;
                     }
                     var dataFrameReady = evtArgs as DataFrameReadyEventArgs;
                     if ((MyDataFrameReady != null) && (null != dataFrameReady))
                     {
                         Xtr3dGeneratorStateManager.MyDataFrameReady(sender, dataFrameReady);
                         continue;
                     }
                     var gesturesFrameReady = evtArgs as GesturesFrameReadyEventArgs;
                     if ((MyGesturesFrameReady != null) && (null != gesturesFrameReady))
                     {
                         Xtr3dGeneratorStateManager.MyGesturesFrameReady(sender, gesturesFrameReady);
                         continue;
                     }
                 }
             }
         }
     }
     catch (System.Exception ex)
     {
         Debug.LogError("Error in MyAllFramesReadyEventHandler: \n" + ex.ToString());
     }
 }
    /**
     *  This is an example to detecting gesture in custom-code.
     * The uncommented version uses the built-in xtr3d gestures stream and xml definition
     * In Start() add:
     * Xtr3dGeneratorStateManager.RegisterDataCallback(MyDataFrameReady);
     *
     * private void MyDataFrameReady(object sender, DataFrameReadyEventArgs e)
     * {
     *
     * using (var dataFrame = e.OpenFrame() as DataFrame)
     * {
     *              if (dataFrame!=null)
     *              {
     *                      JointCollection joints= dataFrame.Skeletons[0].Joints;
     *                      if (dataFrame.Skeletons[0].TrackingState==TrackingState.Tracked)
     *                              detectStaticTPosition(joints);
     *
     *              }
     *      }
     *
     * }
     *
     * private void detectStaticTPosition(JointCollection joints)
     * {
     *      Point handLeft =     joints.HandLeft.skeletonPoint;
     *      Point shoulderLeft = joints.ShoulderLeft.skeletonPoint;
     *
     *      float leftHandAngle = Vector2.Angle(
     *             new Vector2(handLeft.X -  shoulderLeft.X,
     *                         handLeft.Y - shoulderLeft.Y),
     *             new Vector2(0f,1f));
     *
     *      Point handRight =     joints.HandRight.skeletonPoint;
     *      Point shoulderRight = joints.ShoulderRight.skeletonPoint;
     *
     *      float rightHandAngle = Vector2.Angle(
     *             new Vector2(handRight.X -  shoulderRight.X,
     *                         handRight.Y - shoulderRight.Y),
     *             new Vector2(0f,1f));
     *
     *
     *      float DELTA=15f;
     *      if ((leftHandAngle > 90f-DELTA && leftHandAngle < 90f+DELTA && rightHandAngle> 90f-DELTA && rightHandAngle< 90f+DELTA) )
     *              customGesturesFromSkeletonString="Detected from custom code: T Position";
     *      else
     *              customGesturesFromSkeletonString="";
     * }
     *
     *
     */


    public void Start()
    {
        Xtr3dGeneratorStateManager.RegisterGesturesCallback(MyGesturesFrameReady);
    }