Nodes/SceneWeaver/Scene Entity - Sci-Fi
ComfyUI Node

Scene Entity - Sci-Fi

The optional node that builds one creature properly

By EnragedAntelope·Created 3 days ago·Updated 2 days ago· 2
Scene Entity - Sci-Fi
    • entity_text
    • entity
    seed0
    kindRandom
    subkindRandom
    scaleRandom
    conditionRandom
    formRandom
    materialRandom
    primary_colorRandom
    accent_colorRandom
    markingsRandom
    surface_detailRandom
    appendagesRandom
    appendage_countRandom
    emittersRandom
    emitter_countRandom
    emitter_colorRandom
    armamentRandom
    armament_countRandom
    sensorsRandom
    sensor_countRandom
    apertureRandom
    extrasRandom

    Honest framing first: you don't need this node. Scene Weaver - Sci-Fi is complete on its own and its first slot already carries the full entity morphology. Scene Entity - Sci-Fi exists for two jobs the big node can't do - describing a supporting thing as richly as the hero, and building one creature you reuse across scenes.

    What it actually does

    It describes one entity across every field the pack owns: what it is, how big, condition, silhouette, material, primary and accent colour, markings, surface detail, appendages and how many, emitters and how many and what colour they glow, armament, sensors, an aperture, and one extra distinguishing detail. Twenty-one fields, each defaulting to Random, each offering None to omit it.

    What it doesn't do is place the thing or give it something to do. No environment field, no situation - the Scene Weaver owns where the entity is and what it's doing. This node hands over a subject, not a scene.

    The design detail that matters: a starship is clad in its material, a creature covered in one, a spacefarer wears one, and a nebula, having no surface, never gets one described. That's why two seeds give you two different ships rather than two paraphrases.

    Wiring it in

    entity_text is a plain STRING - the entity exactly as it will read inside a scene - so it drops straight into a Show Text node. entity is a SCENE_ENTITY payload, a dedicated socket type rather than a STRING so a miswire into a text input is impossible. It plugs into any of Scene Weaver's four optional sockets, entity_1_in through entity_4_in.

    A wire changes the rules on that slot. It replaces the slot's descriptive widgets and gives it the top allowance - wiring a whole node is the most explicit "I want detail here" you can express. But it's a promotion, not an exemption: a station, wreck or world still speaks fewer details than a creature, because an archetype's detail cap lowers the allowance and never raises it.

    • A field you locked here is a choice. It beats the Scene Weaver's widgets and a coherence rule; the rule's reason lands in prompt_json._meta, and the first warning prints on the node face.
    • A field this node drew at random is just a draw. The scene first looks for a place that holds the whole wired subject, and only re-draws a drawn field when nothing fits. The face then says slot 1 re-drawn to fit: …, which explains why your image differs from this node's preview.

    The fields worth locking

    Set kind first - it scopes every other field, its options and its labels: emitter_count reads "Engine count" on a vessel and "Eye count" on a creature, and form's pool swaps wholesale. Then:

    • form - the silhouette, hull shape or body plan. The field that makes two of the same kind of thing look different.
    • primary_color and emitter_color - the two colours that belong to the subject rather than the lighting, so they're safe alongside any style prompt.
    • emitters and sensor_count - the ones that read strongest at a glance. Four eyes and one eye are different creatures.

    The rest - accent_color, markings, surface_detail, appendages, aperture, extras - compete for a rotating detail slot on a full-depth subject. If one matters, lock it; otherwise it's drawn, unspoken and gone.

    Install

    Same pack, nothing extra:

    cd ComfyUI/custom_nodes
    git clone https://github.com/EnragedAntelope/comfyui-sceneweaver
    

    Restart, then look under conditioning/sceneweaver. No dependencies, no model downloads - standard-library Python only. It does require ComfyUI 0.25.0+ and Python 3.10+, since the pack is written against the newer comfy_api.latest node API.

    Things to know before you wire one up

    A wired slot is occupied. Scene Weaver's Entities control clamps rather than commands: a slot set to None inside the count stays empty, but a locked kind or a wire occupies its slot outside the count. Wire into entity_4_in while entity_count says "1" and you get two entities, not one.

    Four wires won't give you four rich subjects. A wired slot gets the top allowance, but the allowance shrinks as more slots are occupied, and the whole scene is capped at 320 tokens because a text encoder reliably drops detail near the end of a long prompt. If a wired slot reads shorter than the preview suggested, that's the budget, not a broken payload.

    It composes across genres. The socket type is shared, so a fantasy entity wired into a sci-fi scene is supported - the host scene places it by its own rules, and a foreign payload that doesn't say which fields were locked is treated as fully unlocked.

    The author is worth knowing. EnragedAntelope also maintains the SDNQ quant loader, the pack people reach for to run 4-bit Z-Image on consumer hardware. This pack is a beta with a live vocabulary, and pasting your entity_text into an issue is enough to reproduce an incoherent subject.

    Categoryconditioning/sceneweaver

    Inputs (22)

    NameTypeDefaultDescription
    seedINT00–18446744073709550000Seed for reproducible scenes. The control below defaults to 'randomize' so every run differs; set it to 'fixed' to reproduce a scene.
    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
    subkindCOMBORandomThe specific type within the kind -- a ship class, a creature type. Identity | Random=randomize, value=lock, None=omit
    scaleCOMBORandomHow big it is relative to a person. Identity | Random=randomize, value=lock, None=omit
    conditionCOMBORandomWhat shape it is in -- pristine, battle-scarred, derelict. Identity | Random=randomize, value=lock, None=omit
    formCOMBORandomThe silhouette: a hull shape, or a body plan. This is the field that makes two ships actually look different. Form & Material | Random=randomize, value=lock, None=omit
    materialCOMBORandomWhat it is made of, or covered in. Form & Material | Random=randomize, value=lock, None=omit
    primary_colorCOMBORandomThe colour of the thing itself -- hull, skin, integument. This describes the subject, not the lighting or the grade. Surface & Colour | Random=randomize, value=lock, None=omit
    accent_colorCOMBORandomA secondary colour: trim, panelling, banding. On a built subject this competes for a rotating detail slot; lock it to always speak it. Surface & Colour | Random=randomize, value=lock, None=omit
    markingsCOMBORandomLivery, insignia, patterning. Carries no readable lettering or numerals -- models garble text. On a built subject this competes for a rotating detail slot; lock it to always speak it. Surface & Colour | Random=randomize, value=lock, None=omit
    surface_detailCOMBORandomFinish and wear at close range -- pitting, seams, scaling. On a built subject this competes for a rotating detail slot; lock it to always speak it. Surface & Colour | Random=randomize, value=lock, None=omit
    appendagesCOMBORandomWhat sticks out: pylons and fins, or limbs and tentacles. On a built subject this competes for a rotating detail slot; lock it to always speak it. Components | Random=randomize, value=lock, None=omit
    appendage_countCOMBORandomHow many. Composed into the appendage phrase, so it is only voiced when there are appendages to count. Components | Random=randomize, value=lock, None=omit
    emittersCOMBORandomWhat glows or thrusts: engines, vents, bioluminescent organs. Components | Random=randomize, value=lock, None=omit
    emitter_countCOMBORandomHow many emitters. Components | Random=randomize, value=lock, None=omit
    emitter_colorCOMBORandomThe colour of the glow itself. Emissive colour belongs to the subject; it is not a lighting instruction. Components | Random=randomize, value=lock, None=omit
    armamentCOMBORandomWeapons, mounted or grown. A Peaceful scene simply leaves this out rather than saying the thing is unarmed. Components | Random=randomize, value=lock, None=omit
    armament_countCOMBORandomHow many weapons. Components | Random=randomize, value=lock, None=omit
    sensorsCOMBORandomHow it perceives: arrays and dishes, or eyes and sensory pits. Components | Random=randomize, value=lock, None=omit
    sensor_countCOMBORandomHow many. Four eyes and one eye are different creatures. Components | Random=randomize, value=lock, None=omit
    apertureCOMBORandomThe opening: a launch bay or viewport, or a mouth and its teeth. On a built subject this competes for a rotating detail slot; lock it to always speak it. Components | Random=randomize, value=lock, None=omit
    extrasCOMBORandomOne more distinguishing component -- a cargo pod, a dorsal crest. On a built subject this competes for a rotating detail slot; lock it to always speak it. Components | Random=randomize, value=lock, None=omit

    Outputs (2)

    NameTypeDescription
    entity_textSTRING
    entitySCENE_ENTITY