void AutoRigMecanim()
        {
            //Assigning these here since this component gets added and used at editor time
            AnimatorForMapping = gameObject.GetComponent <Animator>();
            HandPoolToPopulate = GameObject.FindObjectOfType <HandPool>();
            Reset();

            //Find hands and assign RiggedHands
            Transform Hand_L = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftHand);

            if (Hand_L.GetComponent <RiggedHand>())
            {
                RiggedHand_L = Hand_L.GetComponent <RiggedHand>();
            }
            else
            {
                RiggedHand_L = Hand_L.gameObject.AddComponent <RiggedHand>();
            }
            HandTransitionBehavior_L       = Hand_L.gameObject.AddComponent <HandDrop>();
            RiggedHand_L.Handedness        = Chirality.Left;
            RiggedHand_L.SetEditorLeapPose = false;

            Transform Hand_R = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightHand);

            if (Hand_R.GetComponent <RiggedHand>())
            {
                RiggedHand_R = Hand_R.GetComponent <RiggedHand>();
            }
            else
            {
                RiggedHand_R = Hand_R.gameObject.AddComponent <RiggedHand>();
            }
            HandTransitionBehavior_R       = Hand_R.gameObject.AddComponent <HandDrop>();
            RiggedHand_R.Handedness        = Chirality.Right;
            RiggedHand_R.SetEditorLeapPose = false;

            //Find palms and assign to RiggedHands
            RiggedHand_L.palm           = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftHand);
            RiggedHand_R.palm           = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightHand);
            RiggedHand_R.UseMetaCarpals = UseMetaCarpals;
            RiggedHand_L.UseMetaCarpals = UseMetaCarpals;

            findAndAssignRiggedFingers(UseMetaCarpals);

            RiggedHand_L.AutoRigRiggedHand(RiggedHand_L.palm, RiggedFinger_L_Pinky.transform, RiggedFinger_L_Index.transform);
            RiggedHand_R.AutoRigRiggedHand(RiggedHand_R.palm, RiggedFinger_R_Pinky.transform, RiggedFinger_R_Index.transform);
            if (ModelGroupName == "" || ModelGroupName != null)
            {
                ModelGroupName = transform.name;
            }
            HandPoolToPopulate.AddNewGroup(ModelGroupName, RiggedHand_L, RiggedHand_R);

            modelFingerPointing_L = RiggedHand_L.modelFingerPointing;
            modelPalmFacing_L     = RiggedHand_L.modelPalmFacing;
            modelFingerPointing_R = RiggedHand_R.modelFingerPointing;
            modelPalmFacing_R     = RiggedHand_R.modelPalmFacing;
        }
        void AutoRigByName()
        {
            List <string> LeftHandStrings = new List <string> {
                "left"
            };
            List <string> RightHandStrings = new List <string> {
                "right"
            };

            //Assigning these here since this component gets added and used at editor time
            HandPoolToPopulate = GameObject.FindObjectOfType <HandPool>();
            Reset();

            //Find hands and assigns RiggedHands
            Transform Hand_L = null;

            foreach (Transform t in transform)
            {
                if (LeftHandStrings.Any(w => t.name.ToLower().Contains(w)))
                {
                    Hand_L = t;
                }
            }
            if (Hand_L != null)
            {
                RiggedHand_L                   = Hand_L.gameObject.AddComponent <RiggedHand>();
                HandTransitionBehavior_L       = Hand_L.gameObject.AddComponent <HandEnableDisable>();
                RiggedHand_L.Handedness        = Chirality.Left;
                RiggedHand_L.SetEditorLeapPose = false;
                RiggedHand_L.UseMetaCarpals    = UseMetaCarpals;
                RiggedHand_L.SetupRiggedHand();

                RiggedFinger_L_Thumb = (RiggedFinger)RiggedHand_L.fingers[0];
                RiggedFinger_L_Index = (RiggedFinger)RiggedHand_L.fingers[1];
                RiggedFinger_L_Mid   = (RiggedFinger)RiggedHand_L.fingers[2];
                RiggedFinger_L_Ring  = (RiggedFinger)RiggedHand_L.fingers[3];
                RiggedFinger_L_Pinky = (RiggedFinger)RiggedHand_L.fingers[4];

                modelFingerPointing_L = RiggedHand_L.modelFingerPointing;
                modelPalmFacing_L     = RiggedHand_L.modelPalmFacing;

                RiggedHand_L.StoreJointsStartPose();
            }
            Transform Hand_R = null;

            foreach (Transform t in transform)
            {
                if (RightHandStrings.Any(w => t.name.ToLower().Contains(w)))
                {
                    Hand_R = t;
                }
            }
            if (Hand_R != null)
            {
                RiggedHand_R                   = Hand_R.gameObject.AddComponent <RiggedHand>();
                HandTransitionBehavior_R       = Hand_R.gameObject.AddComponent <HandEnableDisable>();
                RiggedHand_R.Handedness        = Chirality.Right;
                RiggedHand_R.SetEditorLeapPose = false;
                RiggedHand_R.UseMetaCarpals    = UseMetaCarpals;
                RiggedHand_R.SetupRiggedHand();

                RiggedFinger_R_Thumb = (RiggedFinger)RiggedHand_R.fingers[0];
                RiggedFinger_R_Index = (RiggedFinger)RiggedHand_R.fingers[1];
                RiggedFinger_R_Mid   = (RiggedFinger)RiggedHand_R.fingers[2];
                RiggedFinger_R_Ring  = (RiggedFinger)RiggedHand_R.fingers[3];
                RiggedFinger_R_Pinky = (RiggedFinger)RiggedHand_R.fingers[4];

                modelFingerPointing_R = RiggedHand_R.modelFingerPointing;
                modelPalmFacing_R     = RiggedHand_R.modelPalmFacing;

                RiggedHand_R.StoreJointsStartPose();
            }
            //Find palms and assign to RiggedHands
            //RiggedHand_L.palm = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftHand);
            //RiggedHand_R.palm = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightHand);

            if (ModelGroupName == "" || ModelGroupName != null)
            {
                ModelGroupName = transform.name;
            }
            HandPoolToPopulate.AddNewGroup(ModelGroupName, RiggedHand_L, RiggedHand_R);
        }
    void AutoRigMecanim() {
      //Assigning these here since this component gets added and used at editor time
      AnimatorForMapping = gameObject.GetComponent<Animator>();
      HandPoolToPopulate = GameObject.FindObjectOfType<HandPool>();
      Reset();

      //Find hands and assign RiggedHands
      Transform Hand_L = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftHand);
      if (Hand_L.GetComponent<RiggedHand>()) {
        RiggedHand_L = Hand_L.GetComponent<RiggedHand>();
      }
      else RiggedHand_L = Hand_L.gameObject.AddComponent<RiggedHand>();
      HandTransitionBehavior_L =Hand_L.gameObject.AddComponent<HandDrop>();
      RiggedHand_L.Handedness = Chirality.Left;
      RiggedHand_L.SetEditorLeapPose = false;

      Transform Hand_R = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightHand);
      if (Hand_R.GetComponent<RiggedHand>()) {
        RiggedHand_R = Hand_R.GetComponent<RiggedHand>();
      }
      else RiggedHand_R = Hand_R.gameObject.AddComponent<RiggedHand>();
      HandTransitionBehavior_R = Hand_R.gameObject.AddComponent<HandDrop>();
      RiggedHand_R.Handedness = Chirality.Right;
      RiggedHand_R.SetEditorLeapPose = false;

      //Find palms and assign to RiggedHands
      RiggedHand_L.palm = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftHand);
      RiggedHand_R.palm = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightHand);

      //Find Fingers and assign RiggedFingers
      RiggedFinger_L_Thumb = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftThumbProximal).gameObject.AddComponent<RiggedFinger>();
      RiggedFinger_L_Thumb.fingerType = Finger.FingerType.TYPE_THUMB;
      RiggedFinger_L_Index = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftIndexProximal).gameObject.AddComponent<RiggedFinger>();
      RiggedFinger_L_Index.fingerType = Finger.FingerType.TYPE_INDEX;
      RiggedFinger_L_Mid = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftMiddleProximal).gameObject.AddComponent<RiggedFinger>();
      RiggedFinger_L_Mid.fingerType = Finger.FingerType.TYPE_MIDDLE;
      RiggedFinger_L_Ring = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftRingProximal).gameObject.AddComponent<RiggedFinger>();
      RiggedFinger_L_Ring.fingerType = Finger.FingerType.TYPE_RING;
      RiggedFinger_L_Pinky = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftLittleProximal).gameObject.AddComponent<RiggedFinger>();
      RiggedFinger_L_Pinky.fingerType = Finger.FingerType.TYPE_PINKY;
      RiggedFinger_R_Thumb = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightThumbProximal).gameObject.AddComponent<RiggedFinger>();
      RiggedFinger_R_Thumb.fingerType = Finger.FingerType.TYPE_THUMB;
      RiggedFinger_R_Index = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightIndexProximal).gameObject.AddComponent<RiggedFinger>();
      RiggedFinger_R_Index.fingerType = Finger.FingerType.TYPE_INDEX;
      RiggedFinger_R_Mid = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightMiddleProximal).gameObject.AddComponent<RiggedFinger>();
      RiggedFinger_R_Mid.fingerType = Finger.FingerType.TYPE_MIDDLE;
      RiggedFinger_R_Ring = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightRingProximal).gameObject.AddComponent<RiggedFinger>();
      RiggedFinger_R_Ring.fingerType = Finger.FingerType.TYPE_RING;
      RiggedFinger_R_Pinky = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightLittleProximal).gameObject.AddComponent<RiggedFinger>();
      RiggedFinger_R_Pinky.fingerType = Finger.FingerType.TYPE_PINKY;

      RiggedHand_L.AutoRigRiggedHand(RiggedHand_L.palm, RiggedFinger_L_Pinky.transform, RiggedFinger_L_Index.transform);
      RiggedHand_R.AutoRigRiggedHand(RiggedHand_R.palm, RiggedFinger_R_Pinky.transform, RiggedFinger_R_Index.transform);
      if (ModelGroupName == "" || ModelGroupName != null) {
        ModelGroupName = transform.name;
      }
      HandPoolToPopulate.AddNewGroup(ModelGroupName, RiggedHand_L, RiggedHand_R);

      modelFingerPointing_L = RiggedHand_L.modelFingerPointing;
      modelPalmFacing_L = RiggedHand_L.modelPalmFacing;
      modelFingerPointing_R = RiggedHand_R.modelFingerPointing;
      modelPalmFacing_R = RiggedHand_R.modelPalmFacing;
    }
    void AutoRigByName() {
      List<string> LeftHandStrings = new List<string> { "left", "_l" };
      List<string> RightHandStrings = new List<string> { "right", "_r" };

      //Assigning these here since this component gets added and used at editor time
      HandPoolToPopulate = GameObject.FindObjectOfType<HandPool>();
      Reset();

      //Find hands and assigns RiggedHands
      Transform Hand_L = null;
      foreach (Transform t in transform) {
        if (LeftHandStrings.Any(w => t.name.ToLower().Contains(w))) {
          Hand_L = t;
        }
      }
      RiggedHand_L = Hand_L.gameObject.AddComponent<RiggedHand>();
      HandTransitionBehavior_L = Hand_L.gameObject.AddComponent<HandEnableDisable>();
      RiggedHand_L.Handedness = Chirality.Left;
      RiggedHand_L.SetEditorLeapPose = false;
      RiggedHand_L.UseMetaCarpals = UseMetaCarpals;

      Transform Hand_R = null;
      foreach (Transform t in transform) {
        if (RightHandStrings.Any(w => t.name.ToLower().Contains(w))) {
          Hand_R = t;
        }
      }
      RiggedHand_R = Hand_R.gameObject.AddComponent<RiggedHand>();
      HandTransitionBehavior_R = Hand_R.gameObject.AddComponent<HandEnableDisable>();
      RiggedHand_R.Handedness = Chirality.Right;
      RiggedHand_R.SetEditorLeapPose = false;
      RiggedHand_R.UseMetaCarpals = UseMetaCarpals;

      //Find palms and assign to RiggedHands
      //RiggedHand_L.palm = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftHand);
      //RiggedHand_R.palm = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightHand);
      RiggedHand_L.SetupRiggedHand();
      RiggedHand_R.SetupRiggedHand();

      if (ModelGroupName == "" || ModelGroupName != null) {
        ModelGroupName = transform.name;
      }
      HandPoolToPopulate.AddNewGroup(ModelGroupName, RiggedHand_L, RiggedHand_R);

      RiggedFinger_L_Thumb = (RiggedFinger)RiggedHand_L.fingers[0];
      RiggedFinger_L_Index = (RiggedFinger)RiggedHand_L.fingers[1];
      RiggedFinger_L_Mid = (RiggedFinger)RiggedHand_L.fingers[2];
      RiggedFinger_L_Ring = (RiggedFinger)RiggedHand_L.fingers[3];
      RiggedFinger_L_Pinky = (RiggedFinger)RiggedHand_L.fingers[4];
      RiggedFinger_R_Thumb = (RiggedFinger)RiggedHand_R.fingers[0];
      RiggedFinger_R_Index = (RiggedFinger)RiggedHand_R.fingers[1];
      RiggedFinger_R_Mid = (RiggedFinger)RiggedHand_R.fingers[2];
      RiggedFinger_R_Ring = (RiggedFinger)RiggedHand_R.fingers[3];
      RiggedFinger_R_Pinky = (RiggedFinger)RiggedHand_R.fingers[4];

      modelFingerPointing_L = RiggedHand_L.modelFingerPointing;
      modelPalmFacing_L = RiggedHand_L.modelPalmFacing;
      modelFingerPointing_R = RiggedHand_R.modelFingerPointing;
      modelPalmFacing_R = RiggedHand_R.modelPalmFacing;
    }
