CamOrbit
Camera presets for people who don't think in degrees
- image
- prompt
- label
- camera_info
"Lackluster-Camera" makes you dial in azimuth and elevation yourself. CamOrbit is the version for when you just want to say "right profile" or "worm's-eye" and be done. It's the friendlier face of the pack's camera angle generator: pick a named preset, and it builds the exact same kind of optimized angle prompt - <sks> right side view eye-level shot close-up - plus the matching LOAD_3D_CAMERA record for the 3D preview widget.
How it works
The preset dropdown is the star. Sixteen entries including the full framing vocabulary: Front (eye-level / low / high), Left and Right Profile, the 3/4 views, Back, Overhead, Worm's-eye, Dutch Angle Right, and two close-ups. Choose one and the node applies its stored azimuth/elevation/distance. Or pick "Custom" and set the three numbers yourself - azimuth (0–360°), elevation (-30° to 60°), distance (0 = wide, 10 = close-up).
Two extra touches the plain camera node lacks:
- prefix - the token prepended to each prompt, default
<sks>. This one actually works, unlike the single node's vestigialdefault_prompts. - extra_prompt - text appended after the generated camera phrase, so you can say "right profile, holding a coffee cup" without editing the angle wording.
Outputs
- prompt (STRING) -
<sks> <angle> <height> <shot size> <extra>, straight into your text encoder - label (STRING) - the preset name you picked; handy if you're labeling batch results
- camera_info (
LOAD_3D_CAMERA) - 3D scene metadata for the preview widget
Choosing between CamOrbit and Lackluster-Camera
Honest take: if you know your angles, they're functionally equivalent - CamOrbit just wraps the same math with named presets. Where CamOrbit wins is speed and readability: a preset dropdown is way easier to share in a workflow than three numeric sliders, and the label output makes per-shot bookkeeping painless. Reach for it when you're assembling shot lists; reach for Lackluster-Camera when you want fine numeric control.
Install notes
Same pack, same light install - ComfyUI Manager ("ComfyUI Lackluster Nodes") or clone + pip install -r requirements.txt (requests + numpy only, no models). One gotcha to remember: the 3D preview widget is a compiled Vue/three.js app that the repo doesn't ship built, so if camera_view doesn't render a scene, it's cosmetic - the prompt generation is unaffected.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| preset | COMBO | Front (eye-level) | 16 options: Custom, Front (eye-level), Front (low), Front (high), Right Profile, Left Profile, +10 |
| azimuth | INT | 00–360 | Horizontal angle (0-360°) |
| elevation | INT | 0-30–60 | Vertical angle (-30° to 60°) |
| distance | FLOAT | 5.00–10 | Camera distance (0=wide, 10=close-up) |
| prefix | STRING | <sks> | Prefix token for each prompt |
| extra_prompt | STRING | Extra text appended to the generated prompt | |
| camera_view | BOOLEAN | false | Toggle camera perspective preview |
| imageopt | IMAGE | Optional input image for 3D scene preview |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| label | STRING | — |
| camera_info | LOAD_3D_CAMERA | — |