diff --git a/interface/resources/avatar/animations/settle_to_idle02.fbx b/interface/resources/avatar/animations/settle_to_idle02.fbx index 3ebb81260e..be7429091d 100644 Binary files a/interface/resources/avatar/animations/settle_to_idle02.fbx and b/interface/resources/avatar/animations/settle_to_idle02.fbx differ diff --git a/interface/resources/avatar/animations/settle_to_idle03.fbx b/interface/resources/avatar/animations/settle_to_idle03.fbx index e8de60d956..e7b48309bb 100644 Binary files a/interface/resources/avatar/animations/settle_to_idle03.fbx and b/interface/resources/avatar/animations/settle_to_idle03.fbx differ diff --git a/interface/resources/avatar/animations/settle_to_idle04.fbx b/interface/resources/avatar/animations/settle_to_idle04.fbx index 275cb1e97f..cc31a240cb 100644 Binary files a/interface/resources/avatar/animations/settle_to_idle04.fbx and b/interface/resources/avatar/animations/settle_to_idle04.fbx differ diff --git a/interface/resources/avatar/animations/settle_to_idle_small.fbx b/interface/resources/avatar/animations/settle_to_idle_small.fbx index fe10293b81..21e2ee8478 100644 Binary files a/interface/resources/avatar/animations/settle_to_idle_small.fbx and b/interface/resources/avatar/animations/settle_to_idle_small.fbx differ diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index a495f7ef8f..9c417be90b 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -5452,7 +5452,7 @@ "children": [ ], "data": { - "endFrame": 34, + "endFrame": 40, "loopFlag": false, "startFrame": 1, "timeScale": 1, diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 0a9efadb81..fd8bdb1a0b 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1457,15 +1457,17 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isInputBackward", false); _animVars.set("isInputRight", false); _animVars.set("isInputLeft", false); - _animVars.set("isNotInput", true); - if (_isMovingWithMomentum) { - _animVars.set("isNotInputSlow", true); - _animVars.set("isNotInputNoMomentum", false); - } else { - _animVars.set("isNotInputSlow", false); - _animVars.set("isNotInputNoMomentum", true); - } + // directly reflects input + _animVars.set("isNotInput", true); + + // no input + speed drops to SLOW_SPEED_THRESHOLD + // (don't transition run->idle - slow to walk first) + _animVars.set("isNotInputSlow", _isMovingWithMomentum); + + // no input + speed didn't get above HAS_MOMENTUM_THRESHOLD since last idle + // (brief inputs and movement adjustments) + _animVars.set("isNotInputNoMomentum", !_isMovingWithMomentum); } else {