Nodes/SComfyUI-Keyframe/Keyframe Interpolation Part
ComfyUI Node

Keyframe Interpolation Part

One node for the 'real footage slowly becomes AI' effect

By Scholar01·Created 3 years ago·Updated 2 years ago· 17
Keyframe Interpolation Part
  • image
  • part
  • part
batch_index_from0
batch_index_to4
denoise_from0.10
denoise_to1.00
interpolation

This is the node people actually search for when they find this pack. It's the "gradual AI takeover" effect in a single box: your video starts as real footage, and frame by frame the AI redraws more and more of it, until the end is fully generated. Before this pack, doing that meant running your whole batch through several KSamplers at different denoise strengths - multiple passes, all of it slow. Keyframe Interpolation Part replaces that with one node and one sampling pass.

How it works

Give it one image and a range of batch indices, and it emits a keyframe for every index in that range, with the denoise value interpolated from denoise_from to denoise_to. The interpolation math is straightforward easing on top of a linear ramp:

  • linear - the denoise climbs evenly across the range.
  • ease-in - slow start, accelerates toward the end.
  • ease-out - fast start, settles down.
  • ease-in-out - gentle at both ends, the S-curve.

Note the end index is exclusive: a range from 0 to 4 covers batch indices 0, 1, 2, and 3. And it raises a ValueError if batch_index_from is greater than or equal to batch_index_to, so mind that before you wire it.

The inputs that matter

  • image (IMAGE) - the anchor frame. One thing to know: this single image is reused for every keyframe in the ramp. If you want different images per index, you need multiple Keyframe Part nodes instead.
  • batch_index_from / batch_index_to (INT) - where the ramp starts and stops.
  • denoise_from / denoise_to (FLOAT) - the redraw strength at each end, 0.001 to 1.
  • interpolation - the easing curve above.
  • part (LATENT_KEYFRAME_PART, optional) - chain in an existing group to merge.

The classic recipe: denoise_from 0.1 (keep your footage almost intact) up to denoise_to 1.0 (full redraw). Early frames stay glued to the source, the middle drifts, and the tail is pure AI. If you want the source to survive longer before the morph takes over, ease-in-out is usually nicer than linear - the first frames stay near-faithful, then the transformation accelerates in the middle.

Merging with an existing part

If you feed an existing part into the optional input, the ramp merges rather than replaces. One subtlety worth knowing: the merge direction is the opposite of Keyframe Part. Where chaining Keyframe Part nodes lets the newer node win collisions at the same index, this node re-adds your existing keyframes after the ramp - so an existing keyframe at the same batch index overrides the ramp's entry. If you're relying on overlap, test it rather than assuming.

Where it goes next

The part output feeds straight into Keyframe Apply along with your model, latent, and VAE. And the same gotcha applies as everywhere in this pack: set your KSampler to one of the injected samplers - k_euler, k_euler_a, or k_lcm - or the ramp is silently ignored.

Installing it

ComfyUI Manager (search "ComfyUI-Keyframe", listed as SComfyUI-Keyframe), or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/Scholar01/ComfyUI-Keyframe

Restart, and you're done - no requirements.txt, no models to download. It's a tiny pack from the AnimateDiff era by Scholar01 (the sd-webui-mov2mov author), so on a modern ComfyUI there's a chance its import-time patching has rotted; that's the price of a two-line README.

CategoryKeyframeInterpolationPartNode

Inputs (7)

NameTypeDefaultDescription
imageIMAGE
batch_index_fromINT00–9999
batch_index_toINT41–9999
denoise_fromFLOAT0.100.001–1
denoise_toFLOAT1.000.001–1
interpolationCOMBO4 options: linear, ease-in, ease-out, ease-in-out
partoptLATENT_KEYFRAME_PART

Outputs (1)

NameTypeDescription
partLATENT_KEYFRAME_PART