(deforum) Simple Interpolation
Smooth out your animation's jumps with optical flow
- image
- first_image
- deforum_frame_data
- IMAGES
- LAST_IMAGE
Animations are stuttery for a boring reason: you generate 12 frames and you wanted 24. Frame interpolation is the fix - synthesize the frames between your generated ones so motion looks continuous. This node does that with optical flow: it takes two consecutive frames, computes how pixels moved between them, and manufactures the in-between frames along that motion. No models to download for most methods, no latent math, just pixel-level motion estimation.
It's called "Simple" because it sits beside the pack's heavier FILM Interpolation node. Simple uses the classic flow-based methods; FILM brings a neural network. Simple is the one you reach for first.
Inputs
image- your batch of generated frames. The node interpolates between consecutive frames in this batch.method- the flow estimator:DIS Medium,DIS Fast,DIS UltraFast(OpenCV's DIS dense inverse search, the defaults),Farneback Fine(classic CPU method), orNormal(no flow, plain blending). DIS UltraFast is the sweet spot for most people; Farneback Fine when you want cheap quality.inter_amount- how many in-between frames to create (default 2). Each input frame becomesinter_amountextra frames between it and the next.skip_first/skip_last- whether to drop the first/last interpolated frame. Useful when a neighboring node will generate its own boundary frames.first_image(optional) - a reference frame to interpolate from, when your batch's first frame isn't the true start.deforum_frame_data(optional) - so the node can reset its internal state between animation runs, matching the loop's reset signal.
Outputs
IMAGES- the batch of original + interpolated frames, ready for a video save node.LAST_IMAGE- the final frame, handy for feeding the next segment of a long animation without duplication.
How it works
It keeps the previous frame in memory (that's the FILM_temp list in the source - the name is a leftover), and once it has two frames it runs the flow-based cadence interpolation from the pack's backend, producing inter_amount frames between them. IS_CHANGED forces re-evaluation, so it re-runs when you tweak settings. When deforum_frame_data carries a reset, it clears its memory so the next segment starts clean.
Installation
Part of Deforum Nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/XmYx/deforum-comfy-nodes.git
Restart, or install "Deforum Nodes" by XmYx via ComfyUI Manager. The DIS/Farneback methods need the pack's opencv-contrib backend; the heavier neural option (FILM) is a separate node and pulls in its own model weights on first use.
Common issues
- "It looks warped around edges" - flow interpolation drags pixels on fast motion. Lower
inter_amountand pickDIS UltraFastoverFarneback Finefor smoother results. - "It skipped the last pair" - the node needs two frames to interpolate; a batch of one does nothing. Feed it a real sequence, or check
skip_first/skip_last. - Interpolation stalling the first call - if you've selected FILM by mistake (different node), the model download explains the pause. Simple Interpolation itself has nothing to download.
One honest word: interpolation makes motion smoother, it can't invent motion that was never there. It's the finishing move for Deforum's jumpy per-frame render - not a substitute for real temporal coherence, which the KB will remind you is what modern video models do.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| method | COMBO | 5 options: DIS Medium, DIS Fast, DIS UltraFast, Farneback Fine, Normal | |
| inter_amount | INT | 21–10000 | — |
| skip_first | BOOLEAN | false | — |
| skip_last | BOOLEAN | false | — |
| first_imageopt | IMAGE | — | |
| deforum_frame_dataopt | DEFORUM_FRAME_DATA | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGES | IMAGE | — |
| LAST_IMAGE | IMAGE | — |