public static Vector3 computeGesturePosition(HandRigData rig, FingerGesture gesture) { FingerTipCalculator calculator = rig.Calculator; switch (gesture.finger) { case FingerIndex.THUMB: calculator.computeThumbTip(gesture.angles); break; case FingerIndex.INDEX: calculator.computeIndexTip(gesture.angles); break; case FingerIndex.MIDDLE: calculator.computeMiddleTip(gesture.angles); break; case FingerIndex.RING: calculator.computeRingTip(gesture.angles); break; case FingerIndex.PINKY: calculator.computePinkyTip(gesture.angles); break; } return(Vector3.zero); }
public FingerTipCalculator(HandRigData rig) { PositionThumb0 = rig.Positions[0]; PositionThumb1 = rig.Positions[1]; PositionThumb2 = rig.Positions[2]; PositionThumbTip = rig.Positions[3]; PositionIndex0 = rig.Positions[4]; PositionIndex1 = rig.Positions[5]; PositionIndex2 = rig.Positions[6]; PositionIndex3 = rig.Positions[7]; PositionIndexTip = rig.Positions[8]; PositionMiddle0 = rig.Positions[9]; PositionMiddle1 = rig.Positions[10]; PositionMiddle2 = rig.Positions[11]; PositionMiddle3 = rig.Positions[12]; PositionMiddleTip = rig.Positions[13]; PositionRing0 = rig.Positions[14]; PositionRing1 = rig.Positions[15]; PositionRing2 = rig.Positions[16]; PositionRing3 = rig.Positions[17]; PositionRingTip = rig.Positions[18]; PositionPinky0 = rig.Positions[19]; PositionPinky1 = rig.Positions[20]; PositionPinky2 = rig.Positions[21]; PositionPinky3 = rig.Positions[22]; PositionPinkyTip = rig.Positions[23]; /*RotationThumb1 = Quaternion.AngleAxis(rig.FixedAngles[1], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[0], Vector3.up); * RotationThumb2 = Quaternion.AngleAxis(rig.FixedAngles[3], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[2], Vector3.up); * * RotationIndex0 = Quaternion.AngleAxis(rig.FixedAngles[5], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[4], Vector3.up); * RotationIndex1 = Quaternion.AngleAxis(rig.FixedAngles[6], Vector3.forward); * RotationIndex2 = Quaternion.AngleAxis(rig.FixedAngles[8], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[7], Vector3.up); * RotationIndex3 = Quaternion.AngleAxis(rig.FixedAngles[10], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[9], Vector3.up); * * RotationMiddle0 = Quaternion.AngleAxis(rig.FixedAngles[12], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[11], Vector3.up); * RotationMiddle1 = Quaternion.AngleAxis(rig.FixedAngles[13], Vector3.forward); * RotationMiddle2 = Quaternion.AngleAxis(rig.FixedAngles[15], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[14], Vector3.up); * RotationMiddle3 = Quaternion.AngleAxis(rig.FixedAngles[17], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[16], Vector3.up); * * RotationRing0 = Quaternion.AngleAxis(rig.FixedAngles[19], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[18], Vector3.up); * RotationRing1 = Quaternion.AngleAxis(rig.FixedAngles[20], Vector3.forward); * RotationRing2 = Quaternion.AngleAxis(rig.FixedAngles[22], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[21], Vector3.up); * RotationRing3 = Quaternion.AngleAxis(rig.FixedAngles[24], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[23], Vector3.up); * * RotationPinky0 = Quaternion.AngleAxis(rig.FixedAngles[26], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[25], Vector3.up); * RotationPinky1 = Quaternion.AngleAxis(rig.FixedAngles[27], Vector3.forward); * RotationPinky2 = Quaternion.AngleAxis(rig.FixedAngles[29], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[28], Vector3.up); * RotationPinky3 = Quaternion.AngleAxis(rig.FixedAngles[31], Vector3.forward) * Quaternion.AngleAxis(rig.FixedAngles[30], Vector3.up);*/ RotationThumb1 = Quaternion.AngleAxis(rig.FixedAngles[0], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[1], Vector3.forward); RotationThumb2 = Quaternion.AngleAxis(rig.FixedAngles[2], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[3], Vector3.forward); RotationIndex0 = Quaternion.AngleAxis(rig.FixedAngles[4], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[5], Vector3.forward); RotationIndex1 = Quaternion.AngleAxis(rig.FixedAngles[6], Vector3.forward); RotationIndex2 = Quaternion.AngleAxis(rig.FixedAngles[7], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[8], Vector3.forward); RotationIndex3 = Quaternion.AngleAxis(rig.FixedAngles[9], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[10], Vector3.forward); RotationMiddle0 = Quaternion.AngleAxis(rig.FixedAngles[11], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[12], Vector3.forward); RotationMiddle1 = Quaternion.AngleAxis(rig.FixedAngles[13], Vector3.forward); RotationMiddle2 = Quaternion.AngleAxis(rig.FixedAngles[14], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[15], Vector3.forward); RotationMiddle3 = Quaternion.AngleAxis(rig.FixedAngles[16], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[17], Vector3.forward); RotationRing0 = Quaternion.AngleAxis(rig.FixedAngles[18], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[19], Vector3.forward); RotationRing1 = Quaternion.AngleAxis(rig.FixedAngles[20], Vector3.forward); RotationRing2 = Quaternion.AngleAxis(rig.FixedAngles[21], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[22], Vector3.forward); RotationRing3 = Quaternion.AngleAxis(rig.FixedAngles[23], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[24], Vector3.forward); RotationPinky0 = Quaternion.AngleAxis(rig.FixedAngles[25], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[26], Vector3.forward); RotationPinky1 = Quaternion.AngleAxis(rig.FixedAngles[27], Vector3.forward); RotationPinky2 = Quaternion.AngleAxis(rig.FixedAngles[28], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[29], Vector3.forward); RotationPinky3 = Quaternion.AngleAxis(rig.FixedAngles[30], Vector3.up) * Quaternion.AngleAxis(rig.FixedAngles[31], Vector3.forward); }
public static FingerGestureField computePointGestureField(HandRigData rig) { // TODO: return(null); }