Flex Image Warp β‘π ‘π π £π
Noise, twist, or bulge distortion, with almost every knob feature-modulatable
- images
- opt_feature
- IMAGE
This is the general-purpose distortion node in the Flex family: three warp styles - noise (organic, wavy, like heat shimmer), twist (rotational swirl around a center point), and bulge (fisheye-style push out from center) - and, unusually for this pack, seven different parameters you can hand off to a live modulation signal instead of just one. That makes it the most flexible of the FlexImage nodes, and also the easiest one to get lost in if you don't know which knobs actually do something for your chosen warp type.
How it works
Pick a warp_type, and the node distorts each frame accordingly. noise uses Perlin-style noise with a frequency and octave count to shape the distortion pattern; twist and bulge are geometric and centered on a point you set. Wire a Feature signal (from AudioFeatureExtractor, TimeFeatureNode, or any other Feature source in the pack) into opt_feature, and feature_param decides which single parameter that signal drives - warp_strength, center_x, center_y, radius, warp_frequency, warp_octaves, warp_seed, or None for no modulation at all. feature_mode controls whether the modulation is relative (offsets around your set value) or absolute (scales from zero up to it), and feature_threshold gates it so weak signal doesn't trigger the effect.
Inputs and outputs that matter
images,warp_type(noise/twist/bulge),warp_strength(-1.0 to 1.0, default 0.1) - the core effect.center_x,center_y(0.0-1.0, default 0.5 each - normalized position, not pixels) andradius(0.0-2.0) - where the effect is centered and how far it reaches; mainly relevant totwist/bulge.- Optional:
warp_frequency(0.1-20),warp_octaves(1-5),warp_seed- these only matter whenwarp_typeisnoise. Set totwistorbulgeand they become no-ops. opt_feature- the Feature modulation input.
Output is a single IMAGE.
Where you'd use it
noise at low strength is good for a subtle "alive" texture wobble on a looping background. twist and bulge driven by an audio onset feature give you punchy, beat-synced distortion pulses - the kind of thing that reads as "reactive" the moment someone sees it move on the beat.
Installing it
ComfyUI Manager: search RyanOnTheInside, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt
No model downloads - this is pure image math.
Where people get burned
The biggest source of confusion: cranking warp_frequency or warp_octaves and seeing nothing happen - because those only apply to noise, and you've got warp_type set to twist or bulge. Check your warp type first before assuming a param is broken. Second: center_x/center_y are normalized 0-1 coordinates, not pixel positions - 0.5, 0.5 is always dead center regardless of your resolution, so don't try to plug in pixel values. And as with any Flex node, if the modulated effect looks too tame or too wild, that's strength, feature_threshold, and feature_mode on this node to adjust - the Feature source itself just supplies a raw signal, it doesn't know how hard you want it applied.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| strength | FLOAT | 1.000β1 | Overall strength of the effect (0.0 to 1.0) Higher values create more dramatic changes, while lower values are more subtle. |
| feature_threshold | FLOAT | 0.000β1 | Minimum feature value to trigger the effect (0.0 to 1.0) Only applies the effect when the feature value exceeds this threshold. Lower values make the effect more sensitive, higher values make it more selective. |
| feature_param | COMBO | Choose which parameter to modulate: - warp_strength: Dynamically adjust distortion amount - center_x: Dynamically adjust horizontal center - center_y: Dynamically adjust vertical center - radius: Dynamically adjust effect radius - warp_frequency: Dynamically adjust noise/pattern frequency - warp_octaves: Dynamically adjust noise detail - warp_seed: Dynamically change noise pattern - None: No parameter modulation | |
| feature_mode | COMBO | relative | How to apply the feature modulation: - relative: Changes are centered around the original value - absolute: Changes scale directly from zero to the maximum |
| images | IMAGE | Input image sequence to be processed (IMAGE type) | |
| warp_type | COMBO | noise | Type of warping effect ('noise', 'twist', 'bulge') |
| warp_strength | FLOAT | 0.10-1β1 | Strength of the warping effect (-1.0 to 1.0) |
| center_x | FLOAT | 0.500β1 | X-coordinate of the warp center (0.0 to 1.0) |
| center_y | FLOAT | 0.500β1 | Y-coordinate of the warp center (0.0 to 1.0) |
| radius | FLOAT | 1.000β2 | Radius of the warp effect (0.0 to 2.0) |
| opt_featureopt | FEATURE | Optional feature input for modulation Connect any feature node here to control the effect. Features can come from audio, motion, color, or other sources. | |
| warp_frequencyopt | FLOAT | 5.00.1β20 | Optional frequency of the warp effect (0.1 to 20.0) |
| warp_octavesopt | INT | 31β5 | Optional number of noise octaves (1 to 5) |
| warp_seedopt | INT | 00β18446744073709550000 | Optional seed for noise generation |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |