public HandRepresentation(HandModelManager parent, Hand hand, Chirality repChirality, ModelType repType) { this.parent = parent; HandID = hand.Id; this.RepChirality = repChirality; this.RepType = repType; this.MostRecentHand = hand; }
void AutoRigMecanim() { //Assigning these here since this component gets added and used at editor time AnimatorForMapping = gameObject.GetComponent <Animator>(); HandPoolToPopulate = GameObject.FindObjectOfType <HandModelManager>(); 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; }
public void AutoRig() { HandPoolToPopulate = GameObject.FindObjectOfType <HandModelManager>(); AnimatorForMapping = gameObject.GetComponent <Animator>(); if (AnimatorForMapping != null) { if (AnimatorForMapping.isHuman == true) { AutoRigMecanim(); RiggedHand_L.StoreJointsStartPose(); RiggedHand_R.StoreJointsStartPose(); return; } else { Debug.LogWarning("The Mecanim Avatar for this asset does not contain a valid IsHuman definition. Attempting to auto map by name."); } } AutoRigByName(); }
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 <HandModelManager>(); 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); }