Lackluster-Shot Queue (v2 3D Widget)
Queue up to 10 shots from an interactive 3D scene
- image
- prompts
- prompt_text
- camera_info
- queue_count
This is the pack's "set up a whole shoot, then run it" node. Where the plain camera nodes produce one prompt per run, Lackluster-Shot Queue is built around a queue: pick camera angles, add them up to a maximum of ten shots, then let ComfyUI execute each one sequentially. It's the same angle-to-prompt engine as the rest of the family, wrapped in a workflow that finally matches how you actually plan a shoot.
How it works
The plan is: set the angle with horizontal_angle (0–360°), vertical_angle (-30° to 60°) and zoom (0 = wide, 10 = close-up), and build the shot list. The list lives in sequence_json, an array of {azimuth, elevation, distance} objects - and if you're using the interactive 3D widget, that's what you're editing when you drag the camera around and add shots. Flip camera_view on to get the 3D scene, optionally drop an image in as context.
On each run the node converts every queued shot into a prompt (custom_prefix, default <sks>, prepended) and emits:
- prompts (STRING list) - one prompt per shot, triggering sequential execution
- prompt_text (STRING) - all shots joined for review
- camera_info (
LOAD_3D_CAMERAlist) - matching 3D metadata per shot - queue_count (INT) - how many shots are queued
The name says "v2 3D Widget" in your menu, which is where the confusion starts - see below.
Wait - which Shot Queue is which?
This pack ships two nodes with near-identical names and you will mix them up at least once.
- Lackluster-Shot Queue (v2 3D Widget) - this one. Raw angles + interactive 3D widget +
sequence_json. You build the queue yourself, visually or by hand. - Lackluster-Shot Queue V2 - the other one (
LacklusterShotQueueNodeV2). Preset-based: 15 named shot presets (front close-up, low-angle hero, dutch angle…) andadd_to_queue/run_queue/clear_queuetoggle buttons. No 3D scene.
Different files, different inputs. The display names are genuinely terrible for telling them apart - check whether the node has a camera_preset input (that's the V2) or horizontal_angle sliders (that's this one).
Gotchas
- If
sequence_jsonis empty, it falls back to a single default shot - confirm queue_count is what you expect before you queue a long run. - The interactive widget is a compiled Vue/three.js app the repo doesn't ship built, so on a plain clone the 3D scene may not render. The queue logic still works - you can hand-edit
sequence_jsoneither way.
Install: ComfyUI Manager → "ComfyUI Lackluster Nodes" (deps: requests + numpy only, no models).
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| horizontal_angle | INT | 00–360 | Camera azimuth angle (0-360°) |
| vertical_angle | INT | 0-30–60 | Camera elevation angle (-30° to 60°) |
| zoom | FLOAT | 5.00–10 | Camera distance (0=wide, 10=close-up) |
| camera_view | BOOLEAN | false | Toggle camera perspective preview |
| custom_prefix | STRING | <sks> | Prefix appended to each prompt |
| sequence_jsonopt | STRING | [] | JSON array of queued shots |
| imageopt | IMAGE | Optional input image to display in 3D scene |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| prompts | STRING | — |
| prompt_text | STRING | — |
| camera_info | LOAD_3D_CAMERA | — |
| queue_count | INT | — |