Nodes/Difforum/Difforum · Camera Shots (director)
ComfyUI Node

Difforum · Camera Shots (director)

A shot list with hard cuts, no keyframe math

By chillithebillis·Created 3 months ago·Updated about a month ago· 7
Difforum · Camera Shots (director)
  • params
  • audio
  • camera
  • info
shots0: dolly_in 1.0 1.0 48: orbit_right 1.2 0.8 96: spiral
mode2d
fov40

Camera work in Deforum-style animation usually means one continuous move. Difforum · Camera Shots (director) is for when the clip needs to change - when you want a push-in, then an orbit, then a spiral, stitched across the timeline like cuts in an edit. You write a shot list, one line per cut, in the node's native syntax:

0: dolly_in 1.0 1.0
48: orbit_right 1.2 0.8
96: spiral

That's frame: preset [speed] [intensity], three fields, defaults optional. Out comes the same DIFFORUM_CAMERA track every Difforum renderer consumes, with the camera switching moves at your cut points - hard cuts, not blends. That distinction is the whole design decision: Camera Shots cuts, Camera Keys blends. This node concatenates segments, each running at a constant rate, and the next shot replaces the last outright. The velocity jumps at the boundary, and in Deforum-style animation a hard cut is a feature - it's how a music video punches from verse to chorus. If instead you want the camera to ease out of one move and into the next like a continuous crane shot, that's the Camera Keys node (the pack's own core code spells this out: shots are a cut, keys are a state machine).

Three inputs carry the weight:

  • shots - the shot list itself, multiline, one frame: preset [speed] [intensity] per line. frame is absolute, not cumulative, and speeds/intensities default to 1.0 when omitted. The internal parser tolerates plain shot-list syntax, so you can also drop in lines you've seen in Camera Keys format and it degrades gracefully.
  • mode - 2d / 3d. The familiar rule: 3D axes need a depth map downstream or they silently do nothing.
  • fov - static field of view for the clip (default 40). For lens changes mid-clip, that's Camera Keys' territory.
  • audio (optional) - the DIFFORUM_AUDIO socket, so your shot boundaries or speeds can be driven by curves rather than fixed numbers.

Outputs: camera and info, a summary that prints the parsed shot list against the frame count so you can see where each cut landed. Given that a mistyped frame number silently moves a cut, that summary is worth a glance before you burn a render.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/chillithebillis/Difforum.git difforum

Restart ComfyUI (console shows [Difforum] loaded N nodes) or install via ComfyUI Manager → "Difforum". numpy-only dependency.

Common issues

  • A cut lands nowhere near where you expected. frame is absolute and the node trusts you. 0: ... 48: ... 96: ... on a 120-frame clip cuts at 0/48/96 - but if your max_frames is 60, the 96 shot never plays. Verify against info.
  • "3D shots are static." Same pack-wide gotcha - depth map or bust in 3d mode. Shots with dolly/orbit presets are the ones that need it; zoom and roll work fine in 2d.
  • The camera jumps between shots. That's not a bug - it's the cut. If you wanted a continuous move you picked the wrong node; see Camera Keys.

The clean workflow: Camera Shots for the edit, Camera Keys for the crane, and if you want both, Film Director generates the shots and the keys from the same timeline. For a music video, though, this is the node - three lines of shot list and your camera behaves like an editor, not an animator.

CategoryDifforum/hybrid

Inputs (5)

NameTypeDefaultDescription
paramsDIFFORUM_PARAMS
shotsSTRING0: dolly_in 1.0 1.0 48: orbit_right 1.2 0.8 96: spiral
modeCOMBO2d2 options: 2d, 3d
fovFLOAT401–170
audiooptDIFFORUM_AUDIO

Outputs (2)

NameTypeDescription
cameraDIFFORUM_CAMERA
infoSTRING