Mask Rings [DEPRECATED] β‘π ‘π π £π
Concentric rings from a mask, animated over time (deprecated)
- masks
- MASK
Like its sibling MaskMorph, this node's own display name is tagged [DEPRECATED] by the pack itself. Worth checking ComfyUI Manager for whatever's replaced it in this pack before leaning on it for a new build - but since existing workflows may still call it, here's what it does.
It generates concentric rings radiating out from your mask, then runs them through the same time-based animation envelope the pack's other TemporalMasks nodes share (MaskMorph, MaskTransform). Think ripple, pulse, or radar-sweep effects growing out of a masked region over a frame range.
How it works
num_rings (1β50) sets how many concentric rings get generated, and max_ring_width (0.01β0.5, as a fraction of the total distance) caps how thick each ring is. Everything else is the shared temporal envelope: start_frame/end_frame bound when the effect is active, effect_duration controls how long the ramp takes, temporal_easing (ease_in_out, linear, bounce, elastic, none) shapes that ramp, and palindrome makes it play forward then reverse instead of just forward. strength, invert, subtract_original, and grow_with_blur give you the same fine-tuning knobs as the pack's other temporal mask nodes.
If you've read the MaskMorph or MaskTransform articles in this pack, you've already seen most of these parameters - it's the same underlying animation-envelope framework, with a different generator (rings instead of erode/dilate or translate/rotate/scale) bolted on.
The inputs that matter
masks- the source mask sequence the rings radiate from.num_rings- how many rings to generate.max_ring_width- how thick each ring gets, as a fraction of the total distance.start_frame/end_frame/effect_duration/temporal_easing/palindrome- the animation envelope.
Output is a single MASK.
Of the three temporal mask nodes in this pack, this is the one that adds new shape rather than reshaping or moving what's already there: MaskMorph reshapes the mask's edges, MaskTransform repositions it, and MaskRings generates fresh ring geometry radiating outward. If you're after a ripple-out or radar-sweep look specifically, this is the one built for it - the other two won't get you there without a lot of manual layering.
How to install it
The pack's README came back empty for install specifics, so the standard path applies here too:
ComfyUI Manager: search "RyanOnTheInside", install, restart.
Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
Restart ComfyUI afterward.
Troubleshooting
Given the deprecated tag, check whether the pack ships an updated equivalent before you invest much time debugging this one. If the rings look too thin or too subtle to see, max_ring_width is the first knob to check - it's capped at 0.5, so extremely wide rings aren't possible by design, only up to half the total distance. If the animation isn't visibly ramping at all, revisit start_frame/end_frame/effect_duration together rather than any one alone - with end_frame defaulting to 0 (meaning "until the end" per the node's own tooltip), a mismatch between your expected window and the actual one is the most common source of "nothing seems to be happening." One more thing worth checking if the rings look choppy rather than smooth: that's temporal_easing set to none, which steps rather than eases - switch to ease_in_out or linear if you want a continuous ramp instead of a hard cut.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| masks | MASK | Input mask or sequence of masks to be processed (MASK type) | |
| strength | FLOAT | 1.000β1 | Overall strength of the mask effect (0.0 to 1.0) |
| invert | BOOLEAN | false | When enabled, inverts the mask output (black becomes white and vice versa) |
| subtract_original | FLOAT | 0.000β1 | Amount of the original mask to subtract from the result (0.0 to 1.0) |
| grow_with_blur | FLOAT | 0.00β10 | Amount of Gaussian blur to apply for mask growth (0.0 to 10.0) |
| start_frame | INT | 00β1000 | Frame number where the effect begins (0 to 1000) |
| end_frame | INT | 00β1000 | Frame number where the effect ends (0 to 1000, 0 means until end) |
| effect_duration | INT | 00β1000 | Number of frames over which the effect is applied (0 to 1000, 0 means full range) |
| temporal_easing | COMBO | Controls how the effect strength changes over time ('ease_in_out', 'linear', 'bounce', 'elastic', 'none') | |
| palindrome | BOOLEAN | false | When enabled, the effect plays forward then reverses within the specified duration |
| num_rings | INT | 101β50 | Number of rings to generate (1 to 50) |
| max_ring_width | FLOAT | 0.100.01β0.5 | Maximum width of each ring as a fraction of the total distance (0.01 to 0.5) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MASK | MASK | β |