Nodes/DJZ-Nodes/Fish Eye Effects V2
ComfyUI Node

Fish Eye Effects V2

Eight focal lengths of distortion, one dropdown

By MushroomFleet·Created 2 years ago·Updated 5 months ago· 78
Fish Eye Effects V2
  • images
  • IMAGE
lens_preset
fisheye_modefalse
custom_distortion0.00
focus_distance1.0
vignette_strength0.00
chromatic_aberration0.000
bokeh_blur0.00

FishEyeV2 is the lens-character node of the DJZ pack: it simulates what different focal lengths do to a frame, from 14mm ultra-wide barrel distortion to 200mm telephoto compression - plus a proper fisheye mode, bokeh, vignette, and chromatic aberration on top. If your generated video looks "too clean," like it was shot with an impossibly perfect lens, this is the node that adds the optical dirt real footage has.

The anchor is lens_preset, an eight-way dropdown: 14MM Ultra Wide, 24MM Wide, 35MM Standard, 50MM Normal, 85MM Portrait, 100MM Telephoto, 200MM Super Telephoto, and Custom. Each preset carries its own distortion and vignette profile, so the classic move is: pick the focal length that matches the shot's intent, then fine-tune. fisheye_mode is the toggle that decides how distortion is applied - off means polynomial lens distortion (the normal wide-angle curve), on means equidistant projection (the actual fisheye look where straight lines curve at the edges). Same input, two very different characters.

Then the shaping knobs. custom_distortion (−1.0 to 1.0) adds or subtracts from the preset - negative pushes barrel (edges bulge out), positive pushes pincushion (edges pinch in). focus_distance (0.1–10) sets the focal plane and bokeh_blur (0–1) is the depth-of-field strength that works against it. vignette_strength darkens corners, chromatic_aberration (0–0.02, a deliberately tight range) splits the RGB channels for that cheap-lens fringing.

The workflow reality check: on a single still this is a nice effect, but it earns its keep on video, where the same lens character has to be applied to every frame or the shot "breaks" between cuts. Baking a 24mm wide look onto 300 frames of generated footage is exactly the kind of thing that's miserable to do by hand and trivial with a node. It maintains original dimensions and aspect ratio, so nothing downstream has to re-fit.

The honest critique, same as the Anamorphic node in this pack: it's a distortion overlay, not ray-traced optics. The "bokeh" is a fixed radial blur, not a depth-aware defocus computed from actual scene depth - if you want true depth-of-field you'd pair this with a depth-map-based blur instead. Use bokeh_blur and focus_distance as flavor, not as a substitute for real DOF.

Two traps. First, custom_distortion is signed and small: −1 to +1 but the sweet spot is ±0.1–0.3; crank it to the stops and you'll get a cartoon bulge. Second, the presets assume a full-frame-ish sensor; on very wide or square inputs the same preset lands differently, so match the preset to the shape of your shot, not just the mood. No models, no downloads, torch math only. Install: ComfyUI Manager → "DJZ-Nodes", or clone + pip install -r requirements.txt (whole-pack install).

Categoryimage/effects

Inputs (8)

NameTypeDefaultDescription
imagesIMAGE
lens_presetCOMBO8 options: 14MM Ultra Wide, 24MM Wide, 35MM Standard, 50MM Normal, 85MM Portrait, 100MM Telephoto, +2
fisheye_modeBOOLEANfalse
custom_distortionFLOAT0.00-1–1
focus_distanceFLOAT1.00.1–10
vignette_strengthFLOAT0.000–1
chromatic_aberrationFLOAT0.0000–0.02
bokeh_blurFLOAT0.000–1

Outputs (1)

NameTypeDescription
IMAGEIMAGE