CamOrbit Sequence
Orbit a subject with auto-sweep, no per-angle typing
- image
- prompts
- prompt_text
- labels_text
- count
- camera_info
CamOrbit Sequence is the batch sibling of CamOrbit, and its superpower is that you don't have to write out every angle. Give it a start and end azimuth and it interpolates a full orbit for you - which is exactly what you want when the job is "shoot this character from every side."
Three modes
The mode dropdown picks how angles come in:
- json_sequence - paste a JSON array. Each entry is
{"azimuth":0,"elevation":0,"distance":5.0}with optionallabel,extra, andprefixkeys so a single shot can carry its own extra text. - csv_sequence - the same idea as CSV rows. The default even shows you the format:
label,azimuth,elevation,distance,extra. - auto_sweep - the fun one. sweep_start and sweep_end (azimuth, 0–360°) with sweep_steps (up to 72) and fixed sweep_elevation / sweep_distance produce a smooth orbit. Want a full 8-shot turnaround? start 0, end 360, steps 8.
A shared extra_prompt can be appended to every generated prompt, and prefix (default <sks>) prepends the token to all of them.
Outputs
- prompts (STRING list) - one per angle, for sequential batch execution
- prompt_text (STRING) - all prompts joined, for review or pasting
- labels_text (STRING) - the per-shot labels (your own, or auto-generated like
az90_el0_d5.0) - count (INT) - how many angles this run produced
- camera_info (
LOAD_3D_CAMERAlist) - matching 3D metadata per shot
Practical notes
- Always check
count. If the JSON is malformed or empty, it silently falls back to a single default angle. A 1-shot orbit is a disappointing surprise at the end of a long render. - Auto-sweep is the reason to pick this node. Typing eight JSON entries by hand is exactly the busywork
sweep_start/sweep_stepsremoves. - Per-entry
prefixoverrides the global one - handy if one shot needs a different trigger token than the rest.
Same light install as the rest of the pack (Manager → "ComfyUI Lackluster Nodes"; deps are just requests + numpy). This is the node I'd reach for over the single CamOrbit the moment a turnaround or product shoot has more than three angles - the auto-sweep alone is worth it.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| mode | COMBO | json_sequence | 3 options: json_sequence, csv_sequence, auto_sweep |
| prefix | STRING | <sks> | Prefix token for each prompt |
| sequence_jsonopt | STRING | [] | JSON array of angle entries. Each entry: {"azimuth":0,"elevation":0,"distance":5.0} Optional keys: "label":"my view","extra":"text","prefix":"<sks>" |
| sequence_csvopt | STRING | label,azimuth,elevation,distance,extra Front,0,0,5.0, Right,90,0,4.0, | CSV with columns: label,azimuth,elevation,distance[,extra] |
| sweep_startopt | INT | 00–360 | Starting azimuth for auto sweep |
| sweep_endopt | INT | 3600–360 | Ending azimuth for auto sweep |
| sweep_stepsopt | INT | 81–72 | Number of steps in sweep |
| sweep_elevationopt | INT | 0-30–60 | Fixed elevation for sweep |
| sweep_distanceopt | FLOAT | 5.00–10 | Fixed distance for sweep |
| extra_promptopt | STRING | Extra text appended to every prompt | |
| imageopt | IMAGE | Optional input image for preview |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| prompts | STRING | — |
| prompt_text | STRING | — |
| labels_text | STRING | — |
| count | INT | — |
| camera_info | LOAD_3D_CAMERA | — |