/// <summary> /// Updates all gestures. /// </summary> /// <param name='data'> /// Data. /// </param> public void UpdateAllGestures(NuiSkeletonData data) { foreach (Gesture gesture in gestureCollection) { gesture.UpdateGesture(data); } }
private static void PopulateSkeletonData(BodyData data, ref NuiSkeletonData skeleton) { int jointsCount = (int)NuiSkeletonPositionIndex.Count; skeleton.eTrackingState = data.isTracked ? NuiSkeletonTrackingState.SkeletonTracked : NuiSkeletonTrackingState.NotTracked; skeleton.TrackingId = data.trackingId; skeleton.ClippedEdges = (FrameEdges)data.clippedEdges; if (skeleton.SkeletonPositions == null) { skeleton.SkeletonPositions = new Vector4[jointsCount]; } if (skeleton.SkeletonTrackingState == null) { skeleton.SkeletonTrackingState = new NuiSkeletonPositionTrackingState[jointsCount]; } for (int i = 0; i != jointsCount; i++) { data.SetJointPosition(i, ref skeleton.SkeletonPositions[i]); data.SetJointTrackingState(i, ref skeleton.SkeletonTrackingState[i]); } /* * var i = (int)NuiSkeletonPositionIndex.HandLeft; * data.JointPosition(i, ref skeleton.SkeletonPositions[i]); * skeleton.eSkeletonPositionTrackingState[i] = NuiSkeletonPositionTrackingState.Tracked; * * i = (int)NuiSkeletonPositionIndex.HandRight; * data.JointPosition(i, ref skeleton.SkeletonPositions[i]); * skeleton.eSkeletonPositionTrackingState[i] = NuiSkeletonPositionTrackingState.Tracked; * * i = (int)NuiSkeletonPositionIndex.Head; * data.JointPosition(i, ref skeleton.SkeletonPositions[i]); * skeleton.eSkeletonPositionTrackingState[i] = NuiSkeletonPositionTrackingState.Tracked; * * i = (int)NuiSkeletonPositionIndex.Neck; * data.JointPosition(i, ref skeleton.SkeletonPositions[i]); * skeleton.eSkeletonPositionTrackingState[i] = NuiSkeletonPositionTrackingState.Tracked; * * i = (int)NuiSkeletonPositionIndex.ShoulderLeft; * data.JointPosition(i, ref skeleton.SkeletonPositions[i]); * skeleton.eSkeletonPositionTrackingState[i] = NuiSkeletonPositionTrackingState.Tracked; * * i = (int)NuiSkeletonPositionIndex.ShoulderRight; * data.JointPosition(i, ref skeleton.SkeletonPositions[i]); * skeleton.eSkeletonPositionTrackingState[i] = NuiSkeletonPositionTrackingState.Tracked; * * i = (int)NuiSkeletonPositionIndex.SpineBase; * data.JointPosition(i, ref skeleton.SkeletonPositions[i]); * skeleton.eSkeletonPositionTrackingState[i] = NuiSkeletonPositionTrackingState.Tracked; */ }
/// <summary> /// Updates the gesture. /// </summary> /// <param name="data">The skeleton data.</param> public void UpdateGesture(NuiSkeletonData data) { if (this.paused) { if (this.frameCount == this.pausedFrameCount) { this.paused = false; } this.frameCount++; } //GesturePartResult result = this.gestureParts[this.currentGesturePart].CheckGesture(data); GesturePartResult result = this.gestureParts[this.currentGesturePart].CheckGesture(); if (result == GesturePartResult.Succeed) { if (this.currentGesturePart + 1 < this.gestureParts.Length) { this.currentGesturePart++; this.frameCount = 0; this.pausedFrameCount = 10; this.paused = true; } else { if (this.GestureRecognized != null) { this.GestureRecognized(this, new GestureEventArgs(this.name, data.dwTrackingID)); this.Reset(); } } } else if (result == GesturePartResult.Fail || this.frameCount == 50) { this.currentGesturePart = 0; this.frameCount = 0; this.pausedFrameCount = 5; this.paused = true; } else { this.frameCount++; this.pausedFrameCount = 5; this.paused = true; } }
public static extern int NuiSkeletonCalculateBoneOrientations(ref NuiSkeletonData pSkeletonData, NuiSkeletonBoneOrientation[] pBoneOrientations);
/* * NuiSkeletonBoneOrientation[] KinectInterface.getBoneOrientations(NuiSkeletonFrame skeleton){ * return null; * } */ NuiSkeletonBoneOrientation[] KinectInterface.getBoneOrientations(NuiSkeletonData skeletonData) { NuiSkeletonBoneOrientation[] boneOrientations = new NuiSkeletonBoneOrientation[(int)(NuiSkeletonPositionIndex.Count)]; NativeMethods.NuiSkeletonCalculateBoneOrientations(ref skeletonData, boneOrientations); return(boneOrientations); }
/* * NuiSkeletonBoneOrientation[] KinectInterface.getBoneOrientations(NuiSkeletonFrame skeleton){ * return null; * } */ NuiSkeletonBoneOrientation[] KinectInterface.getBoneOrientations(NuiSkeletonData skeletonData) { return(null); }
public bool PollBodyFrame(KinectInterop.SensorData sensorData, ref KinectInterop.BodyFrameData bodyFrame, ref Matrix4x4 kinectToWorld) { bool newSkeleton = false; int hr = NuiSkeletonGetNextFrame(0, ref skeletonFrame); if (hr == 0) { newSkeleton = true; } if (newSkeleton) { hr = NuiTransformSmooth(ref skeletonFrame, ref smoothParameters); if (hr != 0) { Debug.LogError("Skeleton Data Smoothing failed"); } for (uint i = 0; i < sensorData.bodyCount; i++) { NuiSkeletonData body = skeletonFrame.SkeletonData[i]; bodyFrame.bodyData[i].bIsTracked = (short)(body.eTrackingState == NuiSkeletonTrackingState.SkeletonTracked ? 1 : 0); if (body.eTrackingState == NuiSkeletonTrackingState.SkeletonTracked) { // transfer body and joints data bodyFrame.bodyData[i].liTrackingID = (long)body.dwTrackingID; for (int j = 0; j < sensorData.jointCount; j++) { KinectInterop.JointData jointData = bodyFrame.bodyData[i].joint[j]; jointData.jointType = GetJointAtIndex(j); jointData.trackingState = (KinectInterop.TrackingState)body.eSkeletonPositionTrackingState[j]; if (jointData.trackingState != KinectInterop.TrackingState.NotTracked) { jointData.kinectPos = body.SkeletonPositions[j]; jointData.position = kinectToWorld.MultiplyPoint3x4(jointData.kinectPos); } jointData.orientation = Quaternion.identity; // Windows.Kinect.Vector4 vQ = body.JointOrientations[jointData.jointType].Orientation; // jointData.orientation = new Quaternion(vQ.X, vQ.Y, vQ.Z, vQ.W); if (j == 0) { bodyFrame.bodyData[i].position = jointData.position; bodyFrame.bodyData[i].orientation = jointData.orientation; } bodyFrame.bodyData[i].joint[j] = jointData; } // tranfer hand states uint intCount = GetInteractorsCount(); for (uint intIndex = 0; intIndex < intCount; intIndex++) { uint skeletonId = GetSkeletonTrackingID(intIndex); if (skeletonId == body.dwTrackingID) { uint leftHandState = GetLeftHandState(intIndex); InteractionHandEventType leftHandEvent = GetLeftHandEvent(intIndex); uint rightHandState = GetRightHandState(intIndex); InteractionHandEventType rightHandEvent = GetRightHandEvent(intIndex); GetHandStateAndConf(leftHandState, leftHandEvent, ref bodyFrame.bodyData[i].leftHandState, ref bodyFrame.bodyData[i].leftHandConfidence); GetHandStateAndConf(rightHandState, rightHandEvent, ref bodyFrame.bodyData[i].rightHandState, ref bodyFrame.bodyData[i].rightHandConfidence); } } } } } return(newSkeleton); }