Overview
The animation clock. When animation_render evaluates every frame, only this node
outputs different values for each one: progress from 0 to 1 and frame number. Anything
that moves in the graph ultimately draws its value from here.
Usage tips
- The basic connection sends
progressfrom 0 to 1 into a waveform node:motion (follows time automatically when unconnected) → parameter to animate. - Choose the output by purpose:
progress— percentage through the whole animation; the standard for motionframe— current frame number; branch by frame together withswitchorcomparetime/total_frames— build custom progress control in a formula such asexpression_float
- Raw 0–1 progress is rarely used directly. Convert it into useful motion with
remapfor range,ease_in_outfor easing, or a waveform for back-and-forth and loops. - Distribute one Time Source to several parameters, such as driving arm rotation and body bobbing from the same clock.
Common pitfalls
- Preview values remain 0: this is normal. Ordinary evaluation uses
time=0, frame=0. Per-frame values flow only whileanimation_renderevaluates. Select Animation Render and use its playback preview to check motion. - The last and first frames do not connect:
progressincludes both endpoints from 0 to 1. For loops, insert a periodic waveform such asmotion (Rotate)and make one cycle equal the total frame count.
Technical details
- Ordinary non-animation evaluation outputs
time=0.0,frame=0,total_frames=1, andprogress=0.0. - Multi-frame evaluation by AnimationRender outputs different values for each frame.
progressis calculated asframe / (total_frames - 1); when total_frames=1 it is 0.0.- In the current AnimationRender evaluation,
timeis the same normalized time. It is not seconds.
Examples
Connect TimeSource → Float operation → Transform movement to create animation whose position changes on every frame.
Related nodes
animation_render— runs this clock and is almost always paired with itmotion/motion/motion— convert progress to oscillation, looping, or blinkingremap/ease_in_out— convert the value range and add easingkeyframe_clip— create motion from keyframes instead of a waveform