Organic Fill Animation πΏ
Watch a shape grow from a seed β an organic 'fill the mask' animation, fully parameterized
- image
- frames
Eden_OrganicFillAnimation turns an image into a video of a shape growing into being. It converts your image to a mask, drops one or more "seeds" on it, and animates the mask spreading outward from those seeds with organic, noise-driven growth - the effect looks like a liquid, a plant, or a stain slowly filling the shape. It's a procedural animation generator: no video model, no sampler, just a growth simulation producing frames.
How it works
The core is a cellular-growth simulation. Your image gets reduced to a threshold mask - pick color_channel (luminance, red, green, blue, or random) and a threshold_value (default 128), and pixels below the threshold count as "fillable area." A seed of seed_radius pixels is placed (position chosen by starting_position - center, corners, edges, or random - with position_randomness jittering it). Each step, the boundary pixels are tested against a noise field: a pixel grows only where the noise value exceeds growth_threshold. noise_low and noise_high define that noise field's range and are the main "how wild is the growth" knobs. island_connection_radius lets detached regions get connected back to the main blob; active_region_padding bounds how far the growth can wander.
The output is a frame sequence resampled to hit target_seconds at your fps, with a hold on the final frame (hold_final_frame_fraction) and optional loop (which plays the growth in reverse back to the start for a seamless cycle). num_seeds (1β10) grows from several points at once. invert_input flips which pixels are fillable.
Inputs you'll actually touch
- image (
IMAGE) - the input. - threshold_value, color_channel - what counts as fillable.
- growth_threshold + noise_low/noise_high - the organic feel.
- starting_position, num_seeds - where growth starts.
- target_seconds, fps, loop - the video's shape.
Output: frames (IMAGE, a batch of frames ready for a video encode).
Where it fits
It's a VFX gadget for animated transitions and generative-video scaffolding. Feed it a logo mask and you get an organic logo-reveal. Feed it a depth-based mask and you get a fill animation that pairs with image-to-video. It slots in front of a video encoder, or the frames can be fed back into ComfyUI as a conditioning reference. It's niche, and honestly that's fine - it does one distinctive thing well and it's GPU-cheap (CPU simulation, mostly torch tensor ops).
Installing it
Part of the Eden.art nodesuite. Install via ComfyUI Manager (search "Eden.art nodesuite") or git clone https://github.com/edenartlab/eden_comfy_pipelines into custom_nodes/, then pip install -r requirements.txt and restart.
Common issues
Growth can stall if growth_threshold is too high - the simulation just stops filling. If a run finishes instantly with a mostly-empty result, drop growth_threshold. The noise range defaults (0.0β1.2) are a safe starting band. And remember: this generates frames, not a video file - you still need a video-save/encode node downstream, and long durations at high fps produce a lot of frames to hold in memory.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | β | |
| target_seconds | FLOAT | 5.00.5β120 | β |
| target_size | INT | 51264β2048 | β |
| threshold_value | INT | 1281β254 | β |
| seed_radius | INT | 51β50 | β |
| growth_threshold | FLOAT | 0.500β1 | β |
| noise_low | FLOAT | 0.00β2 | β |
| noise_high | FLOAT | 1.20β3 | β |
| starting_position | COMBO | center | 10 options: center, top_left, top_right, bottom_left, bottom_right, top_center, +4 |
| position_randomness | FLOAT | 0.000β1 | β |
| island_connection_radius | FLOAT | 0.00050β0.05 | β |
| active_region_padding | INT | 30β20 | β |
| fps | FLOAT | 241β60 | β |
| num_seeds | INT | 11β10 | β |
| invert_input | BOOLEAN | false | β |
| loop | BOOLEAN | true | β |
| hold_final_frame_fraction | FLOAT | 0.250β2 | β |
| color_channel | COMBO | luminance | 5 options: luminance, red, green, blue, random |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | β |