ComfyUI Node
After Effects Wiggle
A ComfyUI node in animation/transform with 39 inputs and 2 outputs.
After Effects Wiggle
- image
- mask
- reference_frame
- IMAGE
- MASK
◄preserve_sizetrue►
◄frame_width1280►
◄frame_height720►
◄fps25.0►
◄speed1.0►
◄time_offset0.0►
◄enable_positiontrue►
◄position_modeindependent►
◄position_frequency0.20►
◄position_magnitude15.0►
◄position_temporal_phase0.0►
◄position_spatial_phase90.0►
◄enable_scaletrue►
◄scale_modelinked►
◄scale_frequency0.15►
◄scale_magnitude2.0►
◄scale_temporal_phase45.0►
◄scale_spatial_phase0.0►
◄enable_rotationtrue►
◄rotation_frequency0.10►
◄rotation_magnitude2.0►
◄rotation_temporal_phase30.0►
◄rotation_spatial_phase60.0►
◄time_remap_curvesmooth►
◄motion_blur0.30►
◄motion_tilemirror►
◄motion_tile_auto_margintrue►
◄motion_tile_margin50►
◄noise_typeperlin►
◄noise_octaves6►
◄noise_persistence0.60►
◄noise_lacunarity1.50►
◄interpolationbicubic►
◄seed0►
◄buy_me_a_coffeefalse►
◄usage_counterUsage count: 0►
Categoryanimation/transform
Inputs (39)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| preserve_size | BOOLEAN | true | When enabled, output will maintain the same size as input image. When disabled, custom width and height settings will be used. Keeping original size (enabled) is recommended for best quality and performance |
| frame_width | INT | 12808–8192 | The width of the output frames in pixels. Higher values mean larger image width but require more processing power. Common values: 1280 (HD), 1920 (Full HD), 3840 (4K) |
| frame_height | INT | 7208–8192 | The height of the output frames in pixels. Higher values mean larger image height but require more processing power. Common values: 720 (HD), 1080 (Full HD), 2160 (4K) |
| fps | FLOAT | 25.00.25–1000 | Frames Per Second - determines how many frames are generated per second of animation. Common values: 24 (film), 25 (PAL), 30 (NTSC), 60 (smooth motion). Higher FPS means smoother animation but more frames to process |
| speed | FLOAT | 1.00.1–10 | Controls how fast the wiggle animation plays. Think of it like a speed multiplier: 1.0 is normal speed, 2.0 makes everything move twice as fast, 0.5 makes everything move at half speed. This affects all aspects of motion - position, rotation, and scaling. Useful for fine-tuning the feel of your animation without changing other parameters |
| time_offset | FLOAT | 0.00–3600 | Shifts the starting point of the animation in time (measured in seconds). This is like choosing where in the wiggle pattern you want to begin. Useful for: 1) Creating seamless loops by finding the right offset, 2) Synchronizing multiple wiggle effects by offsetting their start times, 3) Finding the perfect part of the motion pattern for your animation |
| enable_position | BOOLEAN | true | Turns position animation on or off. When enabled, the image will move around its center point based on the position settings below. When disabled, the image stays centered with only scale and rotation effects (if enabled) |
| position_mode | COMBO | independent | Controls how the horizontal (X) and vertical (Y) movements relate to each other. In 'independent' mode, X and Y move separately, creating more random-looking motion (like a leaf in the wind). In 'linked' mode, X and Y are connected to create circular or elliptical paths (like a planet's orbit). Independent is great for organic motion, while linked is better for mechanical or planned movements |
| position_frequency | FLOAT | 0.200–100 | How rapidly the position changes occur. Think of it like adjusting the 'nervousness' of the movement. Low values (0.1-0.5) create slow, smooth drifting motions perfect for subtle effects like floating or swaying. Higher values (1.0+) create rapid, jittery movements good for bouncing or vibrating effects. The magic usually happens between 0.1 and 1.0 for natural-looking motion |
| position_magnitude | FLOAT | 15.00–1000 | Controls how far the image moves from its center point, measured in pixels. Think of it as the 'intensity' of movement. At 15 pixels, you get subtle movement good for gentle floating effects. At 50-100 pixels, you get more dramatic swaying or bouncing. Higher values create wild, sweeping motions. The actual movement will be up to this amount in any direction. Remember: this interacts with motion blur - bigger movements create more blur! |
| position_temporal_phase | FLOAT | 0.00–360 | Shifts the timing of position changes, measured in degrees (0-360). This is like choosing which point in the wiggle cycle to start from. Very useful when you have multiple elements - giving each a different phase (like 0, 120, and 240) creates a pleasing cascade effect. Also great for fine-tuning when exactly movement peaks occur in your animation. Think of it as the 'timing offset' of the movement pattern |
| position_spatial_phase | FLOAT | 90.00–360 | Controls the spatial pattern of movement, measured in degrees (0-360). While temporal phase shifts timing, spatial phase shifts the actual movement pattern. A 90-degree difference between X and Y creates circular motions (when linked). Different values create different elliptical or figure-eight patterns. Great for creating complex, natural-looking movements or precise mechanical patterns |
| enable_scale | BOOLEAN | true | Turns scaling animation on or off. When enabled, the image will grow and shrink based on the scale settings below. This can create breathing, pulsing, or throbbing effects. Can be combined with position and rotation for more complex animations. When disabled, the image maintains its original size while other effects continue to work |
| scale_mode | COMBO | linked | Determines how horizontal and vertical scaling relate to each other. 'Linked' mode scales both dimensions together, preserving aspect ratio - great for pulsing or breathing effects. 'Independent' mode allows separate X/Y scaling for squash-and-stretch effects. 'None' is the same as disabling scale completely. Use 'linked' for natural growth/shrink, 'independent' for more dynamic or cartoony effects |
| scale_frequency | FLOAT | 0.150–100 | How rapidly scaling changes occur. Lower values (0.1-0.3) create slow, breathing-like effects. Higher values create rapid pulsing or vibrating. Very high values might look jittery unless combined with motion blur. The default 0.15 is good for subtle, organic scaling. Consider your animation's mood - slow for calm, faster for energy or tension |
| scale_magnitude | FLOAT | 2.00–100 | The maximum amount of scaling, in percentage points. A value of 2.0 means the image will scale between 98% and 102% of its original size. Small values (1-5) create subtle breathing effects. Larger values (10-20) create more dramatic pulsing. Very large values can create explosive growth and shrinking. Remember: this is a percentage, so 100 means scaling from 0% to 200% - use with caution! |
| scale_temporal_phase | FLOAT | 45.00–360 | Controls when scaling changes occur in the animation cycle (0-360 degrees). Like position_temporal_phase, but for scaling. Use different values for position and scale phase to create complex animations where movement and scaling aren't synchronized. For example, setting this 90 degrees apart from position creates a flow where maximum size occurs a quarter-cycle after maximum movement |
| scale_spatial_phase | FLOAT | 0.00–360 | Affects the relationship between horizontal and vertical scaling patterns when in 'independent' mode. Different values create different patterns of stretching and squashing. 90 degrees creates alternating stretch/squash. 180 degrees makes them oppose each other. Experiment with this when creating squash-and-stretch effects for character animation or bouncing effects |
| enable_rotation | BOOLEAN | true | Turns rotational animation on or off. When enabled, the image will rock back and forth or spin based on rotation settings below. Rotation happens around the image center. Combine with position and scale for effects like floating debris, drifting leaves, or wobbling characters. When disabled, the image maintains its original orientation |
| rotation_frequency | FLOAT | 0.100–100 | Controls how rapidly rotation changes occur. Low values (0.1-0.5) create gentle rocking or swaying. Higher values create faster spinning or shaking. The default 0.1 is good for subtle movement like paper floating or leaves swaying. Higher values (1.0+) work better for mechanical movement or intense effects. Consider using motion blur with faster rotations to smooth the movement |
| rotation_magnitude | FLOAT | 2.00–360 | The maximum rotation angle in degrees. At 2.0, the image rocks ±2 degrees - subtle but noticeable. Values around 5-15 degrees create obvious swaying. 30-90 degrees create dramatic rocking or partial spins. 360 allows complete rotation. Small values (1-5) work well for organic movement, larger values for more dramatic effects. Remember that faster rotation at larger angles needs more motion blur to look smooth |
| rotation_temporal_phase | FLOAT | 30.00–360 | Sets when rotation peaks occur in the animation cycle (0-360 degrees). Like other temporal phases, this helps coordinate rotation with other movements. Try setting this 120 degrees apart from position and scale for complex, organic movement where each aspect peaks at different times. Great for creating flowing, natural-looking animation or controlling precise mechanical timing |
| rotation_spatial_phase | FLOAT | 60.00–360 | Influences the rotational movement pattern. While less intuitive than other spatial phases, this can create interesting variations in how rotation combines with other movements. Different values create different relationships between rotation and position/scale changes. Experiment with this when fine-tuning complex animations |
| time_remap_curve | COMBO | smooth | Controls how movement transitions happen. 'Linear' moves at constant speed - mechanical but predictable. 'Ease' starts slow, speeds up in the middle, then slows down - good for natural movement. 'Ease-in' starts slow and speeds up - like falling. 'Ease-out' starts fast and slows down - like throwing upward. 'Smooth' is extra gentle with strongest smoothing - best for flowing, peaceful movements. Each option drastically changes the feel of your animation |
| motion_blur | FLOAT | 0.300–1 | Adds motion blur based on movement speed and direction - just like a camera capturing fast motion. At 0, movements are crisp but can look choppy. Values around 0.3-0.5 give natural-looking blur. Higher values create more dramatic streaking effects. The blur automatically adapts to movement speed - faster movement creates stronger blur. Great for smoothing fast movements or creating artistic streaking effects |
| motion_tile | COMBO | mirror | Controls what happens at the edges of your frame during movement. 'Disabled' shows empty space/transparency when movement reveals edges. 'Mirror' creates reflected copies at edges - great for seamless motion, prevents empty gaps. 'Repeat' tiles the image at edges like a pattern. 'Mirror' is usually best for natural footage, while 'repeat' can work well for patterns or textures. Important when your movement range is large enough to show edges |
| motion_tile_auto_margin | BOOLEAN | true | When enabled, automatically calculates how much extra space is needed around edges based on your movement settings. This ensures no empty spaces appear during motion. When disabled, you can manually set the margin size. Auto mode is usually best unless you need precise control over edge handling. The auto calculation considers position, scale, and rotation ranges to determine optimal margins |
| motion_tile_margin | FLOAT | 500–200 | Sets the size of edge margins in pixels when auto margin is disabled. This is how much extra space to add around your image for movement. Larger values prevent edge gaps but use more memory. As a rule of thumb, should be at least as large as your maximum movement range (position_magnitude). Too small margins may show edges, too large wastes processing power. Only used when motion_tile_auto_margin is false |
| noise_type | COMBO | perlin | Selects the algorithm that generates the wiggle pattern. 'Perlin' is smooth and natural, great for organic movement like leaves or floating. 'Simplex' is similar but more efficient, good for complex animations. 'Value' creates sharper, more defined changes - good for mechanical or glitch effects. 'Cellular' produces organic, tissue-like patterns great for biological or abstract effects. Perlin is the safest choice for most animations, experiment with others for unique effects |
| noise_octaves | INT | 61–8 | Controls how many layers of detail are in the wiggle pattern. Each octave adds a finer layer of movement. 1 octave = simple, smooth movement. 4-6 octaves = natural, complex movement with several scales of detail. 8 octaves = very detailed movement but slower to calculate. More octaves create more natural, fractal-like motion but require more processing power. Think of it like adding harmonics to a musical note |
| noise_persistence | FLOAT | 0.600–1 | Determines how much each finer detail layer contributes to the movement. Low values (0.2-0.4) create movement dominated by broad, sweeping motions with subtle detail. Higher values (0.6-0.8) make finer details more noticeable, creating more nervous or jittery motion. At 1.0, all detail layers have equal strength. This is like adjusting the mix between broad and fine movement patterns |
| noise_lacunarity | FLOAT | 1.501–4 | Controls how much finer each detail layer becomes. At 1.0, each layer has similar scale. Higher values (2.0+) make each layer much finer than the last, creating more distinction between broad and fine movements. Lower values keep the detail scales more similar. Typically, values between 1.5 and 2.0 give the most natural results. Think of it as adjusting the contrast between different scales of movement |
| interpolation | COMBO | bicubic | Determines how pixels are calculated when the image transforms. 'Bicubic' gives the smoothest, highest quality results but is slowest. 'Bilinear' is a good balance of quality and speed. 'Nearest' gives sharp, pixelated edges - usually only used for pixel art or special effects. For most footage, stick with bicubic. Use bilinear if you need more speed, or nearest for deliberately pixelated looks |
| seed | INT | 00–4294967295 | Sets the random seed for generating the wiggle pattern. The same seed always creates the same movement pattern (when other settings are unchanged). This lets you precisely recreate animations or synchronize multiple elements. Change the seed to get completely different movement patterns while keeping all other settings the same. Useful for trying different movements or creating variety among multiple animated elements |
| buy_me_a_coffee | BOOLEAN | false | A little checkbox that means a lot! Enable this to support the development of this node and future improvements. Every coffee helps fuel new features and optimizations. Think of it as buying the developer a coffee to say thanks! ☕ |
| usage_counter | STRING | Usage count: 0 | Tracks how many times this node has been used across all your projects |
| maskopt | MASK | Optional mask to control where the wiggle effect appears. White areas in the mask get full effect, black areas stay still, gray areas get partial effect. Perfect for making only parts of your image wiggle while keeping other parts stable. Great for combining with animated masks for complex effects | |
| reference_frameopt | IMAGE | Optional reference frame for advanced motion calculations. This is a placeholder for future features that will enable more complex motion analysis and matching. Currently not actively used but included for future compatibility |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MASK | MASK | — |