🔍 S42 CutFlow Lens Distortion
Give Your Footage a Lens Personality
- clip
- clip
- frame_count
- info
Real footage was shot through glass, and glass curves. Wide-angle lenses bulge the edges (barrel distortion), telephotos compress the center (pincushion), and tilt-shift lenses fake a miniature world with a razor-thin focus band. AI-generated video has none of that - it's optically sterile. S42CF_LensDistortion is the S42 CutFlow node that adds lens character back: barrel, pincushion, or tilt-shift, one node, no VRAM.
The modes
barrel(default) - edges curve outward, the wide-angle/fisheye look. Gives footage an immersive, POV quality. Paired with a subtle vignette, it's the fastest way to make a flat AI render feel like it was shot on a GoPro.pincushion- edges curve inward, the compressed telescopic look. Opposite personality, same family.tilt_shift- this one is different: instead of distorting geometry, it fakes a shallow depth-of-field with a horizontal in-focus band and blur above/below. That's the "miniature world" effect you see in aerial city shots. Herestrengthdoubles as the blur radius, and the next two inputs matter.
The inputs
strength- distortion amount for barrel/pincushion (0.1–0.3 subtle, 0.5+ strong). For tilt_shift it's the blur radius.focus_position- tilt-shift only: where the sharp band sits. 0 = top, 0.5 = center (default), 1 = bottom.focus_width- tilt-shift only: how wide the in-focus band is. Smaller = narrower sharp zone = more dramatic miniature effect. 0.3 is a reasonable starting point.
One thing the author's tooltip doesn't tell you: barrel and pincushion push pixels off-frame, which leaves soft edges. If you're not exporting at full-bleed, plan on following distortion with a slight crop - the pack's CropPad handles that in one step, or you can just live with the character if it's a stylized piece.
Where it fits
Lens distortion is a flavor node, and it reads best as part of a stack. The pack's own VFX example runs ChromaticAberration → LensDistortion → TemporalFX → GlitchFX - aberration for the color fringing, distortion for the glass, and the results genuinely look like footage from a damaged or characterful lens. A subtle barrel (0.15) plus a whisper of vignette is the "shot on real glass" recipe for AI content; tilt-shift at strength 0.5+ is the social-media miniature look.
Outputs are clip, frame_count, and info, standard for the pack.
Install
ComfyUI Manager → search "S42 CutFlow" → Install → restart. Or:
cd ComfyUI/custom_nodes/
git clone https://github.com/GeekyGhost/S42-CutFlow.git
pip install -r S42-CutFlow/requirements.txt
Restart fully; console prints [S42 CutFlow] Loaded 53 total nodes. Pure CPU/numpy, no models, no VRAM. The pack's one mandatory dependency is OpenCV (opencv-python-headless in requirements.txt; README says pip install opencv-python if you see "No module named 'cv2'").
Standing pack note: Geeky Ghost is grooming S42 CutFlow as a work-in-progress for LTX Desktop. The filter core is stable; the expanded nodes are where settings move between releases.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | IMAGE | Video clip. | |
| mode | COMBO | barrel | 'barrel' = edges curve outward (wide-angle lens). 'pincushion' = edges curve inward (telephoto). 'tilt_shift' = miniature/diorama blur effect. |
| strength | FLOAT | 0.300–2 | Distortion amount. 0.1-0.3 = subtle. 0.5+ = strong. For tilt_shift: blur radius. |
| focus_position | FLOAT | 0.500–1 | Tilt-shift focus band position. 0=top, 0.5=center, 1=bottom. Only used in tilt_shift mode. |
| focus_width | FLOAT | 0.300.05–0.8 | Width of the in-focus band for tilt-shift. Smaller = narrower sharp zone. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| clip | IMAGE | — |
| frame_count | INT | — |
| info | STRING | — |