home/ atoms/ secondary-animation-delay-offset

Delaying a body's animation signal by a small time offset gives secondary parts inertial lag

In the 12 principles of animation, secondary motion adds physical believability: appendages lag behind the main body because of inertia. In procedural animation this is implemented by evaluating the same driving signal (fract(time)) with a small time offset for the secondary part. If the body uses fract(t), the ears use fract(t - 0.3). When the body descends, the ears are still going up; when the body goes up, the ears are still pointing down. This one-line trick creates the illusion of mass and inertia without any physics simulation.

Examples

float earY = parabola(fract(iTime - 0.35)); // ears trail body by ~1/3 jump period

Assessment

A creature has a tail that should lag 0.2 seconds behind the body. The body cycle repeats every 1 second. What fract() argument produces the correct lag?

“ears themselves, they are animated, and they moved up and down, as the guy jumps up and down, they follow the body with a bit of delay”
corpus · inigo-quilez-live-coding-happy-jumping-video · chunk 11