Exemple #1
0
    public void SetPose(Transform root, Dictionary <string, BoneTransformData> boneDictionary)
    {
        if (root == null)
        {
            return;
        }

        foreach (string dictKey in boneDictionary.Keys)
        {
            string searchKey = dictKey;
            if (dictKey == "b_r_wrist")
            {
                Debug.Log("Setting wrist to hand");
                searchKey = "b_r_hand";
            }
            Transform child = root.FindChildRecursive(searchKey);
            if (child != null)
            {
                BoneTransformData transformData = null;
                boneDictionary.TryGetValue(dictKey, out transformData);

                if (child.name.Contains("ring") || child.name.Contains("pinky") || child.name.Contains("index") || child.name.Contains("middle") || child.name.Contains("thumb"))
                {
                    child.transform.localPosition = transformData.Position;

                    child.transform.localRotation = transformData.Rotation;
                }
                //child.transform.localScale = transformData.Scale;
            }
        }
    }
Exemple #2
0
    public Dictionary <string, BoneTransformData> ReadPose(OVRHandPoserHand hand, Transform overrideTransformRoot = null, Dictionary <string, BoneTransformData> currDictionary = null)
    {
        Dictionary <string, BoneTransformData> outDictionary = (currDictionary != null ? currDictionary : new Dictionary <string, BoneTransformData>());
        Transform transformRoot = (overrideTransformRoot ? overrideTransformRoot : hand.previewInWorld.transform);

        for (int i = 0; i < transformRoot.childCount; i++)
        {
            //go into child and add to my point
            BoneTransformData newBoneTransform      = new BoneTransformData();
            Transform         existingBoneTransform = transformRoot.GetChild(i);
            newBoneTransform.Rotation = existingBoneTransform.localRotation;
            newBoneTransform.Position = existingBoneTransform.localPosition;
            newBoneTransform.Scale    = existingBoneTransform.localScale;

            if (!outDictionary.ContainsKey(existingBoneTransform.name))
            {
                outDictionary.Add(existingBoneTransform.name, newBoneTransform);
            }

            ReadPose(hand, transformRoot.GetChild(i), outDictionary);
        }
        ;

        return(outDictionary);
    }
Exemple #3
0
    public Dictionary <string, BoneTransformData> FlipDictionary(Dictionary <string, BoneTransformData> boneDictionary)
    {
        Dictionary <string, BoneTransformData> newDictionary = new Dictionary <string, BoneTransformData>();

        foreach (string dictKey in boneDictionary.Keys)
        {
            BoneTransformData data = null;
            boneDictionary.TryGetValue(dictKey, out data);

            string newDictKey = dictKey.Replace("l_", "r_");

            Vector3 mirroredEulers = data.Rotation.eulerAngles;
            //mirroredEulers.x = -mirroredEulers.x;
            mirroredEulers.y = -mirroredEulers.y;
            mirroredEulers.z = -mirroredEulers.z;

            //data.Rotation = Quaternion.Euler(mirroredEulers);

            data.Position = new Vector3(-data.Position.x, data.Position.y, -data.Position.z);

            newDictionary.Add(newDictKey, data);
        }

        return(newDictionary);
    }