2️⃣ SF Add Entity (Builder)
The node that encodes your character's prompt once so nothing re-encodes it again
- fury_bus
- bus
If Project Manager is the bus's ignition, Add Entity is where you load the passengers. This is the "2️⃣" step: you tell the bus "there's a character called Hero" (or a scene called "City_Rooftop"), give it a prompt, and the node doesn't just remember it - it encodes it immediately with the CLIP that's riding in the bus.
That's the design decision that makes this pack interesting. Instead of the sampler re-tokenizing and re-encoding your prompt on every generation (the way a normal KSampler with a CLIP Text Encode does), Add Entity bakes the conditioning once, up front, and stores it inside the entity record. The Director Engine later renders every entity in a batch without ever touching the text encoder again. For a project with ten characters, that's ten encodes total instead of ten times whatever renders you run. On SD 1.5-era pipelines that matters; on slower CLIPs it genuinely adds up.
Mechanically, it's tidy. It deep-copies the bus (so earlier entities' conditioning tensors stay independent in memory), tokenizes and encodes both your positive and negative prompts, and stashes cond_pos / cond_neg plus an aspect-ratio tag on the entity. If you leave the positive prompt empty, it builds one for you - something like high quality character of Hero, and for characters it appends full body view, standing pose, neutral background. That last part is a sensible default for character sheets, but it does mean a blank prompt never actually renders what you might have intended, so type your own prompt when you care.
The inputs that matter:
- entity_type -
characterorscene. Changes how the aspect ratio is applied downstream and which folder (Characters vs Scenes) your renders get saved into. - entity_id - the name this entity is referred by everywhere else (
Hero,Batman, whatever). This is the string you'll type into the FurySampler'starget_entity_id, so keep it unique and memorable. - scene_orientation - five options: Landscape (16:9), Portrait (9:16), Square (1:1), Cinematic (21:9), IMAX (1.90:1). Only really used for scenes; characters get a
character_sheettag regardless. - positive_prompt / negative_prompt - your actual generation prompts, multiline. Encoded here, once.
The output: one bus (SF_LINK), now carrying your entity in bus["entities"]. Chain several Add Entity nodes off the same Project Manager output to register a whole cast - that's the intended pattern: one per character, then let the Director Engine chew through all of them.
Install
Part of the StudioFury pack, so: ComfyUI Manager → search ComfyUI-Studio-Fury → Install → restart. Or git clone https://github.com/FuryNocturn/ComfyUI-Studio-Fury into custom_nodes/. Dependencies are just torch/Pillow/numpy/aiohttp, all already present.
Gotchas
Two things will bite you. First, if the CLIP isn't in the bus - i.e., you didn't feed the Project Manager a CLIP input - Add Entity raises an error telling you exactly that. There's no graceful fallback; the node needs runtime.clip because it encodes immediately. Second, the aspect ratio you pick for a scene only matters downstream in the Director Engine, which reads ratio_tag to compute dimensions. If you bypass the engine and go straight to a FurySampler, that node ignores the tag entirely and uses its own fixed resolution list - so don't expect a 21:9 scene to come out of the single-shot sampler as 21:9. It won't. That's by design (the batch engine handles ratios), but it surprises people.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| fury_bus | SF_LINK | — | |
| entity_type | COMBO | 2 options: character, scene | |
| entity_id | STRING | Hero | — |
| scene_orientation | COMBO | 5 options: Landscape (16:9), Portrait (9:16), Square (1:1), Cinematic (21:9), IMAX (1.90:1) | |
| positive_prompt | STRING | — | |
| negative_prompt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| bus | SF_LINK | — |