ComfyUI Node

CamOrbit Sequence

Orbit a subject with auto-sweep, no per-angle typing

By LacklusterOpsec·Created 5 months ago·Updated 16 days ago· 1
CamOrbit Sequence
  • image
  • prompts
  • prompt_text
  • labels_text
  • count
  • camera_info
modejson_sequence
prefix<sks>
sequence_json[]
sequence_csvlabel,azimuth,elevation,distance,extra Front,0,0,5.0, Right,90,0,4.0,
sweep_start0
sweep_end360
sweep_steps8
sweep_elevation0
sweep_distance5.0
extra_prompt

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 optional label, extra, and prefix keys 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_CAMERA list) - 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_steps removes.
  • Per-entry prefix overrides 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.

CategoryLackluster/Camera

Inputs (11)

NameTypeDefaultDescription
modeCOMBOjson_sequence3 options: json_sequence, csv_sequence, auto_sweep
prefixSTRING<sks>Prefix token for each prompt
sequence_jsonoptSTRING[]JSON array of angle entries. Each entry: {"azimuth":0,"elevation":0,"distance":5.0} Optional keys: "label":"my view","extra":"text","prefix":"<sks>"
sequence_csvoptSTRINGlabel,azimuth,elevation,distance,extra Front,0,0,5.0, Right,90,0,4.0,CSV with columns: label,azimuth,elevation,distance[,extra]
sweep_startoptINT00–360Starting azimuth for auto sweep
sweep_endoptINT3600–360Ending azimuth for auto sweep
sweep_stepsoptINT81–72Number of steps in sweep
sweep_elevationoptINT0-30–60Fixed elevation for sweep
sweep_distanceoptFLOAT5.00–10Fixed distance for sweep
extra_promptoptSTRINGExtra text appended to every prompt
imageoptIMAGEOptional input image for preview

Outputs (5)

NameTypeDescription
promptsSTRING
prompt_textSTRING
labels_textSTRING
countINT
camera_infoLOAD_3D_CAMERA