ComfyUI Node

Camera Move

Pan across a still or rendered frames

By scofano·Created 10 months ago·Updated 19 days ago· 0
Camera Move
  • images
  • images
  • info
horizontal_directionNone
vertical_directionNone
distance_px100
duration_s5.0
easeEase_Out

The zoom node gives you push-ins and pull-backs; this one gives you the pan. Camera Move slides the viewport across a batch of images in X and Y - left, right, up, down, or a diagonal combination of two - over the duration of the sequence. It's the tool for the shot where the camera tracks sideways past a subject, or the classic "pan across a wide landscape still."

It's an in-graph image node: IMAGE frames in, IMAGE frames out, no file round-trip. Pair it with Zoom Sequence from the same pack and you've got a surprisingly complete "animator's toolkit" for making stills and short renders feel like they were shot, not generated.

How it works

The node computes an eased motion envelope across the batch and shifts the crop window over time by distance_px total pixels. Moving the window is done with border fill and edge clamping so you don't get a black gutter sliding through the frame - the crop stays inside the canvas. With both a horizontal and a vertical direction selected, you get a diagonal tracking move. The ease dropdown (Linear / Ease_In / Ease_Out / Ease_In_Out) shapes how the motion accelerates; Ease_Out, the default, starts brisk and settles, which is the least mechanical-looking.

Inputs and output

  • images - batched frames.
  • horizontal_direction - None, Left, Right, or Random.
  • vertical_direction - None, Top, Bottom, or Random.
  • distance_px - total travel in pixels (default 100). On 1080p frames, 100px is a gentle slide; 300+ is a real pan.
  • duration_s - how long the move takes (default 5 seconds). The batch length and this number together set how fast the camera travels per frame.
  • ease - motion easing.

Outputs: images (same shape as input) and info (a diagnostics string). Unlike the video-file version of this node, there's no audio to worry about - this is purely frame geometry.

Direction semantics trip people once: Left means the camera travels left, so the content appears to move right across the screen. If your pan feels backwards, flip the direction.

Installing it

Ships with the Simple Video Effects pack:

cd ComfyUI/custom_nodes
git clone https://github.com/scofano/ComfyUI-Simple-video-effects
cd ComfyUI-Simple-video-effects
pip install -r requirements.txt

Restart ComfyUI, or install via ComfyUI Manager (search "Simple Video Effects"). Pure PyTorch image math - no models, no ffmpeg requirement.

Common issues

The classic mistake is a big distance_px on a short batch: the camera moves further per frame than feels natural, and you lose a lot of the frame to the crop. Keep distance proportional to your resolution and sequence length. If the move looks stepped or jittery, check your easing - Linear on a long slow pan can read as robotic, and Ease_In_Out or Ease_Out smooths it out. And remember this node animates within the batch you give it - if you feed it a single still (batch of 1), there's nothing to animate over; run it on a repeated frame sequence or the output of an image-to-video stage.

CategorySimple Video Effects/Image Processing

Inputs (6)

NameTypeDefaultDescription
imagesIMAGE
horizontal_directionCOMBONone4 options: None, Left, Right, Random
vertical_directionCOMBONone4 options: None, Top, Bottom, Random
distance_pxFLOAT100
duration_sFLOAT5.0
easeCOMBOEase_Out4 options: Linear, Ease_In, Ease_Out, Ease_In_Out

Outputs (2)

NameTypeDescription
imagesIMAGE
infoSTRING