Nodes/comfyui-sceneweaver/Scene Weaver - Fantasy
ComfyUI Node

Scene Weaver - Fantasy

Randomize a whole Fantasy scene in one click: an environment, up to 4 entities and the relationships between them, as natural-language prose plus structured JSON. Set 'Entities' to reveal and fill more subject slots. Every field can be locked to a value or set to None. Wire prompt_text into a Show Text node to read the prompt.

By EnragedAntelope·Created 9 days ago·Updated about 15 hours ago· 3
Scene Weaver - Fantasy
  • entity_1_in
  • entity_2_in
  • entity_3_in
  • entity_4_in
  • prompt_text
  • prompt_json
◄seed0►
◄entity_count1►
◄scene_filterAny►
◄set_all_fieldsOff►
◄environmentRandom►
◄entity1_kindRandom►
◄entity1_subkindRandom►
◄entity1_scaleRandom►
◄entity1_conditionRandom►
◄entity1_formRandom►
◄entity1_materialRandom►
◄entity1_primary_colorRandom►
◄entity1_accent_colorRandom►
◄entity1_markingsRandom►
◄entity1_surface_detailRandom►
◄entity1_appendagesRandom►
◄entity1_appendage_countRandom►
◄entity1_emittersRandom►
◄entity1_emitter_countRandom►
◄entity1_emitter_colorRandom►
◄entity1_armamentRandom►
◄entity1_armament_countRandom►
◄entity1_sensorsRandom►
◄entity1_sensor_countRandom►
◄entity1_apertureRandom►
◄entity1_extrasRandom►
◄entity1_situationRandom►
◄entity2_kindRandom►
◄entity2_subkindRandom►
◄entity2_scaleRandom►
◄entity2_conditionRandom►
◄entity2_situationRandom►
◄entity3_kindRandom►
◄entity3_subkindRandom►
◄entity3_scaleRandom►
◄entity3_conditionRandom►
◄entity3_situationRandom►
◄entity4_kindRandom►
◄entity4_subkindRandom►
◄entity4_scaleRandom►
◄entity4_conditionRandom►
◄entity4_situationRandom►
◄relation_1_2None►
◄relation_1_3None►
◄relation_1_4None►
◄relation_2_3None►
◄relation_2_4None►
◄relation_3_4None►
◄relation_1_2_positionNone►
◄relation_1_3_positionNone►
◄relation_1_4_positionNone►
◄relation_2_3_positionNone►
◄relation_2_4_positionNone►
◄relation_3_4_positionNone►
◄contextRandom►
Categoryconditioning/sceneweaver

Inputs (59)

