protected Vector3D getCurrentJointValue(uint targetID, FubiUtils.SkeletonJoint jointID, FubiUtils.BodyMeasurement measureID = FubiUtils.BodyMeasurement.NUM_MEASUREMENTS) { float x, y, z, confidence; double timeStamp; if (Type == XMLGenerator.RecognizerType.JointRelation || Type == XMLGenerator.RecognizerType.LinearMovement) { if (UseHand) { Fubi.getCurrentHandJointPosition(targetID, (FubiUtils.SkeletonHandJoint)jointID, out x, out y, out z, out confidence, out timeStamp, Options.Local, Options.Filtered); } else { Fubi.getCurrentSkeletonJointPosition(targetID, jointID, out x, out y, out z, out confidence, out timeStamp, Options.Local, Options.Filtered); if (measureID != FubiUtils.BodyMeasurement.NUM_MEASUREMENTS && Type == XMLGenerator.RecognizerType.JointRelation) { float measureDist, measureConfidence; Fubi.getBodyMeasurementDistance(targetID, measureID, out measureDist, out measureConfidence); if (measureDist > 0) { x /= measureDist; y /= measureDist; z /= measureDist; } } } } else { var mat = new float[9]; if (UseHand) { Fubi.getCurrentHandJointOrientation(targetID, (FubiUtils.SkeletonHandJoint)jointID, mat, out confidence, out timeStamp, Options.Local, Options.Filtered); } else { Fubi.getCurrentSkeletonJointOrientation(targetID, jointID, mat, out confidence, out timeStamp, Options.Local, Options.Filtered); } FubiUtils.Math.rotMatToRotation(mat, out x, out y, out z); } return(new Vector3D(x, y, z)); }
public static UInt32 addJointRelationRecognizer(FubiUtils.SkeletonJoint joint, FubiUtils.SkeletonJoint relJoint, float minX = -FubiUtils.Math.MaxFloat, float minY = -FubiUtils.Math.MaxFloat, float minZ = -FubiUtils.Math.MaxFloat, float maxX = FubiUtils.Math.MaxFloat, float maxY = FubiUtils.Math.MaxFloat, float maxZ = FubiUtils.Math.MaxFloat, float minDistance = 0, float maxDistance = FubiUtils.Math.MaxFloat, bool useLocalPositions = false, Int32 atIndex = -1, string name = null, float minConfidene = -1.0f, FubiUtils.BodyMeasurement measuringUnit = FubiUtils.BodyMeasurement.NUM_MEASUREMENTS) { IntPtr namePtr = Marshal.StringToHGlobalAnsi(name); UInt32 ret = FubiInternal.addJointRelationRecognizer(joint, relJoint, minX, minY, minZ, maxX, maxY, maxZ, minDistance, maxDistance, useLocalPositions, atIndex, namePtr, minConfidene, measuringUnit); Marshal.FreeHGlobal(namePtr); return(ret); }
internal static extern UInt32 addJointRelationRecognizer(FubiUtils.SkeletonJoint joint, FubiUtils.SkeletonJoint relJoint, float minX, float minY, float minZ, float maxX, float maxY, float maxZ, float minDistance, float maxDistance, [MarshalAs(UnmanagedType.U1)] bool useLocalPositions, Int32 atIndex, IntPtr name, float minConfidence, FubiUtils.BodyMeasurement measuringUnit);