π³οΈ Scene Generator (Ideogram 4)
Ideogram 4 won't take prose β this node writes the JSON for you
- prompt_json
- description
- seed_used
- preview
- width
- height
Ideogram 4 is the model that speaks a different language than you do. It was trained almost exclusively on structured JSON captions, so plain prose prompts underperform badly - the community found out the hard way that you're supposed to feed it bounding boxes, hex palettes, and typed descriptions. SceneGenerator is the translator: a procedural prompt generator that writes that structured JSON for you, with real spatial layout underneath.
It's one of the five nodes in this pack, and the odd one out - the rest are about outpainting, this one is about composing multi-character scenes. It's designed for Ideogram 4, though the README notes it'll work with any model that respects bounding-box control nets.
How it works
The core idea is a two-axis design: Scene Type (composition - how figures are arranged and sized) Γ Scenario (content - what is in the scene). Each is a set of curated templates. Pick face_off as the scene type and western as the scenario and the node pulls from a template library of nine composition types across three shot widths, then builds a JSON prompt that matches Ideogram 4's schema: a high-level description, a style block (aesthetics, lighting, photo or art style, and a hex color palette), and a compositional_deconstruction with a background plus elements - each element carrying a normalized bounding box (y_min, x_min, y_max, x_max) and a subject description.
The layout engine is the part worth respecting. It computes where each subject's bounding box actually goes - scaled by hierarchy, arranged by pattern (opposing, clustered, offset, scattered), densified to your taste - then a PIL preview renders the boxes so you can see the composition before you spend 3β4 minutes generating. Everything unlocked cascades off one seed: fixed = reproducible prompts, iterate mode steps it for variations.
The inputs that matter
- scene_type - the composition preset.
face_off= opposing sides equal size,wide_vista= tiny figures in a vast landscape,spotlight= one dominant figure, and so on. - scenario - the content pack:
fantasy,medieval_tavern,noir_city,pirate_ship,sci_fi,western. Sets characters, setting, and actions.nonemeans yourthemetext is the whole world. - shot_width - close / medium / wide.
- num_subjects - how many figures (default -1 = random within the template's range, up to 6).
- seed + seed_mode - static, random, or iterate.
- theme - optional flavor text that gets woven through the description.
The optional tab hides the fine controls: width/height (256β2048, multiples of 16 - Ideogram 4's native range), framing (camera angle: eye_level, high/low, dutch), the three layout knobs (scale_hierarchy, arrangement, density), and custom_subjects + subject_mode to replace or supplement the scenario's cast.
Outputs: prompt_json (STRING - the actual payload for Ideogram), description (STRING, a human-readable summary with tags showing what was picked), seed_used (INT), preview (IMAGE - the bbox layout render), and width/height (INT).
Installing it
cd ComfyUI/custom_nodes/
git clone https://github.com/elliefox-ai/comfyui-scene-generator.git ComfyUI-EllieFoxAI-scene-gen
Restart, and look under SceneGen - note the category, it's not under EllieFoxAI like the rest of the pack, which is an easy thing to miss when you're hunting in the node menu. ComfyUI Manager also works (search "comfyui-scene-generator"). No Python dependencies. The big install requirement isn't a package - it's the model. SceneGenerator bundles no weights; you need an Ideogram 4 checkpoint (fp8 or the CUDA-only nf4) or a bbox-capable model, which on typical hardware means 24GB+ VRAM.
Common issues
- No model bundled, no API - the name suggests a generator, but this node never calls Ideogram's API and needs no key. It generates prompt text; you wire
prompt_jsoninto your actual Ideogram loader. - You don't have Ideogram 4 - before installing for this node alone, know the deal: non-commercial license, a safety filter trained into the weights (a refusal image, not a setting), and quantized checkpoints only. The community's verdict within a month was "great renderer, lost the ecosystem" - largely to the license and the speed.
- Repeats or random feels random - fix the seed and lock the layers you care about; leave the rest on random to explore.
- Boxes overlap or the frame looks off - that's normal and often desirable; Ideogram 4's schema explicitly allows overlapping and nested boxes.
It's a niche tool for a niche model, but if you actually run Ideogram 4 and want reproducible multi-character compositions with real layout control instead of praying to the prompt gods, there isn't much competition. If you're not running Ideogram 4, this is the one node in the pack you can skip.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| scene_type | COMBO | COMPOSITION preset β controls how figures are arranged and sized in frame (scale/arrangement/density). Pair with any scenario. Examples: face_off = opposing sides equal size; wide_vista = tiny figures in vast landscape; spotlight = one dominant figure. | |
| shot_width | COMBO | 4 options: π² random, close, medium, wide | |
| num_subjects | INT | -1-1β6 | -1 = random (within template's supported range) |
| seed | INT | 420β4294967295 | β |
| seed_mode | COMBO | 3 options: static, random, iterate | |
| theme | STRING | Optional flavor text. If scenario is selected, scenario provides the setting. | |
| scenario | COMBO | π² random | CONTENT pack β controls the setting, characters, and actions (the WHAT). Pair with any scene_type (the HOW). 'none' = use theme text only. |
| template_mode | COMBO | 2 options: random, select | |
| template_index | INT | 00β50 | β |
| style_mode | COMBO | template | template = use template's style (if any). Otherwise pick a preset or random. |
| lighting_mode | COMBO | template | template = inherit lighting from style/template. Otherwise pick a specific lighting setup or random. |
| palette_mode | COMBO | auto | auto = inherit from style preset. Adjust brightness, saturation, or convert to grayscale. |
| widthopt | INT | 1024256β2048 | Output image width (Ideogram 4: 256-2048, multiples of 16) |
| heightopt | INT | 1024256β2048 | Output image height (Ideogram 4: 256-2048, multiples of 16) |
| scale_hierarchyopt | COMBO | auto | auto = inherit from scene type preset |
| arrangementopt | COMBO | auto | auto = inherit from scene type preset |
| densityopt | COMBO | auto | auto = inherit from scene type preset |
| framingopt | COMBO | eye_level | Camera angle. eye_level = horizon, high_angle = looking down, low_angle = looking up, dutch = tilted. |
| custom_subjectsopt | STRING | One subject per line. Used when subject_mode is replace or supplement. | |
| subject_modeopt | COMBO | auto | auto = scenario pack only. replace = custom only. supplement = custom + scenario shuffled together. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| prompt_json | STRING | β |
| description | STRING | β |
| seed_used | INT | β |
| preview | IMAGE | β |
| width | INT | β |
| height | INT | β |