(AV) Scene
(AV) Scene turns an elevation drawing into a render run
- prompt
- system_prompt
- filename_tag
- debug
The (AV) Scene is the newest and most ambitious node in the pack - the one that turns the whole preset system into a batch production rig. Where the (AV) Matrix hands you one polished prompt, Scene gives you a project system: pick a shot like townhouses/front_marketing, bump a variation counter, and it deterministically builds a locked prompt from layered template, project, and entourage files. It's built for the exact workflow the pack is named for - a Revit elevation or SketchUp screenshot in, a photoreal high-end render out - but at scale, with every render reproducible from its own filename.
How it works: four layers, one prompt
Scene reads its data from ComfyUI/user/archviz_scenes/ (bundled examples auto-copy on first launch). Four layers, each holding text exactly once:
- templates/ - typology rules for a building type (townhouse_row, villa, tower, mosque, interior_room...). These are the geometry-lock skeletons: "count the units in the drawing, your output must contain exactly that count," "recesses between volumes are open air, never new walls," "if the prompt and the drawing conflict, the drawing wins."
- projects/ - one ~20-line file per project. Picks a template, fills
{field:...}holes (drawing notes, material legend, identity), and defines shots:front_marketing: people_gulf_family, cars_luxury, vegetation_gulf. - pools/ - global entourage line sets (people, cars, vegetation). One line per option; an
@guard:prefix auto-appends a constraint to every line, like "latest-generation, showroom-clean vehicles." - presets/ - the same library the Matrix uses, pulled in via
{preset:category/name}references, with per-model overrides honored.
The variation math is the neat part. variation and seed deterministically pick one line from each pool - an exhaustive, collision-free mixed-radix enumeration, shuffled by the seed via an affine bijection. Variations 0..N-1 cover every pool combination exactly once, and the same shot + variation + seed always reproduces the same prompt. That's why the filename_tag output encodes all three (something like townhouses_fro…_v003_s42): reproduce any render by typing its variation and seed back in.
Inputs and outputs
- shot - the project/shot dropdown, auto-discovered from your project files (the bundled examples give you 22 to start).
- variation - increment to batch; every value is a unique entourage combo. It has
control_after_generate, so it can auto-randomize each run. - seed - shuffles which combo maps to which variation.
- target_model - the same six dialects as the Matrix. Templates can carry per-model sections like
=== CORE @flux2_pro ===; if a model has no variant, the default edit-dialect text is used and a warning is emitted rather than silently mangling geometry-lock language. - style_override (optional) - an extra fragment appended to the prompt.
Outputs: prompt, system_prompt (for models that have a system field), filename_tag (naming plus the reproduction record), and debug (which pool lines won, sources, and any warnings - wire it to a text view when a render misbehaves). Output order mirrors the Nano Banana / Gemini node's input order, so connections run parallel without crossing.
Install and setup
Same pack as the rest:
cd ComfyUI/custom_nodes/
git clone https://github.com/ArrowsVisuals/archviz-preset-system.git
Restart ComfyUI. No dependencies, no model files. First launch copies the scene_data examples into ComfyUI/user/archviz_scenes/. A new project is: duplicate a project file, edit the fields, pick pools - no code. A new typology is one new template file.
Common issues
New project or pool files need a ComfyUI restart before they show up in the shot dropdown - adding them at runtime won't appear. If you're upgrading from a pre-5.2.4 build, the prompt and system_prompt outputs swapped order, so re-connect once. And remember Scene, like the whole pack, doesn't render: wire prompt and system_prompt into your Gemini Image / Nano Banana node or a local Flux 2 setup, and check debug when a render drifts from the drawing - it'll tell you exactly which pool line won and what fell back to default. People trying this elevation-to-render workflow on raw Nano Banana without a geometry-lock layer routinely hit misread details; the whole point of Scene's template language is to make the drawing win.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| shot | COMBO | 22 options: apartments/front_marketing, apartments/front_submission, interior_living/living_daylight, mosque/approach, mosque/submission, perspective_villa/hero_marketing, +16 | |
| variation | INT | 00–999999 | — |
| seed | INT | 420–2147483647 | — |
| target_model | COMBO | 6 options: nano_banana_edit, nano_banana_generate, flux2_pro, flux2_dev_structured, gpt_image_2, ideogram4_json | |
| style_overrideopt | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| system_prompt | STRING | — |
| filename_tag | STRING | — |
| debug | STRING | — |