Background Changer Selector
49 backgrounds in a dropdown, plus a free-text escape hatch
- prompt
Background Changer Selector is the pack's escape hatch: one dropdown with 49 preset locations, a free-text field for when the dropdown isn't enough, and out comes Change background to busy city street at night as a single string. It belongs to the same family as the pack's other selectors - no models, no API calls, just prompt text - but it's the one with the custom override, and that override is the reason you'll actually keep this node around.
How it works
Under the hood it's pure Python string building. Pick a background from the dropdown and it wraps it in the prefix Change background to , then returns a STRING named prompt. Set the dropdown to random and it samples one of the 49 presets using random.Random(seed) - deterministic per seed, so the "random" is reproducible until you change the seed.
Here's the important bit, and it's right in the README: the custom_background field overrides the dropdown whenever it's non-empty. Type abandoned greenhouse into it and that's what goes into the prompt - the dropdown is ignored, and the seed stops mattering entirely because there's nothing left to randomly pick. That's the escape hatch. The 49 presets are good - living room through neon-lit Tokyo street through green screen, with studio backdrops at the end for product-shoot vibes - but the moment you need a location the author didn't list, you don't add a node, you just type.
Inputs and outputs that matter
background- the 49-location dropdown plusrandom. Defaultliving room.custom_background- free text, multiline. Non-empty value wins over the dropdown.seed- only does anything when you're usingrandomwith an empty custom field.previous_prompt(optional) - chain another selector's output in front of this one.- Output: one STRING named
prompt, into CLIPTextEncode or into the next selector'sprevious_prompt.
Chaining works like the rest of the pack: Change camera angle to ... , Change background to tropical beach - one sentence, both nodes speaking the same instruction language. That phrasing is aimed squarely at Flux 2 Klein 9B, the editing model the pack is named after, which wants short "change X to Y" instructions. On a regular checkpoint it still reads as a perfectly ordinary scene 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
There are no dependencies (standard library only) and no models to download - the install is the same two commands for every node in the pack. It lives under prompt/scene in the menu.
Gotchas
- The custom field overriding the dropdown is easy to trip over in reverse: if you filled in a custom background weeks ago and the dropdown seems to be ignoring you, that's why. Empty the custom field to get the dropdown back.
- Because custom text ignores the seed, two queue runs with the same custom background and different seeds give identical prompts. That's correct behavior - the text is just text.
- 49 presets is a lot of scrolling. The
randomoption is the pragmatic middle ground: set it, randomize the seed per queue, and let the sampler audition locations for you. - One caveat on the pack name: "multi-angle" it may be, but this node doesn't touch your image at all. It writes the words; the model does the relocating. If the background isn't changing, the issue is prompt adherence on the model's side, not this node.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| background | COMBO | living room | 50 options: random, living room, messy living room, bedroom, messy bedroom, modern kitchen, +44 |
| custom_background | STRING | — | |
| prefix | STRING | Change background to | — |
| separator | STRING | , | — |
| seed | INT | 00–18446744073709550000 | — |
| previous_promptopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |