SMP · Location Combiner (legacy)
The node that turns '#ambient_light#' into real light
- location_raw
- color_palette
- location_dict
- summary
The SMP location pipeline hands you a scene description full of placeholder tokens like #ambient_light# and #shadow_tone#. This is the node that spends them. Feed it the raw location dict from SMP · Location Generator plus a color palette, and it rewrites every element's prompt_fragment with real color words - warm golden light, deep blue shadows - instead of a token the text encoder will ignore or garble.
It's part of the pack's StructPromptMaker (SMP) suite, the earlier multi-stage prompt-building pipeline the README now calls legacy and superseded by the newer JB suite. "Legacy" here means "kept fully functional and documented," not "dead." You only meet this node if you're running an SMP reference workflow, and that's fine: SMP is more stages than most people need, but it's deterministic and the dicts are genuinely nice to debug.
How it works
It deep-copies the incoming LOCATION_DICT_RAW (no mutating your generator's output), builds a substitution table from the palette's atmosphere and garment colors, then string-replaces tokens inside each element's prompt_fragment. If the palette carries a color_tone and the location didn't pick one, it inherits it. The output LOCATION_DICT has its tokens gone and its fragments readable as plain English.
The two inputs that matter
This is a glue node, so the setup is short:
location_raw- theLOCATION_DICT_RAWfrom SMP · Location Generator.color_palette- theCOLOR_PALETTE_DICTfrom SMP · Color Generator.
That's the whole input list. Wire the same palette into the outfit combiner and both halves of the scene stay color-consistent.
Outputs
location_dict- resolved scene dict, wire it into SMP · Environment Builder or the Structured Prompt Assembler.summary- a human-readable string of what got combined; hand it to a ShowText while debugging.
Install
Nothing extra. The SMP nodes ride on the base pack install - no models, no pip beyond what ComfyUI already has (numpy and pydantic 2, both already in the venv):
cd ComfyUI/custom_nodes
git clone https://github.com/ping1979ping/comfyui-FVMtools
Then restart ComfyUI.
Common issues
If #ambient_light# and friends are still sitting in your output text, the palette probably didn't carry atmosphere colors - make sure the Color Generator is actually connected upstream, not just the location branch. If a token survives that should be resolvable, check the summary output first; it lists what was resolved and what wasn't. And if you see a color_tone on the location dict you didn't set, that's the inheritance working as designed.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| location_raw | LOCATION_DICT_RAW | — | |
| color_palette | COLOR_PALETTE_DICT | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| location_dict | LOCATION_DICT | — |
| summary | STRING | — |