Fix animation blending jitter by stopping outgoing animations#602
Fix animation blending jitter by stopping outgoing animations#602tracygardner wants to merge 3 commits intomainfrom
Conversation
…shot Previously, a playing outgoing animation (e.g. walk) continued to drive bones during the weight fade, causing oscillating secondary bones like antennae to jitter. Now the outgoing animation is stopped immediately and its current pose is frozen as a snapshot for the blend-out source. https://claude.ai/code/session_01Favw2jmtKuFNJ2K8kDAnoE
Same fix as the previous commit but for the model animation path: stop the outgoing animation immediately and use a frozen pose snapshot rather than letting the live animation continue to drive bones during the blend. https://claude.ai/code/session_01Favw2jmtKuFNJ2K8kDAnoE
|
Warning Rate limit exceeded
To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Review rate limit: 0/1 reviews remaining, refill in 26 minutes.Comment |
reset() calls goToFrame(0) which synchronously writes the incoming animation's frame 0 values to all bone transforms, including antennae. This overwrites the frozen snapshot pose before any render, causing a visible pop and oscillation in the blend. stop() then start() is sufficient — start() schedules evaluation from frame 0 on the next render tick without touching bone transforms directly. https://claude.ai/code/session_01Favw2jmtKuFNJ2K8kDAnoE
Deploying flockxr with
|
| Latest commit: |
12f86bb
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://1e6a4270.flockxr.pages.dev |
| Branch Preview URL: | https://claude-review-animation-blen.flockxr.pages.dev |
Summary
This change fixes animation blending jitter by ensuring outgoing animations are immediately stopped and frozen as snapshots during blend transitions, rather than continuing to play while their weight fades.
Key Changes
flockAnimateblend transition points to immediately callstop()on the outgoing animation group before creating a snapshot poseImplementation Details
The issue was that live animations (e.g., oscillating antennae) would continue to drive bone transformations during the weight fade-out phase of a blend, causing visible jitter. By stopping the outgoing animation immediately and capturing its final pose as a frozen snapshot, the blend now smoothly transitions between the snapshot and the incoming animation without any bone movement artifacts.
The changes maintain the same snapshot initialization pattern (
_isSnapshot = true, weight set to 1.0) while ensuring the outgoing animation is halted before the blend begins.https://claude.ai/code/session_01Favw2jmtKuFNJ2K8kDAnoE