π§ Transition Mask
Procedural wipe transitions as a mask batch
- MASK
If you've ever built a slideshow in PowerPoint or edited video, you know the transition menu - wipe left, iris in, bar reveal, cross-fade. Transition Mask generates exactly that, but as a batch of ComfyUI masks instead of a rendered video effect: a sequence of frames going from black to white (or the reverse) following one of nine wipe shapes, which you then use to blend, composite, or drive anything else in your graph over time.
Why you'd reach for it
The obvious use is stitching two video clips or two generations together with something nicer than a hard cut - feed this mask into a compositing chain alongside your two source clips, and wherever the mask is white you show one, wherever it's black you show the other, with the wipe pattern controlling how that boundary moves frame by frame. It's just as useful outside video editing, though: an animated mask is a general-purpose tool for regional prompting that changes over time, or for revealing/concealing part of a generation across a batch.
How it works
You set the canvas size and how many frames the transition should span, pick a transition_type (the shape of the wipe) and a timing_function (the pacing curve), and the node procedurally renders the whole mask batch.
The inputs and outputs that matter
width/height(INT, default 512 each) - the mask canvas size; match your actual video or image dimensions.frames(INT, default 16) - how many mask frames to generate.start_frame/end_frame(INT, defaults 0 / 9999) - lets you window the transition inside a longer sequence: hold static black (or white) padding before the wipe starts and after it finishes, instead of having the transition run across the entire batch. Leave these at their defaults if you want the transition to occupy the whole clip.transition_type- the wipe shape: horizontal slide, vertical slide, horizontal bar, vertical bar, center box, horizontal door, vertical door, circle, or fade.timing_function- the easing curve: linear, in (starts slow), out (ends slow), or in-out (eases both ends).in-outis usually the one that reads as the most natural-looking wipe.
Output is a single MASK - the whole animated batch, ready to wire into a compositing node, an ImageBlend-style operation across frames, or wherever else your workflow consumes an evolving mask.
How to install it
Via ComfyUI Manager: search "ComfyUI Essentials," install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/cubiq/ComfyUI_essentials
No model downloads - this is pure procedural mask generation, so it's about as lightweight as nodes get.
Common issues
Mask dimensions or frame count don't match your video batch. This is the most common trip-up: width/height/frames here need to line up with whatever image or latent batch you're compositing against, or the blend will either error or silently misalign. Double-check these three numbers against your actual clip before wiring things together.
Transition happens too fast or in the wrong spot. If your wipe looks instant or is happening in the wrong part of a longer sequence, check start_frame/end_frame - leaving end_frame at its default (9999) is fine if your clip is shorter than that, but if you've windowed the transition and it's not appearing where expected, that's almost always where to look first.
Pick timing_function deliberately, not by habit. linear is the safe default but reads a little mechanical; try in-out if a wipe feels stiff - it's a one-value change and costs nothing to test.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 5121β16384 | β |
| height | INT | 5121β16384 | β |
| frames | INT | 161β9999 | β |
| start_frame | INT | 0 | β |
| end_frame | INT | 9999 | β |
| transition_type | COMBO | 9 options: horizontal slide, vertical slide, horizontal bar, vertical bar, center box, horizontal door, +3 | |
| timing_function | COMBO | 4 options: linear, in, out, in-out |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MASK | MASK | β |