Overview
A timeline node for creating motion with keyframes. Waveform nodes describe motion mathematically; this node directly specifies a shape at a given frame. Register and record poses for path or image transformations in the dedicated editor, then play or export them as an AnimationClip.
Usage tips
- Choose by motion: periodic or mechanical motion → motion node; acted motion such as wind up → hold → swing down → this node.
- Basic flow: connect
pathorimage→ move through the frames in the editor and set keys in pose mode → check with play → send the result downstream through the matchingPath/Imageoutputs. Those carry the current-frame result, so you can stack more filters or motion nodes after them and finish with animation_render to play everything. Use thespritesheetoutput when you want the sheet directly. - Clip duration and key positions are frame-based. New clips take their duration and fps from the project animation defaults (canvas bar).
- Supplying
progress(0–1) externally lets the graph control clip evaluation time, including integration withtime_sourceor progress-based effect branching. - The
value_floatoutput is a plain Float: the clip's first numeric (Scalar) track evaluated at the current clip time. Use it to keyframe a single numeric parameter — the Inspector's 🎞️ animation button ("Keyframe" flavor) wires this output to the target parameter automatically. Outside the key range the value clamps to the edge keys, interpolation follows the track's setting (the shared easing vocabulary ofease_in_out), and clips without a Scalar track output 0.0. - The source node itself is never rewritten. The original shape remains intact.
Common pitfalls
- A key was added, but nothing moves: one key cannot be interpolated. You need at least two keys, a start and an end.
- The editor and output look different: the editor displays source + applied clip.
The
Path/Imageoutputs carry that same current-frame result downstream;clip/valueare the animation data itself andspritesheetis the full sheet, so check which output you are using.
Interactive editor
Keyframe Clip has an interactive editor with an embedded source.
The editor supports:
- source switching
- Choose whether to edit
PathorImage.
- Choose whether to edit
pose mode- Save the shape at the current time as one key pose.
record mode- Record a drag path across the start/end range.
- play / stop / loop
- Play the editor preview directly.
- key list
- Review saved keys and jump to one.
- export
- Sprite-sheet PNG sampling frames t=0..D-1 of the D-frame duration (the last frame stops just before the loop restarts)
- Batch export of key PNG files at actual key frames only
- Current-frame PNG export
Important:
- The source node itself is not rewritten.
- The editor displays the source with the clip applied.
- Switching keys displays that key pose directly.
- For an image source, the current editor handles translation / rotation / scale transforms.
- Rotation uses zone dragging: move the pointer near the outside edge until
↺appears.
- Rotation uses zone dragging: move the pointer near the outside edge until
- For a path source, move points / handles directly to create a pose.
Technical details
AnimationClip is the user-facing animation type introduced in P07.
Internally it contains explicit tracks / keyframes and bridges to and from
RecordedLayer when needed.
When the layer input is connected:
- Convert the
layerinput into a base clip - Overlay
clip_dataas a local clip - Expose the same clip as both
AnimationClipandRecordedLayerat the output
The path / image inputs are also editor sources and are intended to be used with
downstream ClipApplyPath / ClipApplyImage.
Examples
Key-editing a Path
- Create
BezierPath. - Connect it to
KeyframeClip.path. - Open the
KeyframeClipeditor. - At frame 0, move a point / handle to create the first pose.
- Create another pose at the last frame.
- Connect
KeyframeClip.cliptoClipApplyPath.clip. - Connect
BezierPath.pathtoClipApplyPath.path, then driveprogress(0–1) withFloat InputorTime Sourceto play it.
Key-editing an Image
- Create an image source such as
PixelCanvas.image. - Connect it to
KeyframeClip.image. - Open the
KeyframeClipeditor. - Drag the image to move it, drag a corner to scale it, and rotate it in the
↺zone near the outer edge. - Connect
KeyframeClip.cliptoClipApplyImage.clip. - Connect the source image to
ClipApplyImage.image, then changeprogressto play it.
Exporting from the clip editor
- Open the
KeyframeClipeditor. - Set
Duration (frames)(defaults to the project's default frame count). - Set
Columns (0=Auto)if needed. - Export every frame with
Spritesheet PNG. - Export only actual keys as separate PNG files with
Export Key PNGs.
Additional notes:
- A spritesheet from an
Imagesource samples frames t=0..D-1 of the D-frame duration. - With
Columns = 0, automatic layout chooses a roughly square arrangement rather than a single horizontal row. - Choose placement order from
Row(row_major) orColumn(column_major). - Node output follows the P07A
SpriteSheetcontract:spritesheetis the dedicated type.frame_count / fps / columns / rows / frame_width / frame_height / fill_orderare helper metadata outputs returned with the same export settings.
- The
columns/rows/frame_width/frame_height/fill_orderoutputs make downstream frame splitting easier. - Exporting a
Pathsource produces a transparent-background PNG of the line preview shown in the editor. - For the final rendered appearance, use
ClipApplyPath -> PathStroke -> AnimationRender.
Related nodes
clip_apply_path/clip_apply_image— apply the clip to a path or image downstreamanimation_render— create a sprite sheet of the final appearanceclip_mixer/clip_loop_fit— mix clips or adjust a loop- Waveforms such as
motion— when mathematical motion is sufficient
Time, multiple tracks, and data safety
- The only time input is
progress(normalized 0–1); it evaluatesprogress * duration (frames). With nothing connected, graph evaluation time is treated as normalized progress. The legacy absolute-secondstimepin has been removed; old projects withtimeconnections are rewired toprogresson load. - Connect the 0–1 output of
Time Sourcetoprogress. - Clip duration and key positions are frame-based (v2). Legacy v1 (seconds-based)
clip_datais converted on load using the fps derived from the oldSeconds / Framesetting (or the legacy default 10fps when missing). - With multiple image Transform tracks, preview and export apply every track in order. Canvas operations and key add/move/delete affect only the selected track.
- Shortening duration does not destroy out-of-range keys. Evaluation time is clamped to 0–duration. Use the explicit Trim command to delete them or Scale to fit all keys proportionally into the duration.
- Invalid non-empty
clip_datais not silently treated as empty. The editor preserves the original text, pauses saving, and offers copy or a confirmed reset. - Per-track interpolation shares the same easing vocabulary and curves as the
ease_in_outnode (Linear / Ease In / … / Bounce Out / Step).