public Joint(float xCoord, float yCoord, float zCoord, JointName jointName)
 {
     this.xCoord    = xCoord;
     this.yCoord    = yCoord;
     this.zCoord    = zCoord;
     this.jointName = jointName;
 }
Example #2
0
    public static float GetNeckAngle(FacetrackingManager facetrackingManager, JointName joint)
    {
        float angle = 0;

        if (facetrackingManager == null)
        {
            facetrackingManager = FacetrackingManager.Instance;
        }

        if (facetrackingManager && facetrackingManager.IsTrackingFace())
        {
            switch (joint)
            {
            case JointName.pan:
                angle = facetrackingManager.GetHeadRotation().eulerAngles.y;
                if (angle > 180f)
                {
                    angle = angle - 360f;                   //180도를 넘을리는 없지만 각의 범위를 -180~180로 쓰겠다는 의미
                }
                break;

            case JointName.tilt:
                angle = facetrackingManager.GetHeadRotation().eulerAngles.x;
                if (angle > 180f)
                {
                    angle = angle - 360f;
                }
                break;

            default: break;
            }
        }

        return(angle);
    }
        // create a JointSkeleton based on a Skeleton instance received from Kinect sensor
        public JointSkeleton(Skeleton skeleton)
        {
            foreach (JointType jointType in Enum.GetValues(typeof(JointType)))
            {
                if (!Mapper.JointTypeJointNameMap.ContainsKey(jointType))
                {
                    continue;
                }

                SkeletonPoint pt        = skeleton.Joints[jointType].Position;
                JointName     jointName = Mapper.JointTypeJointNameMap[jointType];
                Joint         joint     = new Joint(pt.X, pt.Y, pt.Z, jointName);

                joints[Mapper.JointIndexMap[jointName]] = joint;
            }
        }
        public Position GetJoint(int sensor, int skeleton, JointName id)
        {
            switch (id)
            {
            case JointName.HandLeft: return(SmartAverage(this.GetRawJoint(sensor, skeleton, RawJointName.HandLeft1), this.GetRawJoint(sensor, skeleton, RawJointName.HandLeft2)));

            case JointName.HandRight: return(SmartAverage(this.GetRawJoint(sensor, skeleton, RawJointName.HandRight1), this.GetRawJoint(sensor, skeleton, RawJointName.HandRight2)));

            case JointName.Head: return(SmartAverage(this.GetRawJoint(sensor, skeleton, RawJointName.Head1), this.GetRawJoint(sensor, skeleton, RawJointName.Head2)));

            case JointName.FootLeft: return(FootAverage(this.GetRawJoint(sensor, skeleton, RawJointName.FootLeft1), this.GetRawJoint(sensor, skeleton, RawJointName.FootLeft2), this.GetRawJoint(sensor, skeleton, RawJointName.FootLeftHigh)));

            case JointName.FootRight: return(FootAverage(this.GetRawJoint(sensor, skeleton, RawJointName.FootRight1), this.GetRawJoint(sensor, skeleton, RawJointName.FootRight2), this.GetRawJoint(sensor, skeleton, RawJointName.FootRightHigh)));

            case JointName.Hip: return(SmartAverage(this.GetRawJoint(sensor, skeleton, RawJointName.Hip1), this.GetRawJoint(sensor, skeleton, RawJointName.Hip2)));

            default: return(Position.Invalid);
            }
        }
Example #5
0
    public static float LimitJointAngle(JointName jointName, float angle) // angle 제한하는 함수
    {
        switch (jointName)
        {
        case JointName.shoulder_l1:
        case JointName.shoulder_r1:
        case JointName.pan: angle = Mathf.Clamp(angle, -90f, 90f); break;

        case JointName.tilt: angle = Mathf.Clamp(angle, -30f, 15f); break;

        case JointName.shoulder_l2:
        case JointName.elbow_l: angle = Mathf.Clamp(angle, -90f, 0f); break;

        case JointName.shoulder_r2:
        case JointName.elbow_r: angle = Mathf.Clamp(angle, 0f, 90f); break;

        default: break;
        }

        return(angle);
    }
 public Joint GetJoint(JointName jointName)
 {
     return(joints[Mapper.JointIndexMap[jointName]]);
 }
 // Start is called before the first frame update
 void Start()
 {
     rigidbody   = GetComponent <Rigidbody>();
     targetJoint = (JointName)Random.Range(0, 25);
 }
Example #8
0
            /// <summary>
            /// JointName is only checked if in both objects JointName is not NULL. Everything else is checked regardless
            /// </summary>
            /// <param name="obj"></param>
            /// <returns></returns>
            public override bool Equals(object obj)
            {
                if (!(obj is BoneAnimation animation))
                {
                    return(false);
                }
                bool result = TranslationX.SequenceEqual(animation.TranslationX) &&
                              TranslationY.SequenceEqual(animation.TranslationY) &&
                              TranslationZ.SequenceEqual(animation.TranslationZ) &&
                              RotationX.SequenceEqual(animation.RotationX) &&
                              RotationY.SequenceEqual(animation.RotationY) &&
                              RotationZ.SequenceEqual(animation.RotationZ) &&
                              ScaleX.SequenceEqual(animation.ScaleX) &&
                              ScaleY.SequenceEqual(animation.ScaleY) &&
                              ScaleZ.SequenceEqual(animation.ScaleZ);

                return(result && ((JointName != null && animation.JointName != null) ? JointName.Equals(animation.JointName) : true));
            }
 public Position GetAverageJoint(JointName id)
 {
     return(Position.Invalid);
 }
 public Position GetCombinedJoint(JointName id)
 {
     return(Position.Invalid);
 }