From 442da665830d90acf6e7ce859569c7023c698af1 Mon Sep 17 00:00:00 2001 From: amantley Date: Tue, 5 Mar 2019 17:44:36 -0800 Subject: [PATCH 1/3] debugging tiny hulk problems --- libraries/animation/src/AnimClip.cpp | 3 ++- libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/animation/src/AnimClip.cpp b/libraries/animation/src/AnimClip.cpp index 4fe02e9307..e014deca2a 100644 --- a/libraries/animation/src/AnimClip.cpp +++ b/libraries/animation/src/AnimClip.cpp @@ -134,6 +134,7 @@ void AnimClip::copyFromNetworkAnim() { const float animationUnitScale = extractScale(animModel.offset).y; const float avatarHeightInMeters = avatarUnitScale * avatarHipsAbsoluteDefaultPose.trans().y; const float animHeightInMeters = animationUnitScale * animHipsAbsoluteDefaultPose.trans().y; + qCDebug(animation) << "meters per unit, avatar: " << avatarUnitScale << " and height of avatar " << avatarHeightInMeters; // get the parent scales for the avatar and the animation float avatarHipsParentScale = 1.0f; @@ -154,7 +155,7 @@ void AnimClip::copyFromNetworkAnim() { const float avatarToAnimationHeightRatio = avatarHeightInMeters / animHeightInMeters; const float unitsRatio = 1.0f / (avatarUnitScale / animationUnitScale); const float parentScaleRatio = 1.0f / (avatarHipsParentScale / animHipsParentScale); - + qCDebug(animation) << "height ratio: " << avatarToAnimationHeightRatio << " units ratio " << unitsRatio << " parent Scale Ratio " << parentScaleRatio; boneLengthScale = avatarToAnimationHeightRatio * unitsRatio * parentScaleRatio; } diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index d3ae030296..29fc98734e 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -1983,6 +1983,7 @@ float Avatar::getUnscaledEyeHeight() const { void Avatar::buildUnscaledEyeHeightCache() { float skeletonHeight = getUnscaledEyeHeightFromSkeleton(); + qCDebug(avatars_renderer) << "unscaled eye height " << skeletonHeight; // Sanity check by looking at the model extents. Extents meshExtents = _skeletonModel->getUnscaledMeshExtents(); From e72cc8b16ee41c608aff1091927cb9f912a82557 Mon Sep 17 00:00:00 2001 From: amantley Date: Wed, 6 Mar 2019 12:09:53 -0800 Subject: [PATCH 2/3] put the ik optimized part of the conditional inside a android build define statement --- libraries/animation/src/AnimClip.cpp | 3 +-- libraries/animation/src/Rig.cpp | 27 ++++++++++--------- .../src/avatars-renderer/Avatar.cpp | 1 - 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/libraries/animation/src/AnimClip.cpp b/libraries/animation/src/AnimClip.cpp index e014deca2a..4fe02e9307 100644 --- a/libraries/animation/src/AnimClip.cpp +++ b/libraries/animation/src/AnimClip.cpp @@ -134,7 +134,6 @@ void AnimClip::copyFromNetworkAnim() { const float animationUnitScale = extractScale(animModel.offset).y; const float avatarHeightInMeters = avatarUnitScale * avatarHipsAbsoluteDefaultPose.trans().y; const float animHeightInMeters = animationUnitScale * animHipsAbsoluteDefaultPose.trans().y; - qCDebug(animation) << "meters per unit, avatar: " << avatarUnitScale << " and height of avatar " << avatarHeightInMeters; // get the parent scales for the avatar and the animation float avatarHipsParentScale = 1.0f; @@ -155,7 +154,7 @@ void AnimClip::copyFromNetworkAnim() { const float avatarToAnimationHeightRatio = avatarHeightInMeters / animHeightInMeters; const float unitsRatio = 1.0f / (avatarUnitScale / animationUnitScale); const float parentScaleRatio = 1.0f / (avatarHipsParentScale / animHipsParentScale); - qCDebug(animation) << "height ratio: " << avatarToAnimationHeightRatio << " units ratio " << unitsRatio << " parent Scale Ratio " << parentScaleRatio; + boneLengthScale = avatarToAnimationHeightRatio * unitsRatio * parentScaleRatio; } diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 9d4c1645d3..344a98f8c4 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1064,17 +1064,18 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos t += deltaTime; - if (_enableInverseKinematics) { - _animVars.set("ikOverlayAlpha", 1.0f); - _animVars.set("splineIKEnabled", true); - _animVars.set("leftHandIKEnabled", true); - _animVars.set("rightHandIKEnabled", true); - _animVars.set("leftFootIKEnabled", true); - _animVars.set("rightFootIKEnabled", true); - _animVars.set("leftFootPoleVectorEnabled", true); - _animVars.set("rightFootPoleVectorEnabled", true); - } else { - _animVars.set("ikOverlayAlpha", 0.0f); + if (_enableInverseKinematics != _lastEnableInverseKinematics) { + if (_enableInverseKinematics) { + _animVars.set("ikOverlayAlpha", 1.0f); + } else { + _animVars.set("ikOverlayAlpha", 0.0f); + } + } + _lastEnableInverseKinematics = _enableInverseKinematics; + +#if defined(Q_OS_ANDROID) || defined(HIFI_USE_OPTIMIZED_IK) + + if (!_enableInverseKinematics) { _animVars.set("splineIKEnabled", false); _animVars.set("leftHandIKEnabled", false); _animVars.set("rightHandIKEnabled", false); @@ -1085,7 +1086,9 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("leftFootPoleVectorEnabled", false); _animVars.set("rightFootPoleVectorEnabled", false); } - _lastEnableInverseKinematics = _enableInverseKinematics; + +#endif + } _lastForward = forward; _lastPosition = worldPosition; diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 29fc98734e..d3ae030296 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -1983,7 +1983,6 @@ float Avatar::getUnscaledEyeHeight() const { void Avatar::buildUnscaledEyeHeightCache() { float skeletonHeight = getUnscaledEyeHeightFromSkeleton(); - qCDebug(avatars_renderer) << "unscaled eye height " << skeletonHeight; // Sanity check by looking at the model extents. Extents meshExtents = _skeletonModel->getUnscaledMeshExtents(); From 474a97d0fcb6faf0365a0678ee0656c421e306d1 Mon Sep 17 00:00:00 2001 From: amantley Date: Wed, 6 Mar 2019 15:15:30 -0800 Subject: [PATCH 3/3] now update the ikOverlayAlpha every frame --- libraries/animation/src/Rig.cpp | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 344a98f8c4..0fe03c7074 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1064,18 +1064,10 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos t += deltaTime; - if (_enableInverseKinematics != _lastEnableInverseKinematics) { - if (_enableInverseKinematics) { - _animVars.set("ikOverlayAlpha", 1.0f); - } else { - _animVars.set("ikOverlayAlpha", 0.0f); - } - } - _lastEnableInverseKinematics = _enableInverseKinematics; - -#if defined(Q_OS_ANDROID) || defined(HIFI_USE_OPTIMIZED_IK) - - if (!_enableInverseKinematics) { + if (_enableInverseKinematics) { + _animVars.set("ikOverlayAlpha", 1.0f); + } else { + _animVars.set("ikOverlayAlpha", 0.0f); _animVars.set("splineIKEnabled", false); _animVars.set("leftHandIKEnabled", false); _animVars.set("rightHandIKEnabled", false); @@ -1086,8 +1078,7 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("leftFootPoleVectorEnabled", false); _animVars.set("rightFootPoleVectorEnabled", false); } - -#endif + _lastEnableInverseKinematics = _enableInverseKinematics; } _lastForward = forward;