Identity Forge Cosplayer
Drop a random person into Spider-Man's suit (or 2B's) — cosplay without the prompt fight
- character_json
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.Noneemits nothing; theRandom - …entries pick one using the seed. Type to filter, which you'll want, because the roster is enormous.random_scope- limits whatRandomcan 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.Defaultkeeps 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 propadds 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.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| character | COMBO | None | Character 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_scope | COMBO | Any | Limits 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_level | COMBO | Costume 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. |
| mask | COMBO | Default | Only 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. |
| props | COMBO | No prop | Off 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. |
| seed | INT | 00–18446744073709550000 | Seed for the random character pick. The control below defaults to 'randomize'. |
| random_pool | COMBO | All characters | Narrows 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. |
| upstreamopt | STRING | Optional: 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)
| Name | Type | Description |
|---|---|---|
| character_json | STRING | — |