NameTypeDefaultDescription
seedINT00–18446744073709550000Seed for reproducible scenes. The control below defaults to 'randomize' so every run differs; set it to 'fixed' to reproduce a scene.
entity_countCOMBO1How many subjects the scene has. Slot 1 is described most fully and later slots a little less, because an image has one subject's worth of attention to share out however many things are in it. Raising this reveals that slot's widgets on the node; every slot it reveals is described, never just named. Two is the sweet spot -- three and four work, and read as a crowd. A Scene Entity wired into a slot occupies it whatever this says. How much a slot actually speaks is also capped by what kind of thing it is: a creature or a person carries its whole component list, a station or a wreck only its silhouette, so a slot full of locked widgets can still read shorter than you expect.
scene_filterCOMBOAnyRestrict what random draws may pick. 'Peaceful' leaves weapons and hostile actions out of the description entirely; 'Conflict' favours them. A value you lock yourself is always kept.
set_all_fieldsCOMBOOffBulk-edit every descriptive widget below. 'Randomize all' turns each one that says 'None' into 'Random'; 'Clear all' does the reverse. A field you locked to a value is never touched, and the control snaps back to 'Off' as soon as it has run, so it stays a one-shot action rather than a mode.
environmentCOMBORandomWhere the scene is: wild lands, the water, the sky, underground, a town, a hall, or a realm beyond the world. Scene | Random=randomize, value=lock, None=omit
entity1_kindCOMBORandomWhat this entity fundamentally is. Scopes every other field on this slot -- its options and its labels. Set to None to leave the slot empty. Identity | Random=randomize, value=lock, None=omit
entity1_subkindCOMBORandomThe specific type within the kind -- a unicorn, a frost troll, a galleon. Identity | Random=randomize, value=lock, None=omit
entity1_scaleCOMBORandomHow big it is relative to a person. Identity | Random=randomize, value=lock, None=omit
entity1_conditionCOMBORandomAge and state -- ancient, battle-scarred, slumbering, petrified. Identity | Random=randomize, value=lock, None=omit
entity1_formCOMBORandomThe silhouette: a body plan, a build, a hull or a tower's shape. The field that makes two dragons actually look different. Form & Material | Random=randomize, value=lock, None=omit
entity1_materialCOMBORandomWhat it is covered in, made of, or wearing. Form & Material | Random=randomize, value=lock, None=omit
entity1_primary_colorCOMBORandomThe colour of the thing itself -- scales, coat, robes, stone. Describes the subject, never the lighting. Surface & Colour | Random=randomize, value=lock, None=omit
entity1_accent_colorCOMBORandomA secondary colour: trim, banding, the underside of a wing. Surface & Colour | Random=randomize, value=lock, None=omit
entity1_markingsCOMBORandomHeraldry, war paint, patterning. Carries no readable lettering. Surface & Colour | Random=randomize, value=lock, None=omit
entity1_surface_detailCOMBORandomFinish and wear at close range -- scars, moss, weathering, stitching of hide. Surface & Colour | Random=randomize, value=lock, None=omit
entity1_appendagesCOMBORandomWhat sticks out: horns, wings, tails, tusks, towers and masts. Components | Random=randomize, value=lock, None=omit
entity1_appendage_countCOMBORandomHow many. Composed into the appendage phrase. Components | Random=randomize, value=lock, None=omit
entity1_emittersCOMBORandomWhat shines with its own light: enchanted gems, rune tracery, ember eyes, a spell held in the hand. Components | Random=randomize, value=lock, None=omit
entity1_emitter_countCOMBORandomHow many. Components | Random=randomize, value=lock, None=omit
entity1_emitter_colorCOMBORandomThe colour of the magic itself. Belongs to the subject, not the lighting. Components | Random=randomize, value=lock, None=omit
entity1_armamentCOMBORandomWeapons, carried or grown: a longsword, a war maul, horns and talons. Components | Random=randomize, value=lock, None=omit
entity1_armament_countCOMBORandomHow many weapons. Components | Random=randomize, value=lock, None=omit
entity1_sensorsCOMBORandomHow it sees: eyes, many eyes, a lantern-bearing gaze. Components | Random=randomize, value=lock, None=omit
entity1_sensor_countCOMBORandomHow many. A cyclops and a many-eyed horror are different things. Components | Random=randomize, value=lock, None=omit
entity1_apertureCOMBORandomThe opening: a fanged maw, a visor, a gatehouse arch. Components | Random=randomize, value=lock, None=omit
entity1_extrasCOMBORandomOne more distinguishing thing -- a saddle, a satchel, a hanging banner. Components | Random=randomize, value=lock, None=omit
entity1_situationCOMBORandomWhat this entity is doing -- an event in progress, not a pose. Scene | Random=randomize, value=lock, None=omit
entity2_kindCOMBORandomWhat this entity fundamentally is. Scopes every other field on this slot -- its options and its labels. Set to None to leave the slot empty. Identity | Random=randomize, value=lock, None=omit
entity2_subkindCOMBORandomThe specific type within the kind -- a unicorn, a frost troll, a galleon. Identity | Random=randomize, value=lock, None=omit
entity2_scaleCOMBORandomHow big it is relative to a person. Identity | Random=randomize, value=lock, None=omit
entity2_conditionCOMBORandomAge and state -- ancient, battle-scarred, slumbering, petrified. Identity | Random=randomize, value=lock, None=omit
entity2_situationCOMBORandomWhat this entity is doing -- an event in progress, not a pose. Scene | Random=randomize, value=lock, None=omit
entity3_kindCOMBORandomWhat this entity fundamentally is. Scopes every other field on this slot -- its options and its labels. Set to None to leave the slot empty. Identity | Random=randomize, value=lock, None=omit
entity3_subkindCOMBORandomThe specific type within the kind -- a unicorn, a frost troll, a galleon. Identity | Random=randomize, value=lock, None=omit
entity3_scaleCOMBORandomHow big it is relative to a person. Identity | Random=randomize, value=lock, None=omit
entity3_conditionCOMBORandomAge and state -- ancient, battle-scarred, slumbering, petrified. Identity | Random=randomize, value=lock, None=omit
entity3_situationCOMBORandomWhat this entity is doing -- an event in progress, not a pose. Scene | Random=randomize, value=lock, None=omit
entity4_kindCOMBORandomWhat this entity fundamentally is. Scopes every other field on this slot -- its options and its labels. Set to None to leave the slot empty. Identity | Random=randomize, value=lock, None=omit
entity4_subkindCOMBORandomThe specific type within the kind -- a unicorn, a frost troll, a galleon. Identity | Random=randomize, value=lock, None=omit
entity4_scaleCOMBORandomHow big it is relative to a person. Identity | Random=randomize, value=lock, None=omit
entity4_conditionCOMBORandomAge and state -- ancient, battle-scarred, slumbering, petrified. Identity | Random=randomize, value=lock, None=omit
entity4_situationCOMBORandomWhat this entity is doing -- an event in progress, not a pose. Scene | Random=randomize, value=lock, None=omit
relation_1_2COMBONoneHow two slots relate. Rendered only when both entities exist. Opt-in. Relations | Random=randomize, value=lock, None=omit
relation_1_3COMBONoneHow two slots relate. Rendered only when both entities exist. Opt-in. Relations | Random=randomize, value=lock, None=omit
relation_1_4COMBONoneHow two slots relate. Rendered only when both entities exist. Opt-in. Relations | Random=randomize, value=lock, None=omit
relation_2_3COMBONoneHow two slots relate. Rendered only when both entities exist. Opt-in. Relations | Random=randomize, value=lock, None=omit
relation_2_4COMBONoneHow two slots relate. Rendered only when both entities exist. Opt-in. Relations | Random=randomize, value=lock, None=omit
relation_3_4COMBONoneHow two slots relate. Rendered only when both entities exist. Opt-in. Relations | Random=randomize, value=lock, None=omit
relation_1_2_positionCOMBONoneWhere the first entity sits relative to the second. Relations | Random=randomize, value=lock, None=omit
relation_1_3_positionCOMBONoneWhere the first entity sits relative to the second. Relations | Random=randomize, value=lock, None=omit
relation_1_4_positionCOMBONoneWhere the first entity sits relative to the second. Relations | Random=randomize, value=lock, None=omit
relation_2_3_positionCOMBONoneWhere the first entity sits relative to the second. Relations | Random=randomize, value=lock, None=omit
relation_2_4_positionCOMBONoneWhere the first entity sits relative to the second. Relations | Random=randomize, value=lock, None=omit
relation_3_4_positionCOMBONoneWhere the first entity sits relative to the second. Relations | Random=randomize, value=lock, None=omit
contextCOMBORandomWhat else is in the shot besides the subject -- a secondary detail for scale and story. Always a thing in the world, never a lighting instruction. Scene | Random=randomize, value=lock, None=omit
entity_1_inoptSCENE_ENTITYOptional. A Scene Entity wired here describes slot 1, replacing that slot's own descriptive widgets and giving it the top allowance for the scene. It is a promotion, not an exemption: how much the slot speaks is still capped by what kind of thing it is, so a station reads shorter than a creature. A field you locked on the Scene Entity is a choice: it wins over these widgets and over a coherence rule, and the rule's reason is reported in prompt_json._meta. A field the Scene Entity drew at random is a draw: this scene first picks a place that can hold the whole wired subject, and re-draws a drawn field only when no place can -- the node face then names what was re-drawn. What the entity is *doing* stays this node's: situation and relations are never taken from a wired entity.
entity_2_inoptSCENE_ENTITYOptional. A Scene Entity wired here describes slot 2, replacing that slot's own descriptive widgets and giving it the top allowance for the scene. It is a promotion, not an exemption: how much the slot speaks is still capped by what kind of thing it is, so a station reads shorter than a creature. A field you locked on the Scene Entity is a choice: it wins over these widgets and over a coherence rule, and the rule's reason is reported in prompt_json._meta. A field the Scene Entity drew at random is a draw: this scene first picks a place that can hold the whole wired subject, and re-draws a drawn field only when no place can -- the node face then names what was re-drawn. What the entity is *doing* stays this node's: situation and relations are never taken from a wired entity.
entity_3_inoptSCENE_ENTITYOptional. A Scene Entity wired here describes slot 3, replacing that slot's own descriptive widgets and giving it the top allowance for the scene. It is a promotion, not an exemption: how much the slot speaks is still capped by what kind of thing it is, so a station reads shorter than a creature. A field you locked on the Scene Entity is a choice: it wins over these widgets and over a coherence rule, and the rule's reason is reported in prompt_json._meta. A field the Scene Entity drew at random is a draw: this scene first picks a place that can hold the whole wired subject, and re-draws a drawn field only when no place can -- the node face then names what was re-drawn. What the entity is *doing* stays this node's: situation and relations are never taken from a wired entity.
entity_4_inoptSCENE_ENTITYOptional. A Scene Entity wired here describes slot 4, replacing that slot's own descriptive widgets and giving it the top allowance for the scene. It is a promotion, not an exemption: how much the slot speaks is still capped by what kind of thing it is, so a station reads shorter than a creature. A field you locked on the Scene Entity is a choice: it wins over these widgets and over a coherence rule, and the rule's reason is reported in prompt_json._meta. A field the Scene Entity drew at random is a draw: this scene first picks a place that can hold the whole wired subject, and re-draws a drawn field only when no place can -- the node face then names what was re-drawn. What the entity is *doing* stays this node's: situation and relations are never taken from a wired entity.

Outputs (2)

NameTypeDescription
prompt_textSTRINGThe prompt. Wire this into the text encoder.
prompt_jsonSTRINGStructured scene data for other nodes or logs. Not a prompt: do not wire it into a text encoder.