Camera Move
Pan across a still or rendered frames
- images
- images
- info
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, orRandom.vertical_direction-None,Top,Bottom, orRandom.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.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| horizontal_direction | COMBO | None | 4 options: None, Left, Right, Random |
| vertical_direction | COMBO | None | 4 options: None, Top, Bottom, Random |
| distance_px | FLOAT | 100 | — |
| duration_s | FLOAT | 5.0 | — |
| ease | COMBO | Ease_Out | 4 options: Linear, Ease_In, Ease_Out, Ease_In_Out |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| info | STRING | — |