Nodes/ComfyUI_Fill-Nodes/FL Animated Shape Patterns
ComfyUI Node

FL Animated Shape Patterns

Six algorithms for generative motion loops

By filliptm·Created 3 years ago·Updated about 11 hours ago· 628
FL Animated Shape Patterns
    • image
    • mask
    pattern_typegrid_wave
    frame_count30
    frame_width512
    frame_height512
    shapecircle
    shape_size20
    shape_colorwhite
    bg_colorblack
    count10
    speed1.0
    amplitude50
    frequency1.0
    blur_radius0.0
    trail_length0.00
    size_variation0.00
    rotation0
    phase_offset0.0
    intensity1.00
    border_width0
    border_colorwhite
    seed0

    FL Animated Shape Patterns is a batch-of-frames generator: pick a pattern algorithm, a shape, and some motion parameters, and it spits out an animated sequence of that shape moving around the frame - no diffusion model involved. It's a background-loop and motion-graphics node, not an AI node, and it lives in Fill-Nodes' "Work-in-Progress" bucket, which in this pack just means "shipped and functional, but the author isn't promising the interface won't change." Treat it as stable enough to use, not stable enough to build a pipeline you can't tolerate breaking.

    How it works

    Six pattern algorithms, chosen via pattern_type: grid_wave and grid_ripple arrange shapes in a grid and animate a wave or ripple through the positions; circle_array and orbital put shapes on a ring and rotate/orbit them; spiral walks shapes outward (or inward) along a spiral path; lissajous drives position with the classic Lissajous curve - two out-of-phase sine waves - which is the one that looks most like an oscilloscope pattern. All six are pure math, no seed-dependent diffusion, so the same settings always give the same output.

    Every algorithm shares the same speed, amplitude, and frequency controls, so switching pattern_type doesn't mean relearning the knobs - you can A/B all six against the same motion settings.

    The inputs and outputs that matter

    You'll set: pattern_type (the algorithm), shape (circle/square/triangle/hexagon/star), count (how many shape instances, up to 100), frame_count (up to 500), and frame_width/frame_height. shape_color and bg_color take plain color strings. The motion feel comes from speed, amplitude, and frequency - bump amplitude for bigger swings, frequency for more cycles across the clip.

    Worth knowing in the optional block: trail_length (0–1) leaves a fading trail behind each shape instead of a hard cut, blur_radius softens edges, rotation spins every instance, and size_variation/phase_offset add per-instance randomness so a grid of shapes doesn't move in perfect lockstep - bump size_variation if a uniform grid of identical circles looks too sterile.

    It outputs both image (the frame batch) and mask (a matching alpha mask of just the shapes). The mask is the useful bit if you want to composite these shapes onto other footage, or feed a moving-region mask into a video model's conditioning instead of using the raw frames as final output.

    How to install it

    ComfyUI Manager: search ComfyUI_Fill-Nodes (or "Fill-Nodes"), install, restart. Manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
    

    then restart ComfyUI. This node itself only needs PIL and numpy, both already in any ComfyUI install - no models, no extra pip steps specific to it. The catch with Fill-Nodes as a whole: it's a huge pack that also wires in OpenAI, Gemini, Fal.ai, Google Cloud, and Hugging Face integrations, so at startup ComfyUI's log prints a long list of optional-dependency notices for API nodes you'll probably never touch. That's normal noise, not a broken install - people have gotten spooked by exactly that kind of startup wall of text before, assuming something was wrong when the pack was just being upfront about everything it can do.

    Common issues & troubleshooting

    Output looks like a strobing mess. Usually frequency set too high relative to frame_count - you're cramming more oscillations into the clip than the frame count can resolve smoothly. Drop frequency or raise frame_count.

    All shapes move identically and it reads as robotic. Add phase_offset and/or size_variation so instances desync - at defaults (both 0) every shape is perfectly synchronized, which looks very "generated."

    Huge frame counts are slow. 500 frames at 4096×4096 is a lot of per-frame PIL drawing done on CPU - there's no GPU acceleration here. Keep dimensions and frame count modest while dialing in the pattern, then scale up once you like the motion.

    Category🏵️Fill Nodes/WIP

    Inputs (21)

    NameTypeDefaultDescription
    pattern_typeCOMBOgrid_wave6 options: grid_wave, grid_ripple, circle_array, orbital, spiral, lissajous
    frame_countINT301–500
    frame_widthINT51264–4096
    frame_heightINT51264–4096
    shapeCOMBOcircle5 options: circle, square, triangle, hexagon, star
    shape_sizeINT202–500
    shape_colorSTRINGwhite
    bg_colorSTRINGblack
    countINT101–100
    speedFLOAT1.00.1–10
    amplitudeFLOAT500–500
    frequencyFLOAT1.00.1–10
    blur_radiusoptFLOAT0.00–50
    trail_lengthoptFLOAT0.000–1
    size_variationoptFLOAT0.000–1
    rotationoptFLOAT0-360–360
    phase_offsetoptFLOAT0.00–6.28
    intensityoptFLOAT1.000.01–10
    border_widthoptINT00–20
    border_coloroptSTRINGwhite
    seedoptINT00–18446744073709550000

    Outputs (2)

    NameTypeDescription
    imageIMAGE
    maskMASK