Nodes/Interior Design for Comfyui/Control Items Selector
ComfyUI Node

Control Items Selector

Four toggles that tell ComfyUI what not to touch

By RodrigoSKohl·Created 2 years ago·Updated about a year ago· 22
Control Items Selector
    • CONTROL_ITEMS
    windowtrue
    doortrue
    staircasefalse
    columnsfalse

    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:

    • windowwindowpane;window
    • doordoor;double;door
    • staircasestairway;staircase
    • columnscolumn;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 window and door are on - if they got flipped off, everything is redesignable.
    • Output won't connect to anything. CONTROL_ITEMS is a custom type; it only plugs into the Interior Design Segmentator's control_items port.
    • 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.
    Categorycontrol

    Inputs (4)

    NameTypeDefaultDescription
    windowBOOLEANtrue
    doorBOOLEANtrue
    staircaseBOOLEANfalse
    columnsBOOLEANfalse

    Outputs (1)

    NameTypeDescription
    CONTROL_ITEMSCONTROL_ITEMS