Nodes/zhangp365/ComfyUI-utils-nodes/Image Transition Top to Bottom
ComfyUI Node

Image Transition Top to Bottom

A vertical slide-wipe between two images

By zhangp365·Created 2 years ago·Updated 5 months ago· 135
Image Transition Top to Bottom
  • before_image
  • after_image
  • images
  • duration
  • fps
duration5.0
fps24
bounce_backfalse
start_end_pause_percent0.09
middle_pause_percent0.15
start_end_position_percent0.06
transition_line_width8

The vertical cousin of the pack's left-right wipe: ImageTransitionTopToBottom slides your outgoing image down and off the frame while the incoming one drops in from the top to replace it. Same mechanism as its siblings, just rotated ninety degrees - useful when a horizontal wipe doesn't match the composition you're cutting between (a portrait-oriented shot, or content with strong horizontal lines you don't want a left-right seam crossing through).

What it's for

If you're assembling a short clip in ComfyUI out of a couple of still images and want the cut to read as a physical curtain-drop rather than a dissolve, this is the tool. It generates the whole transition as a ready-to-encode frame batch, so there's no external video editor step - the sequence comes straight out of the graph.

How it works

Every output frame is a split composite: the boundary between the two images sweeps downward across the canvas as the sequence plays, with the outgoing image's visible portion shrinking from the bottom while the incoming image's visible portion grows from the top. What separates this from a bare "cut with a line" is the set of timing controls layered on top - pauses, a bounce option, and how far in from the frame edges the motion starts.

The inputs and outputs that matter

  • before_image / after_image (IMAGE) - outgoing and incoming frames, matched dimensions required.
  • duration (default 5, 0.1–60) and fps (default 24, 1–120) - set the frame count together, and both get passed straight through as outputs so you can wire them directly into a video-combine node.
  • bounce_back (default false) - plays the wipe forward, then reverses it back to the start, instead of stopping at the end. Good for a looping GIF-style preview.
  • start_end_pause_percent (default 0.09) - fraction of total time held still at the very start and end.
  • middle_pause_percent (default 0.15) - fraction held at the fully-swapped midpoint, most relevant when bounce_back is on, so the swap registers before it reverses.
  • start_end_position_percent (default 0.06) - inset from the top/bottom edges where the slide begins and ends, rather than starting flush at the boundary.
  • transition_line_width (default 8) - pixel width of the visible seam at the moving boundary.

Outputs: images (the frame batch), plus duration and fps echoed back for downstream convenience.

How to install it

ComfyUI Manager → search "ComfyUI-utils-nodes" → install → restart. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/zhangp365/ComfyUI-utils-nodes

Restart ComfyUI afterward. Pure compositing, no model files, so install is fast and there's nothing to download beyond the node code itself.

Common issues & troubleshooting

before_image and after_image must share dimensions - the usual requirement across every node in this pack that composites two images together. If your source images came out of different aspect-ratio presets or different generation passes, resize one to match the other first.

Because frame count comes from duration × fps rather than a direct frame input, a transition that feels too abrupt or too long is a duration/fps problem, not something you fix by hunting for a missing frames field. And if you want a clean, no-frills wipe with no held beats at either end, dial start_end_pause_percent and middle_pause_percent toward zero - left at their defaults they're tuned for a transition meant to loop or bounce, and that shows up as a beat of stillness if you're only playing it once.

Categoryutils

Inputs (9)

NameTypeDefaultDescription
before_imageIMAGE
after_imageIMAGE
durationFLOAT5.00.1–60
fpsFLOAT241–120
bounce_backoptBOOLEANfalse
start_end_pause_percentoptFLOAT0.090–0.5
middle_pause_percentoptFLOAT0.150–0.5
start_end_position_percentoptFLOAT0.060–0.5
transition_line_widthoptINT81–20

Outputs (3)

NameTypeDescription
imagesIMAGE
durationFLOAT
fpsFLOAT