Nodes/Muffins Flat 2 Panoramic/Fisheye Lens Warp Only
ComfyUI Node

Fisheye Lens Warp Only

A fisheye warp that adds nothing — no padding, no resize, just distortion

By Ragamuffin20·Created 5 months ago·Updated about a month ago· 19
Fisheye Lens Warp Only
  • images
  • fisheye_images
  • info
strength0.70
rectilinear_fov150.0
zoom1.00
center_x0.500
center_y0.500
lens_radius0.98
edge_fade0.08
vignette0.28

The name is a promise this node actually keeps: it only warps. No new padding, no resize, no projection to a different shape. You give it an image or video-frame batch and it bends the pixels into a fisheye-style view, same dimensions out as in. That narrow scope is the point - it's a refinement pass for the middle of an outpainting pipeline, not a converter.

Here's the context it slots into. In the Muffins-Flat-2-Panoramic workflow you first outpaint a flat frame onto a larger panoramic canvas (Pano Outpaint Canvas handles that), then you run a second pass to push the result toward the lens look your viewer expects. FisheyeLensWarpOnly is that second pass when you want the appearance of a fisheye - curved horizon, barrel distortion - without committing to a full circular projection. It's the "make it look like the lens" step, while its sibling FisheyeProjectionOnly is the "reproject it into a different frame shape" step.

The knobs that matter

The warp is a remap: every output pixel looks up a source pixel, with a strength blend between the flat image and a fisheye-distorted version of itself. Most of the inputs follow from that.

  • strength (default 0.7) - how much fisheye vs. flat. 0 does nothing; 1 is full fisheye.
  • rectilinear_fov (default 150) - the field of view the distortion pretends the lens has. Higher = more bend at the edges.
  • lens_radius (default 0.98) - where the lens circle sits relative to the frame edge.
  • center_x / center_y - shift the lens center if your shot isn't centered.
  • zoom - magnify after warping.
  • edge_fade (default 0.08) and vignette (default 0.28) - the two cosmetic controls. edge_fade darkens pixels beyond the lens circle; vignette adds a soft darkening toward the edges inside it, which sells the "real lens" look.

You'll mostly live on strength, rectilinear_fov, and maybe vignette. The others are there for when a frame is off-center or you want a harsher falloff.

Output

One output that matters: fisheye_images, an IMAGE batch the same size as your input. There's also an info string that logs every setting, handy when you're A/B testing and want to remember which combo produced which frame.

Installing it

Same pack as the rest of the Muffins nodes, and it's about as light as a dependency gets - the requirements file is just numpy. Via ComfyUI Manager, search "Muffins-Flat-2-Panoramic-node", or:

cd ComfyUI/custom_nodes
git clone https://github.com/Ragamuffin20/Muffins-Flat-2-Panoramic-node.git
cd Muffins-Flat-2-Panoramic-node
python -m pip install -r requirements.txt

Restart ComfyUI and the node appears under the video/utils category.

Gotchas

Because edge_fade darkens everything outside the lens circle, a frame with edge_fade left at the default will show dimmed corners even where there's real content - if you want the full frame visible, set it to 0. And keep in mind what this node is not: it won't produce a viewable equirectangular output on its own. It shapes the pixels for the final panoramic step; run it, then feed the result into the pack's apply panoramic / Convert To VR node. And since it warps in place, batch-processing a video clip gives you a consistent lens look frame to frame - which is exactly what you want from a second pass.

Categoryvideo/utils

Inputs (9)

NameTypeDefaultDescription
imagesIMAGE
strengthFLOAT0.700–1
rectilinear_fovFLOAT150.060–178
zoomFLOAT1.000.25–3
center_xFLOAT0.5000–1
center_yFLOAT0.5000–1
lens_radiusFLOAT0.980.25–1.5
edge_fadeFLOAT0.080–0.5
vignetteFLOAT0.280–1

Outputs (2)

NameTypeDescription
fisheye_imagesIMAGE
infoSTRING