Nodes/Identity Forge/Identity Forge Cosplayer
ComfyUI Node

Identity Forge Cosplayer

Drop a random person into Spider-Man's suit (or 2B's) — cosplay without the prompt fight

By EnragedAntelope·Created 5 months ago·Updated about 11 hours ago· 29
Identity Forge Cosplayer
    • character_json
    ◄characterNone►
    ◄random_scopeAny►
    ◄look_levelCostume only►
    ◄maskDefault►
    ◄propsNo prop►
    ◄seed0►
    ◄random_poolAll characters►
    ◄upstream►

    Cosplaying a canon character usually means hand-writing the costume into your prompt and praying the model doesn't give you a third person. Identity Forge Cosplayer removes the prayer. It's a companion preset node for the Identity Forge pack: pick a character - Spider-Man, 2B, She-Hulk, Zelda, take your pick from a roster of roughly 1,800 - and it emits a JSON document describing the costume on a random person. The person underneath changes every run; the costume stays faithful, because each character ships a hand-written, canon-checked description covering garments, colours, masks, markings and signature props.

    How it works

    A character is stored as three layers: a costume (worn items only), a small signature look (hair and eyes), and an optional physique. Everything else - body, face, ethnicity - is left for Identity Forge to randomize, which is exactly why each run is a different person wearing the same suit. The look_level input controls how faithful that gets:

    • Costume only (default) - costume plus signature hair/eyes; the person randomizes freely.
    • Full character - also locks the physique for a more faithful read.

    The outputs of character_json wires into Identity Forge's archetype_json socket, same as the pack's Archetype node. If you don't own the pack, this node alone does nothing useful - it's a seed layer, not a renderer.

    The inputs that matter

    • character - the dropdown. None emits nothing; the Random - … entries pick one using the seed. Type to filter, which you'll want, because the roster is enormous.
    • random_scope - limits what Random can pick. Attribute scopes come first (Giant characters, Tiny characters, Non-human / colored, Masked), then a single franchise or category (only Anime & Manga, only Marvel, only Star Wars…). Combines with the character's gender scope.
    • mask - only matters for full-mask characters. Default keeps the mask on and suppresses the randomized face/hair entirely; Unmask (show face) drops it for a helmet-off look, letting the randomized head show under the suit. No effect on face-visible characters.
    • props - off by default. Include signature prop adds the character's iconic held item (Thor's hammer, Captain America's shield) voiced as holding…. The tooltip's warning is real: held objects can stress hand rendering in some models. Opt in only when you want the prop.
    • seed - drives the random character pick, alternate costumes, and colour variation.

    Crossplay and the gender bit

    Here's the part that confuses people. The person's gender is not this node's job - it's the Identity Forge gender widget, and it's independent of the character's. Set the Forge node's gender however you like for crossplay, and it's always respected. Relatedly, fully-encased characters (Iron Giant, Ultraman, a droid) skip the ethnicity mention entirely - with no human skin or face left showing, describing the person underneath only risks nudging the render toward stray human traits. Face-visible cosplays still describe the person as usual.

    Some characters have more than one iconic look - Harley Quinn, Catwoman, Poison Ivy, Giganta - and those rotate between costumes by seed, so the same character gives you a different signature outfit each roll.

    Chaining and stacking

    All the preset nodes expose an optional upstream input, so you can chain Archetype → Cosplayer → Identity Forge on one wire instead of fighting over the single archetype_json socket. Where fields overlap, the node closest to Identity Forge wins; non-overlapping upstream values survive. Set this node to None and it passes its upstream through unchanged - keep everything wired and just toggle what's active.

    Install and gotchas

    Same story as the rest of the pack: zero dependencies, fully offline, no model downloads.

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

    Restart ComfyUI, or install via ComfyUI Manager (search "Identity Forge"). It needs a recent ComfyUI (0.25.0+) because the pack runs on the V3 API. And the one documented gotcha applies here more than anywhere: if a node on a saved graph shows a blank widget or throws a NoneType error after a pack update, delete and re-add the node - its fields were built when the node was created, and recreation clears the stale state.

    One honest note: this is a very new pack and the roster is community-curated, not licensed art. The character descriptions are text, so the checkpoint still decides how faithfully Spider-Man's suit reads. What you get is the prompt fight removed - the prose is already written, canon-checked, and internally consistent.

    Categoryconditioning/character

    Inputs (8)

    NameTypeDefaultDescription
    characterCOMBONoneCharacter to cosplay. 'None' emits nothing; the 'Random — …' entries pick one using the seed, scoped by the source character's gender (and by 'random_scope' below). Type to filter the list. Many characters ship several canonical outfits (Leia's white gown / Hoth / Boushh, Harley's classic and Arkham looks). One is chosen per seed, so re-rolling the seed on a fixed character cycles their wardrobe.
    random_scopeCOMBOAnyLimits the 'Random — …' picks. Attribute scopes come first (Giant / Tiny characters, Non-human / colored, Masked, Mascot / full-suit), then the broad categories (only Anime & Manga, only Marvel, …), then 'Franchise: …' entries for single franchises with enough characters to browse (Pokemon, Final Fantasy, Mortal Kombat, …). 'Any' = no limit. Combines with the gender scope; no effect when a specific character is picked. The console prints the in-scope pool size the first time you use a combo.
    look_levelCOMBOCostume only'Costume only' sends the costume + signature hair/eyes so the person (body, face, ethnicity) randomizes freely. 'Full character' also locks the physique for a faithful look. Set the IdentityForge 'gender' widget to mix for crossplay.
    maskCOMBODefaultOnly affects full-mask characters (Spider-Man, Iron Man, …). 'Default' keeps the mask on and hides the randomized face/hair. 'Unmask (show face)' drops the mask so the randomized head/hair shows under the suit (a helmet-off look). No effect on face-visible characters, or on beasts and non-humanoid droids (R2-D2, a Dalek), which have no person inside.
    propsCOMBONo propOff by default. 'Include signature prop' adds the character's iconic held prop (e.g. Thor's hammer, Captain America's shield), voiced as 'holding …'. No effect on characters without a signature prop. Note: held objects can stress hand rendering in some models.
    seedINT00–18446744073709550000Seed for the random character pick. The control below defaults to 'randomize'.
    random_poolCOMBOAll charactersNarrows the 'Random — …' picks to a positive attribute, composing with 'random_scope' above (e.g. a franchise scope + 'People only' keeps that franchise's mascots and beasts out of the roll). 'All characters' applies no filter. No effect when a specific character is picked.
    upstreamoptSTRINGOptional: connect another preset's character_json here to stack presets. This node's values win where they overlap; set this node to 'None' to pass the upstream through unchanged.

    Outputs (1)

    NameTypeDescription
    character_jsonSTRING—