Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 public static FingerGestureField computePointGestureField(HandRigData rig)
 {
     // TODO:
     return(null);
 }