Nodes/ComfyUI-Studio-Fury/2️⃣ SF Add Entity (Builder)
ComfyUI Node

2️⃣ SF Add Entity (Builder)

The node that encodes your character's prompt once so nothing re-encodes it again

By FuryNocturn·Created 9 months ago·Updated 4 months ago· 0
2️⃣ SF Add Entity (Builder)
  • fury_bus
  • bus
entity_type
entity_idHero
scene_orientation
positive_prompt
negative_prompt

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 - character or scene. 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's target_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_sheet tag 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.

Category🧩 Studio Fury/📦 Dataset

Inputs (6)

NameTypeDefaultDescription
fury_busSF_LINK
entity_typeCOMBO2 options: character, scene
entity_idSTRINGHero
scene_orientationCOMBO5 options: Landscape (16:9), Portrait (9:16), Square (1:1), Cinematic (21:9), IMAX (1.90:1)
positive_promptSTRING
negative_promptSTRING

Outputs (1)

NameTypeDescription
busSF_LINK