Control Items Selector
Four toggles that tell ComfyUI what not to touch
- CONTROL_ITEMS
Control Items Selector (class Control Items) is the smallest node in the Interior Design for ComfyUI pack, and it's easy to underestimate. It's four checkboxes that emit one custom CONTROL_ITEMS value. But those checkboxes are where you tell the pipeline which parts of the room the model is allowed to rebuild - and which parts it has to leave alone. Virtual staging falls apart the moment the AI "fixes" a window into a wall or turns a door into a wardrobe. This node is the guardrail against exactly that.
How it works
Semantic segmentation doesn't just label "this is a room" - it labels every pixel: this is a windowpane, this is a door, this is a sofa. The pack's segmenter runs on the ADE20k class set, where each label is actually a list of synonyms. Control Items is a thin wrapper over that: each checkbox maps to one class (with its synonyms), like so:
window→windowpane;windowdoor→door;double;doorstaircase→stairway;staircasecolumns→column;pillar
The CONTROL_ITEMS output is just that list of strings. The Interior Design Segmentator then uses it the way the name implies - as a remove list. It filters those classes' colors out of the segmentation and out of the redesign mask, so the model treats windows and doors as fixed geometry and only redecorates everything else.
The default values make sense: window and door are checked, staircase and columns are not. Windows and doors are the features where a redesigned room usually looks broken if the model redraws them, so they're protected out of the box. Staircases and columns are rarer, so they start off as fair game.
Inputs and output
window(BOOLEAN, default on) - protects windowpanes/windows.door(BOOLEAN, default on) - protects doors.staircase(BOOLEAN, default off) - protects stairways.columns(BOOLEAN, default off) - protects columns and pillars.
One output, CONTROL_ITEMS, which wires straight into the Segmentator's control_items input. It has no meaning anywhere else in the graph - don't try to feed it into a random node expecting a string list.
The honest limits
There are only four toggles, and the label list is fixed in code. There's no "sofa" switch, no "curtains" switch, no way to type your own class. If you want to protect the TV or the existing furniture, you can't do it here - the redesign mask will include every class except the four protected ones. Related trap: the protection matches the exact ADE20k label names. A window with heavy curtains covering it may get classified as curtain rather than windowpane, and then it's fair game for the model. If you see your mask swallowing a window, that's usually what happened, and no checkbox fixes it.
Also worth knowing: this whole pipeline is SD 1.5-based, a port of the 2nd-place AICrowd Generative Interior Design 2024 solution. People do run it on real rooms and get surprisingly good virtual staging - but it's an SD 1.5 pipeline in 2026, so temper expectations accordingly.
Install
It ships with the pack, no extra dependencies of its own:
cd ComfyUI/custom_nodes
git clone https://github.com/RodrigoSKohl/InteriorDesign-for-ComfyUI
Restart ComfyUI, or install "Interior Design for Comfyui" from ComfyUI Manager. The pack's requirements (torch, transformers, Pillow, numpy, scipy) are mostly things ComfyUI already has; the heavier model downloads come from the Segmentator, not this node.
Troubleshooting
- Mask covers the whole room including windows. Check that
windowanddoorare on - if they got flipped off, everything is redesignable. - Output won't connect to anything.
CONTROL_ITEMSis a custom type; it only plugs into the Interior Design Segmentator'scontrol_itemsport. - You want to protect the sofa and can't. That's the four-toggle design. You'd need to edit the node's source or post-process the mask elsewhere.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| window | BOOLEAN | true | — |
| door | BOOLEAN | true | — |
| staircase | BOOLEAN | false | — |
| columns | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONTROL_ITEMS | CONTROL_ITEMS | — |