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 2 months ago·Updated about 11 hours ago· 19
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.
    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