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));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 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);