コード例 #1
0
        public override void UpdateSkeletonTransforms()
        {
            Vector3[]    bonePositions = GetBonePositions();
            Quaternion[] boneRotations = GetBoneRotations();

            for (int boneIndex = 0; boneIndex < bones.Length; boneIndex++)
            {
                if (bones[boneIndex] == null)
                {
                    continue;
                }

                float skeletonBlend = 1;

                // get proper skeletal blend value
                SteamVR_Skeleton_FingerIndexEnum finger = GetFingerForBone(boneIndex);

                switch (finger)
                {
                case SteamVR_Skeleton_FingerIndexEnum.thumb:
                    skeletonBlend = thumbSkeletonBlend;
                    break;

                case SteamVR_Skeleton_FingerIndexEnum.index:
                    skeletonBlend = indexSkeletonBlend;
                    break;

                case SteamVR_Skeleton_FingerIndexEnum.middle:
                    skeletonBlend = middleSkeletonBlend;
                    break;

                case SteamVR_Skeleton_FingerIndexEnum.ring:
                    skeletonBlend = ringSkeletonBlend;
                    break;

                case SteamVR_Skeleton_FingerIndexEnum.pinky:
                    skeletonBlend = pinkySkeletonBlend;
                    break;

                default:
                    break;
                }

                if (skeletonBlend >= 1)
                {
                    SetBonePosition(boneIndex, bonePositions[boneIndex]);
                    SetBoneRotation(boneIndex, boneRotations[boneIndex]);
                }
                else
                {
                    SetBonePosition(boneIndex, Vector3.Lerp(bones[boneIndex].localPosition, bonePositions[boneIndex], skeletonBlend));
                    SetBoneRotation(boneIndex, Quaternion.Lerp(bones[boneIndex].localRotation, boneRotations[boneIndex], skeletonBlend));
                }
            }
        }
コード例 #2
0
        float GetFingerCurl(SteamVR_Skeleton_FingerIndexEnum finger)
        {
            switch (finger)
            {
            case SteamVR_Skeleton_FingerIndexEnum.index:
                return(skeletonAction.GetFingerCurl(finger) * indexMax);

            case SteamVR_Skeleton_FingerIndexEnum.middle:
                return(skeletonAction.GetFingerCurl(finger) * middleMax);

            case SteamVR_Skeleton_FingerIndexEnum.ring:
                return(skeletonAction.GetFingerCurl(finger) * ringMax);

            case SteamVR_Skeleton_FingerIndexEnum.pinky:
                return(skeletonAction.GetFingerCurl(finger) * pinkyMax);

            case SteamVR_Skeleton_FingerIndexEnum.thumb:
                return(skeletonAction.GetFingerCurl(finger) * thumbMax);
            }
            ;
            return(skeletonAction.GetFingerCurl(finger));
        }