void LateUpdate() { Core.Pose pose = null; if (MotionProvider) { var component = MotionProvider.GetComponent <CMUMotionPlayer>(); if (component) { pose = component.GetCurrentPose(); } } if (pose != null) { if (UseFK) { moveSkeleton(pose.FK()); } else { moveSkeleton(pose.Positions); } // drawSkeletonLines(pose.Positions, new Vector3(1.5f, 0, 0)); } }
void LateUpdate() { // Get pose Core.Pose pose = null; if (MotionProvider) { var component = MotionProvider.GetComponent <CMUMotionPlayer>(); if (component) { pose = component.GetCurrentPose(); } } // Retarget if (pose != null) { // Retarget positions if (RetargetTranslation) { bones_[0].transform.position = (pose.Positions[2] + pose.Positions[3]) * 0.5f + gameObject.transform.position; } if (EnableRetargetting) { // Retarget rotations for (int i = 0; i < 13; i++) { int boneIndex = i; if (i == (int)Core.BoneType.Trans) { // Use spine as root of avatar boneIndex = (int)Core.BoneType.Spine; } if (i == (int)Core.BoneType.Spine) { // Skip spine continue; } if (i == (int)Core.BoneType.RightShoulder || i == (int)Core.BoneType.LeftShoulder) { // Skip shoulders because bone hierarchy is not same as Core.Pose continue; } bones_[i].transform.rotation = pose.Rotations[boneIndex] * Quaternion.Euler(correctionRightEulers[i]); } } } }
void LateUpdate() { Core.Pose pose = null; if (MotionProvider) { var component = MotionProvider.GetComponent <CMUMotionPlayer>(); if (component) { pose = component.GetCurrentPose(); } } if (pose != null) { if (RetargetRootLocation) { bones_[0].transform.position = (pose.Positions[2] + pose.Positions[3]) * 0.5f + gameObject.transform.position; } if (RetargetPose) { for (int i = 0; i < 13; i++) { int boneIndex = i; if (i == (int)Core.BoneType.Trans) { // Use spine of Core.Pose as root of avatar boneIndex = (int)Core.BoneType.Spine; } if (i == (int)Core.BoneType.Spine) { // Skip spine continue; } bones_[i].transform.rotation = pose.Rotations[boneIndex]; } } } }