Beispiel #5
0
        void AutoRigMecanim()
        {
            //Assigning these here since this component gets added and used at editor time
            AnimatorForMapping = gameObject.GetComponent <Animator>();
            HandPoolToPopulate = GameObject.FindObjectOfType <HandPool>();
            Reset();

            //Find hands and assign RiggedHands
            Transform Hand_L = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftHand);

            if (Hand_L.GetComponent <RiggedHand>())
            {
                RiggedHand_L = Hand_L.GetComponent <RiggedHand>();
            }
            else
            {
                RiggedHand_L = Hand_L.gameObject.AddComponent <RiggedHand>();
            }
            HandTransitionBehavior_L       = Hand_L.gameObject.AddComponent <HandDrop>();
            RiggedHand_L.Handedness        = Chirality.Left;
            RiggedHand_L.SetEditorLeapPose = false;

            Transform Hand_R = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightHand);

            if (Hand_R.GetComponent <RiggedHand>())
            {
                RiggedHand_R = Hand_R.GetComponent <RiggedHand>();
            }
            else
            {
                RiggedHand_R = Hand_R.gameObject.AddComponent <RiggedHand>();
            }
            HandTransitionBehavior_R       = Hand_R.gameObject.AddComponent <HandDrop>();
            RiggedHand_R.Handedness        = Chirality.Right;
            RiggedHand_R.SetEditorLeapPose = false;

            //Find palms and assign to RiggedHands
            RiggedHand_L.palm = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftHand);
            RiggedHand_R.palm = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightHand);

            //Find Fingers and assign RiggedFingers
            RiggedFinger_L_Thumb            = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftThumbProximal).gameObject.AddComponent <RiggedFinger>();
            RiggedFinger_L_Thumb.fingerType = Finger.FingerType.TYPE_THUMB;
            RiggedFinger_L_Index            = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftIndexProximal).gameObject.AddComponent <RiggedFinger>();
            RiggedFinger_L_Index.fingerType = Finger.FingerType.TYPE_INDEX;
            RiggedFinger_L_Mid              = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftMiddleProximal).gameObject.AddComponent <RiggedFinger>();
            RiggedFinger_L_Mid.fingerType   = Finger.FingerType.TYPE_MIDDLE;
            RiggedFinger_L_Ring             = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftRingProximal).gameObject.AddComponent <RiggedFinger>();
            RiggedFinger_L_Ring.fingerType  = Finger.FingerType.TYPE_RING;
            RiggedFinger_L_Pinky            = AnimatorForMapping.GetBoneTransform(HumanBodyBones.LeftLittleProximal).gameObject.AddComponent <RiggedFinger>();
            RiggedFinger_L_Pinky.fingerType = Finger.FingerType.TYPE_PINKY;
            RiggedFinger_R_Thumb            = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightThumbProximal).gameObject.AddComponent <RiggedFinger>();
            RiggedFinger_R_Thumb.fingerType = Finger.FingerType.TYPE_THUMB;
            RiggedFinger_R_Index            = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightIndexProximal).gameObject.AddComponent <RiggedFinger>();
            RiggedFinger_R_Index.fingerType = Finger.FingerType.TYPE_INDEX;
            RiggedFinger_R_Mid              = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightMiddleProximal).gameObject.AddComponent <RiggedFinger>();
            RiggedFinger_R_Mid.fingerType   = Finger.FingerType.TYPE_MIDDLE;
            RiggedFinger_R_Ring             = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightRingProximal).gameObject.AddComponent <RiggedFinger>();
            RiggedFinger_R_Ring.fingerType  = Finger.FingerType.TYPE_RING;
            RiggedFinger_R_Pinky            = AnimatorForMapping.GetBoneTransform(HumanBodyBones.RightLittleProximal).gameObject.AddComponent <RiggedFinger>();
            RiggedFinger_R_Pinky.fingerType = Finger.FingerType.TYPE_PINKY;

            RiggedHand_L.AutoRigRiggedHand(RiggedHand_L.palm, RiggedFinger_L_Pinky.transform, RiggedFinger_L_Index.transform);
            RiggedHand_R.AutoRigRiggedHand(RiggedHand_R.palm, RiggedFinger_R_Pinky.transform, RiggedFinger_R_Index.transform);
            if (ModelGroupName == "" || ModelGroupName != null)
            {
                ModelGroupName = transform.name;
            }
            HandPoolToPopulate.AddNewGroup(ModelGroupName, RiggedHand_L, RiggedHand_R);

            modelFingerPointing_L = RiggedHand_L.modelFingerPointing;
            modelPalmFacing_L     = RiggedHand_L.modelPalmFacing;
            modelFingerPointing_R = RiggedHand_R.modelFingerPointing;
            modelPalmFacing_R     = RiggedHand_R.modelPalmFacing;
        }