protected virtual void UpdateFingers(ArmSensor armSensor)
 {
     for (int i = 0; i < (int)Finger.Count; i++)
     {
         UpdateFinger(armSensor.fingers[i], i);
     }
 }
 private void UpdateArmDirect(ArmSensor armSensor)
 {
     UpdateShoulder(armSensor);
     UpdateUpperArm(armSensor);
     UpdateForearm(armSensor);
     UpdateHand(armSensor);
 }
Beispiel #3
0
 protected override void UpdateFingers(ArmSensor armSensor)
 {
     for (int i = 0; i < (int)Finger.Count; i++)
     {
         handTarget.SetFingerCurl((Finger)i, armSensor.fingers[i].curl);
     }
 }
        public float ArmConfidence(ArmSensor armSensor)
        {
            float armOrientationsConfidence =
                //armSensor.shoulder.confidence.rotation *
                armSensor.upperArm.confidence.rotation *
                armSensor.forearm.confidence.rotation;

            return(armOrientationsConfidence);
        }
Beispiel #5
0
        protected override void UpdateHand(ArmSensor armSensor)
        {
            armSensor.hand.position = Target.ToVector(Kinect2Tracker.SmoothPosition(lastHandPosition, armSensor.hand.position));
            armSensor.hand.rotation = Target.ToRotation(Kinect2Tracker.SmoothRotation(lastHandRotation, armSensor.hand.rotation));
            base.UpdateHand(armSensor);

            lastHandPosition = handTarget.hand.target.transform.position;
            lastHandRotation = handTarget.hand.target.transform.rotation;
        }
Beispiel #6
0
        protected override void UpdateForearm(ArmSensor armSensor)
        {
            armSensor.forearm.position = Target.ToVector(Kinect2Tracker.SmoothPosition(lastForearmPosition, armSensor.forearm.position));
            armSensor.forearm.rotation = Target.ToRotation(Kinect2Tracker.SmoothRotation(lastForearmRotation, armSensor.forearm.rotation));
            base.UpdateForearm(armSensor);

            lastForearmPosition = handTarget.forearm.target.transform.position;
            lastForearmRotation = handTarget.forearm.target.transform.rotation;
        }
        protected void UpdateArm(ArmSensor armSensor)
        {
            float armConfidence = ArmConfidence(armSensor);

            if (handTarget.hand.target.confidence.position > armConfidence)
            {
                UpdateArmIK(armSensor);
            }
            else
            {
                UpdateArmDirect(armSensor);
            }
        }
        protected void UpdateShoulder(ArmSensor armSensor)
        {
            if (handTarget.shoulder.target.transform == null)
            {
                return;
            }

            if (armSensor.shoulder.confidence.position > 0)
            {
                handTarget.shoulder.target.transform.position = Target.ToVector3(armSensor.shoulder.position);
            }
            if (armSensor.shoulder.confidence.rotation > 0)
            {
                handTarget.shoulder.target.transform.rotation = Target.ToQuaternion(armSensor.shoulder.rotation);
            }
            handTarget.shoulder.target.confidence = armSensor.upperArm.confidence;
        }
 protected virtual void UpdateHandTargetTransform(ArmSensor armSensor)
 {
     if (handTarget.hand.target.transform != null)
     {
         if (armSensor.hand.confidence.rotation > 0 && armSensor.hand.confidence.rotation >= handTarget.hand.target.confidence.rotation)
         {
             handTarget.hand.target.transform.rotation  = sensorTransform.rotation * sensor2TargetRotation;
             handTarget.hand.target.confidence.rotation = armSensor.hand.confidence.rotation;
         }
         if (armSensor.hand.confidence.position > 0 && armSensor.hand.confidence.position >= handTarget.hand.target.confidence.position)
         {
             handTarget.hand.target.transform.position  = sensorTransform.position + handTarget.hand.target.transform.rotation * sensor2TargetPosition;
             handTarget.hand.target.confidence.position = armSensor.hand.confidence.position;
         }
         else if (handTarget.hand.target.confidence.position == 0)   // Hmm. I could insert the arm model here when confidence.rotation > 0.5F for example!
         {
             handTarget.hand.target.transform.position = handTarget.forearm.target.transform.position + handTarget.forearm.target.transform.rotation * handTarget.outward * handTarget.forearm.bone.length;
         }
     }
 }
        protected virtual void UpdateForearm(ArmSensor armSensor)
        {
            if (handTarget.forearm.target.transform != null)
            {
                if (armSensor.forearm.confidence.position > 0)
                {
                    handTarget.forearm.target.transform.position = Target.ToVector3(armSensor.forearm.position);
                }
                else
                {
                    handTarget.forearm.target.transform.position = handTarget.upperArm.target.transform.position + handTarget.upperArm.target.transform.rotation * handTarget.outward * handTarget.upperArm.bone.length;
                }

                if (armSensor.forearm.confidence.rotation > 0)
                {
                    handTarget.forearm.target.transform.rotation = Target.ToQuaternion(armSensor.forearm.rotation);
                }

                handTarget.forearm.target.confidence = armSensor.forearm.confidence;
            }
        }
        private void UpdateArmIK(ArmSensor armSensor)
        {
            Vector3    handTargetPosition = handTarget.hand.target.transform.position;
            Quaternion handTargetRotation = handTarget.hand.target.transform.rotation;

            Vector3 forearmUpAxis = HumanoidTarget.ToQuaternion(armSensor.upperArm.rotation) * Vector3.up;

            if (handTarget.upperArm.target.confidence.rotation < 0.9F)
            {
                handTarget.upperArm.target.transform.rotation = ArmMovements.UpperArmRotationIK(handTarget.upperArm.target.transform.position, handTargetPosition, forearmUpAxis, handTarget.upperArm.target.length, handTarget.forearm.target.length, handTarget.isLeft);
                handTarget.upperArm.target.confidence         = armSensor.upperArm.confidence;
            }

            if (handTarget.forearm.target.confidence.rotation < 0.9F)
            {
                handTarget.forearm.target.transform.rotation = ArmMovements.ForearmRotationIK(handTarget.forearm.target.transform.position, handTargetPosition, forearmUpAxis, handTarget.isLeft);
                handTarget.forearm.target.confidence         = armSensor.forearm.confidence;
            }

            handTarget.hand.target.transform.rotation  = handTargetRotation;
            handTarget.hand.target.confidence.rotation = armSensor.hand.confidence.rotation;
        }