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]; }
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); }