Nodes/Identity Forge/Identity Forge Turnaround
ComfyUI Node

Identity Forge Turnaround

A character turnaround without the model re-rolling the person

By EnragedAntelope·Created 3 months ago·Updated 9 days ago· 22
Identity Forge Turnaround
    • prompt
    • view_label
    character_json
    viewsTurnaround (6)
    framingFull body
    posestanding with arms relaxed at the sides

    A turnaround - front, three-quarter, profile, back of the same character - is the standard way to pin a design down. In text-to-image it's a specific kind of torture: you nail one angle, then ask for another and the model hands you a stranger. Identity Forge Turnaround attacks that from a direction you might not expect. It doesn't try to hold pixels steady. It makes sure the description physically cannot change between views, then lets one queue render the whole set.

    It's a camera node, not a character node. It belongs to the Identity Forge pack, slots in right after the main Identity Forge node, and its only job is turning one resolved character into a pile of view prompts. Identity Forge owns the person, the outfit and the scene; the Turnaround owns only the camera. That split is the whole design, and it's why the node has just three widgets instead of the main node's ~80.

    How it keeps it the same person

    Wire Identity Forge's prompt_json output into character_json. That output is a resolved character - every field concrete, nothing left to randomize. The Turnaround then re-runs Identity Forge's own engine once per angle, swapping only the camera description each time: "full body shot, three-quarter angle facing left", "view from directly behind", and so on. Since there's nothing left to re-roll, the seed literally cannot move anything. All six views come from the same document in a single pass.

    This design exists to kill a specific failure. An earlier approach used an auto-advancing index widget, which meant an upstream node left on randomize re-rolled the character between queues - and your "turnaround" was six angles of six different people. The rewrite made the node a pure function of its inputs: no RNG, no cache hacks, nothing to go stale.

    The prompt output is a list, so ComfyUI runs everything downstream once per view while single-valued inputs - the negative prompt, the model, the latent - broadcast across all of them. One queue, six images, no rewiring.

    One genuinely clever detail: the straight-back view quietly drops the face fields (eyes, lips, makeup, expression). A t2i model draws whatever prose names, so "bright blue eyes" on a back view just makes it turn the head around to show them. The node omits rather than negates - writing "face is not visible" is exactly how you get a face. Hair, costume, build and any mask survive; the rear three-quarter keeps its face because a cheek and jaw are genuinely in frame there.

    The inputs that matter

    Just three, all camera:

    • views - Turnaround (6), Turnaround (4), or the quick two-shot pairs (Front + back, Front + profile). This is also how many images one queue produces.
    • framing - Full body by default, plus Cowboy, Waist up, Chest up, Head and shoulders, and Unspecified.
    • pose - pins a standing, symmetric stance by default so the only thing changing between views is the camera. An asymmetric pose like a hand on one hip reads as a different body from each side; Keep the character's pose exists if you want a looser sheet.

    The two outputs wire into obvious places: promptCLIP Text Encode, and view_label → Save Image's filename_prefix, so the set lands on disk as 1-front, 2-three-quarter-left … in rotation order. For a clean reference sheet the pack docs suggest setting Identity Forge's location_setting to Studio / solid backdrop and locking composition to centered symmetry.

    The honest take

    This is prompt-level consistency, not pixel-level identity preservation. Diffusion has no memory of what it just drew, so some face drift between angles is model drift you can't fully remove. What the Turnaround removes is the avoidable half - the prompt changing. That's a real and useful slice of the problem, and it costs nothing extra.

    Install

    Zero dependencies, no model downloads, fully offline. Either search Identity Forge in ComfyUI Manager, or:

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

    then restart ComfyUI. The one pack-wide gotcha: after an update, a node saved on an old graph can throw a NoneType error or show a blank widget. Right-click the node and choose Fix node (recreate) - it preserves every widget value and link.

    Categoryconditioning/character

    Inputs (4)

    NameTypeDefaultDescription
    character_jsonSTRINGThe character to turn around: connect Identity Forge's 'prompt_json' output here. It is a fully resolved character, so every view reproduces it exactly — nothing is re-rolled between angles. Build the person, the outfit and the scene on that node (chain a Cosplayer / Archetype / Creature into it as usual); this node changes only the camera.
    viewsCOMBOTurnaround (6)Which set of angles to emit — and therefore how many images one queue produces. Turnaround (6) = front, both three-quarters, profile, rear three-quarter and back; Turnaround (4) = front, three-quarter, profile, back; the two pairs are the quick checks. Every angle is emitted at once as a list, so the graph below runs once per view. The straight-back view drops the face description (eyes, lips, makeup, expression) so the model renders a back and does not turn the head to show them; hair, costume and any mask are kept.
    framingCOMBOFull bodyHow much of the subject each view frames. It is combined with the angle into the shot description, replacing whatever framing the character resolved to — 'Full body' is the reference-sheet default. 'Unspecified' states the angle only and lets the model choose the distance.
    poseCOMBOstanding with arms relaxed at the sidesPins a standing, symmetric stance so the ONLY thing changing between views is the camera. An asymmetric pose (a hand on one hip, contrapposto) reads as a different body from each side, which is why the character's own pose is replaced by default. Choose 'Keep the character's pose' for a looser character sheet.

    Outputs (2)

    NameTypeDescription
    promptSTRINGOne prompt per view, as a list. Wire into CLIPTextEncode: the whole graph below then runs once per angle from a single queue.
    view_labelSTRINGMatching list of short, sortable names ('1-front', '2-three-quarter-left', …). Wire into Save Image's filename_prefix to keep a reference set in rotation order on disk.