đź’€Motion Distortion
Waves, vortices, and pincushion warps on your layer
- Distortion
When a logo sliding in isn't enough and you need the layer itself to bend, 💀Motion Distortion is the S4Motion node for it. It's the flashiest of the effectors: three warp styles - wave, vortex, and radial - each animated over time with the pack's standard default→target keyframe pattern.
It's still an effector, so it only comes alive when its Distortion output (an S4_DISTORTION_EFFECTOR) is wired into the distortion_effector socket on đź’€Motion Config. Motion Config applies the warp to the layer each frame, before rotation and scale - so a distorted layer still slides, spins, and fades like normal.
The shared timing controls are the usual ones: duration, delay, motion_curve (linear/ease_in/ease_out/ease_in_out), inverse, and loop. What changes per mode is the parameter set, and every parameter comes in a _default/_target pair so you can animate it from one value to another:
- Wave -
wave_amplitude(pixels of displacement, default 0 → 10),wave_wavelength(spacing between ripples, 1–4096),wave_phase(offset in degrees, so animating 0→360 moves the ripple across the image), andwave_direction(x,y, orxy). - Vortex -
vortex_strength_deg(twist in degrees, -720 to 720),vortex_radius_px(how far from the center the swirl extends), andvortex_phase_deg(spin the swirl itself; 0→360 is a full rotation). - Radial -
radial_k(a lens-distortion coefficient, -2 to 2). 0 = flat, positive = pincushion (edges pulled outward), negative = barrel (edges bulge in). Default animates 0 → 0.2, which is a subtle barrel warp.
The way to think about it: the _default value is frame one, the _target is the last frame of the move, and the curve decides the in-between. Animate wave_phase 0→360 with linear for a steady ripple scroll; animate radial_k 0→0.5 with ease_in_out for a lens popping on.
Install
cd ComfyUI/custom_nodes/
git clone https://github.com/S4MUEL-404/ComfyUI-S4Motion.git
pip install -r ComfyUI-S4Motion/requirements.txt
or ComfyUI Manager → "S4Motion" → install → restart.
Gotchas
- Distortion is expensive. Every frame gets a full remap, and a heavy vortex on a big layer at 30fps will noticeably slow a render. Keep layers modestly sized and test one mode at a time.
- The effect is applied per-layer, not per-background - the background stays static unless you distort it too.
- The
_default/_targetpairs can look intimidating, but you almost never touch all of them. Pick a mode, leave the params you don't care about at their defaults, and animate the one that matters (usually phase or amplitude).
There are example workflows for all three modes in the pack's examples/ folder (Distortion_Wave.json, Distortion_Vortex.json, Distortion_Radial.json) - the pack has no reddit presence, so those files are the documentation. Distortion is the effect that makes S4Motion feel like more than a slide-and-fade toolkit.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| mode | COMBO | wave | 3 options: wave, vortex, radial |
| duration | FLOAT | 1.000–30 | — |
| delay | FLOAT | 0.000–30 | — |
| motion_curve | COMBO | linear | 4 options: linear, ease_in_out, ease_in, ease_out |
| inverse | BOOLEAN | false | — |
| loop | BOOLEAN | false | — |
| wave_amplitude_default | FLOAT | 0.00–1024 | — |
| wave_amplitude_target | FLOAT | 10.00–1024 | — |
| wave_wavelength_default | FLOAT | 100.01–4096 | — |
| wave_wavelength_target | FLOAT | 100.01–4096 | — |
| wave_phase_default | FLOAT | 0-360–360 | — |
| wave_phase_target | FLOAT | 360-360–360 | — |
| wave_direction | COMBO | x | 3 options: x, y, xy |
| vortex_strength_deg_default | FLOAT | 20-720–720 | — |
| vortex_strength_deg_target | FLOAT | 20-720–720 | — |
| vortex_radius_px_default | FLOAT | 2561–8192 | — |
| vortex_radius_px_target | FLOAT | 2561–8192 | — |
| vortex_phase_deg_default | FLOAT | 0-3600–3600 | — |
| vortex_phase_deg_target | FLOAT | 360-3600–3600 | — |
| radial_k_default | FLOAT | 0.000-2–2 | — |
| radial_k_target | FLOAT | 0.200-2–2 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| Distortion | S4_DISTORTION_EFFECTOR | — |