Lighting Selector
Lighting as a dropdown you can randomize
- prompt
Lighting Selector is the pack's mood knob: 16 lighting setups from soft natural light to neon lighting to dramatic chiaroscuro, rendered as Change lighting to golden hour in one string. Lighting is the single cheapest way to change the entire feel of a render - same subject, same pose, golden hour versus backlight versus moonlight are three different photographs - and this node makes that a dropdown you can flip or randomize without touching your main prompt.
How it works
Same architecture as the rest of the pack. Pick a lighting choice, the node wraps it in the prefix Change lighting to and returns one STRING named prompt. No models, no deps, no network - a handful of lines of standard-library Python. Set the dropdown to random and it samples from the 16 presets using random.Random(seed), deterministic per seed until you change it or set control_after_generate to randomize.
The curated list covers the useful territory without bloat: natural light (soft, harsh, golden hour, blue hour, overcast), studio techniques (studio, rim, backlight, side, top-down, low-key, high-key), and the stylistic tail (neon, candlelight, moonlight, chiaroscuro). That's a real cinematic vocabulary, and having it in a dropdown means you stop misremembering whether it's "rim lighting" or "edge lighting" - the node spells it right for you.
Inputs and outputs that matter
lighting- the 16-preset dropdown plusrandom. Defaultsoft natural light.seed- only matters whenlightingisrandom.previous_prompt(optional) - chain another selector's output in front of this one.prefixandseparator- defaults (Change lighting toand,) are right; leave them.- Output: one STRING named
prompt, into CLIPTextEncode or into the next selector.
Chain it with the pack for a full scene beat: Change lighting to low-key lighting, Change background to dive bar, Change camera angle to front view eye-level shot medium shot. The instruction phrasing is built for Flux 2 Klein 9B, the editing model the pack is named after, which responds to short "change X to Y" commands - and on a plain checkpoint the output is just a standard lighting tag.
Install
ComfyUI Manager, search "Multi-Angle Camera Selector", install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/saluzafa/comfyui-klein9b-multi-angle
Zero dependencies (standard library only), no model downloads, MIT licensed. It sits under prompt/scene in the node menu.
Gotchas
- The node names the light; the model has to paint it. "Rim lighting" is a strong, well-understood phrase and usually lands; "dramatic chiaroscuro" is more of a coin toss on smaller models. When a lighting choice doesn't read, that's the checkpoint's vocabulary, not the node's.
- Contradictory lighting is the classic self-sabotage: don't chain
harsh sunlightandmoonlightinto the same prompt and expect a coherent scene. Keep lighting instructions to one node in the chain. random+ a randomized seed is genuinely fun here - set it, queue a batch, and watch the same scene get re-lit across golden hour, neon, and candlelight. It's the cheapest way to find the lighting that makes a subject pop.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| lighting | COMBO | soft natural light | 17 options: random, soft natural light, harsh sunlight, golden hour, blue hour, overcast daylight, +11 |
| prefix | STRING | Change lighting to | — |
| separator | STRING | , | — |
| seed | INT | 00–18446744073709550000 | — |
| previous_promptopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |