ComfyUI Node

MX_LensZoomBurst

The zoom-kick effect, rendered one frame at a time

By Intersection98·Created 2 years ago·Updated 2 years ago· 13
MX_LensZoomBurst
  • images
  • IMAGE
scale1.50
samples100
position_x0.50
position_y0.50
rotation0.00
method
stabilization

LensZoomBurst is the pack's "zoom kick" node - the effect you get when you change focal length mid-exposure, so the frame streaks outward from a center point like light trails. It's a one-stop cinematic effect: feed it an image, pick a zoom center, and it builds the burst for you.

It's part of Intersection98/ComfyUI-MX-post-processing-nodes, and it sits alongside MX_LensBokeh and MX_LensOpticAxis in the pack's postprocessing/lens category. It's the compute-heavy one: the effect is simulated by literally stacking many slightly-scaled copies of the image, so the samples input trades quality against time.

How it works

The node iteratively re-scales the image toward (or away from) your chosen position_x/position_y center, samples times, averaging each new scaled copy into the running result. Each iteration pushes the scale by a fraction of the total (scale - 1 divided by samples), so you're building up the streak gradually rather than in one jump. Two method options control how the scaling falls off across the frame:

  • circle - falloff is based on distance from the zoom center, so the burst is stronger near the edges of the frame.
  • point - a uniform point-perspective scaling, more like the whole image rushing away from the center.

rotation adds a twist of rotation per iteration for a spiral/zoom hybrid. And stabilization (true/false) changes the math: stabilized mode averages pairs of opposing scaled copies (up and down), which reduces ghosting artifacts at the cost of doing two warps per sample. The end result is that classic radial streak centered on your chosen point.

The inputs that matter

  • images - your IMAGE tensor.
  • position_x / position_y - 0 to 1, default 0.5 (dead center). The zoom center; put it on the subject, not the background, or the streaks will look wrong.
  • scale - 1 and up, default 1.5. Total zoom range of the burst. Must be ≥ 1.0 - the node throws a ValueError if it isn't.
  • samples - 1 and up, default 100. Number of stacked frames. More = smoother streaks, linearly more compute. Drop it to 30–50 for a quick preview, crank it for final.
  • rotation - 0–360 degrees of total twist across the burst.
  • method - circle or point.
  • stabilization - true or false.

Output is a single IMAGE.

Install

Standard MX pack install. ComfyUI Manager (search MX or ComfyUI-MX-post-processing-nodes), or:

cd ComfyUI/custom_nodes
git clone https://github.com/Intersection98/ComfyUI_MX_post_processing-nodes
cd ComfyUI_MX_post_processing-nodes
pip install -r requirements.txt

Restart ComfyUI; it's under postprocessing/lens. No models - it's pure OpenCV remap/warpAffine, using the pack's opencv-python dependency.

Where people get burned

Patience: at the default 100 samples on a large image this node is not fast, and it runs on every re-queue. Dial samples way down while you find the composition, then raise it for the final render. Second, the scale >= 1 rule is strict - a value like 0.99 (which feels like "zoom out") throws an error rather than inverting. And the border behavior deserves a mention: with stabilization off, edges can smear toward the center oddly; if you see edge artifacts, flip stabilization to true and re-run. For a beginner, start centered at 0.5/0.5, scale 1.3, samples 40, method circle - that's a recognizable "street photography zoom burst" before you touch anything else.

Categorypostprocessing/lens

Inputs (8)

NameTypeDefaultDescription
imagesIMAGE
scaleFLOAT1.50
samplesINT100
position_xFLOAT0.50
position_yFLOAT0.50
rotationFLOAT0.000–360
methodCOMBO2 options: circle, point
stabilizationCOMBO2 options: true, false

Outputs (1)

NameTypeDescription
IMAGEIMAGE