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); }
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); }
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; }
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; }