{
  "id": 2473425,
  "title": "The jitter wasn't in the interpolation. It was in the schedule.",
  "url": "https://urgent.news/2026/08/22/the-jitter-wasnt-in-the-interpolation-it-was-in-the-schedule",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-22T01:23:52.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/renga154/the-jitter-wasnt-in-the-interpolation-it-was-in-the-schedule-557p"
  },
  "original_language": "en",
  "account": "The avatar on the desktop appeared to be stuttering. It turned out that the issue had three separate causes. The reporter started with interpolation, but that was not the root of the problem. The first step was to check for overlap. If the next motion began before the previous one ended, it could cause a stuttering effect. The interval was set to 5 seconds, while the motion itself lasted 9 seconds. Restarting the motion midway through created a jump that read as stuttering, but the issue was actually the timetable, not the curve. To fix this, the reporter checked whether the next motion started when the previous one finished, and whether the \"skip if already playing\" guard covered every playback path. In this case, the guard only consulted a flag used by the .vrma path, while the procedural-motion path bypassed it. The second cause to investigate was velocity discontinuity. The eyes pick up discontinuity in velocity, not position. For example, moving at a constant rate and stopping abruptly could cause a jolt. Two common sources of this issue were linear trapezoids and the expression (1 - cos) / 2. To detect a kink without setting a threshold, the reporter doubled the number of samples and observed the jump. If the jump halved when doubling the samples, it was a smooth curve. If the jump didn't change, there was an actual corner, indicating a kink. The third and final cause to examine was visibility. Even if the motion was smooth and had no velocity discontinuity, it might still be invisible to the viewer. Movement along the depth axis, such as leaning forward, barely changes the image from a front-facing camera. The reporter measured a pose where the top of the head moved just 10 pixels, which was 0.65% of the screen height. If the motion wasn't visible, the stuttering or judder was effectively nonexistent. The reporter learned that measuring in degrees rather than pixels could lead to misleading results. To prevent repeating past mistakes, the reporter implemented an npm run check:smooth to test for smoothness directly. However, measuring visibility still required manual inspection, as there was no foolproof method yet.",
  "summary": "The avatar standing on my desktop looked like it was stuttering. One symptom — but it turned out to have three causes of completely different kinds. Check them in the wrong order and you waste a lot of time. I started with interpolation, which was the wrong end. 1. First, suspect overlap This was the big one. The next motion was starting before the previous one had finished. The interval was set…",
  "key_points": [
    "Jitter issue had three causes: interpolation, overlap, and visibility",
    "Interpolation not root cause; schedule timing caused jumps",
    "Guard missed procedural-motion path, leading to stutter"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}