public HandProxy(HandPool parent, Hand hand, Chirality repChirality, ModelType repType) : base(hand.Id, hand, repChirality, repType) { this.parent = parent; this.RepChirality = repChirality; this.RepType = repType; this.MostRecentHand = hand; }
protected virtual void OnEnable() { provider = requireComponent <LeapProvider>(); pool = requireComponent <HandPool>(); provider.OnUpdateFrame += OnUpdateFrame; provider.OnFixedFrame += OnFixedFrame; }
public HandRepresentation(HandPool parent, Hand hand, Chirality repChirality, ModelType repType) { this.parent = parent; HandID = hand.Id; this.RepChirality = repChirality; this.RepType = repType; this.MostRecentHand = hand; this.PostProcessHand = new Hand(); }
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; }
private void FixModelPool() { HandPool handPool = factory as HandPool; for (int i = 0; i < handPool.ModelPool.Count; i++) { if (handPool.ModelPool[i].modelsCheckedOut.Count != 0) { for (int j = 0; j < handPool.ModelPool[i].modelsCheckedOut.Count; j++) { IHandModel model = handPool.ModelPool[i].modelsCheckedOut[j]; handPool.ModelPool[i].ReturnToGroup(model); } } } }
public HandProxy(HandPool parent, IHandModel handModel, Hand hand) : base(hand.Id) { this.parent = parent; this.handModel = handModel; // Check to see if the hand model has been initialized yet if (handModel.GetLeapHand() == null) { handModel.SetLeapHand(hand); handModel.InitHand(); } else { handModel.SetLeapHand(hand); } handModel.BeginHand(); }
public void AutoRig() { HandPoolToPopulate = GameObject.FindObjectOfType<HandPool>(); 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(); RiggedHand_L.StoreJointsStartPose(); RiggedHand_R.StoreJointsStartPose(); }
public void AutoRig() { HandPoolToPopulate = GameObject.FindObjectOfType <HandPool>(); 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(); }
// Use this for initialization void Start () { HandPool = GetComponent<HandPool>(); disableAllGroups(); CurrentGroup = 0; }
public override void UpdateHand() { //Update the spheres first updateSpheres(); GameObject[] gameObjects = gameObject.scene.GetRootGameObjects(); int i = 0; for (i = 0; i < gameObjects.Length && !gameObjects[i].ToString().StartsWith("LeapHandController"); i++) { ; } HandPool handpool = gameObjects[i].GetComponent <HandPool>(); float differenceX = palmPositionSphere.position.x - gameObjects[i].transform.position.x + shiftX; float differenceY = palmPositionSphere.position.y - gameObjects[i].transform.position.y; float differenceZ = palmPositionSphere.position.z - gameObjects[i].transform.position.z; Vector3 vec = new Vector3(0, 0, 0); if (handpool.lockX) { vec.x = -differenceX; } else { vec.x = differenceX * 2; } if (handpool.lockY) { vec.y = -differenceY; } else { vec.y = differenceY * 2; } if (handpool.lockZ) { vec.z = -differenceZ; } else { vec.z = differenceZ * 2; } for (i = 0; i < _cylinderTransforms.Count; i++) { Transform cylinder = _cylinderTransforms[i]; cylinder.Translate(vec); } for (i = 0; i < _serializedTransforms.Count; i++) { Transform sphere = _serializedTransforms[i]; sphere.Translate(vec); } updateCylinders(); }
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 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; }
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 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; }