Nodes/Cozy Reference Pose Generator/Cozy Pose Face Reference
ComfyUI Node

Cozy Pose Face Reference

Cozy Pose Face Reference

By cozymantis·Created 2 years ago·Updated about a year ago· 98
Cozy Pose Face Reference
    • pose
    vertical_positioncenter
    horizontal_positioncenter
    size

    If you've ever tried to build a character face sheet the hard way - hunt down fifteen reference photos, run each through a face-landmark detector, manually fix the ones where the detector invented a second chin - you know how tedious the preprocessor roulette gets. Cozy Pose Face Reference skips all of it. It's a tiny node that drops a pre-drawn OpenPose-style face skeleton onto your graph, positioned wherever you want it in the frame, ready to feed straight into a ControlNet. No models, no key, no downloads. Pick a position, get a pose.

    Why it exists

    Same reason as its sibling in this pack, Cozy Pose Body Reference: reference sheets need canonical skeletons, not detector output. A character consistency sheet - the 3×5 grid of head angles you use for face-controlnet conditioning or as character-LoRA training data - only works if every panel's landmarks are the same face geometry. Extract those landmarks from real photos and the proportions drift panel to panel. These are hand-authored and symmetrical, so your sheet stays structurally consistent, and your character LoRA (or IP-adapter-style face pass) only has to handle identity, not fight a warped skeleton.

    How it works

    Read the source and it's hilariously small: a string builder and a PNG loader. It maps your two position choices onto a filename - vertical north/center/south becomes n/s/nothing, horizontal west/half-west/center/half-east/east becomes w/hw/c/he/e - then opens poses/face/<size>/<that>.png, converts it to a normalized float tensor, and hands you an IMAGE. Fifteen baked PNGs per resolution, each already drawn in the right spot of the canvas. That's the whole mechanism. It runs in a blink.

    The inputs that matter

    • vertical_position - north, center, south. Where the head sits top-to-bottom.
    • horizontal_position - west, half-west, center, half-east, east. Five columns across the frame. Combined with vertical, that's your full 3×5 = 15 grid.
    • size - 512 or 1024. Match the resolution to your pipeline; the larger set has more headroom for SDXL-era face ControlNets.

    The output is a single pose (IMAGE). Done.

    Wiring it up

    Send pose into the image input of an Apply ControlNet node. You want a controlnet that speaks face landmarks - on SD 1.5 that's the openpose_faceonly variant (or openpose_full if you want the body context too), and union models usually have a pose mode that covers it. The important habit: skip the preprocessor. This image is already the conditioning map. If you route it back through a face-landmark detector you're just paying for a worse version of the same thing. The typical endgame is a sheet: either render each panel and composite them into a 3×5 reference grid, or train a character LoRA on the sheet directly.

    Installing it

    ComfyUI Manager → Install Custom Nodes → search "Cozy Reference Pose Generator" (that's the pack title; this node and Cozy Pose Body Reference ship together), install, restart. Or the manual route:

    cd ComfyUI/custom_nodes
    git clone https://github.com/cozymantis/pose-generator-comfyui-node
    

    The README's pip install -r requirements.txt step is essentially ceremonial here - the deps are torch, numpy, and pillow, all of which any working ComfyUI already has. No model files, no external downloads, nothing to configure.

    Gotchas

    The main trap is expecting too much. This is not a face detector and it doesn't animate anything - you get 15 fixed positions, period. No rotation sliders, no eyebrow tweaks, no expression control; the "angle" variety comes entirely from choosing grid positions. If you need a specific expression or a 30° turn, you're better off with an edit model on the 2026 stack or a real detector. And the position in the frame is cosmetic for ControlNet purposes - what actually matters is which skeleton you picked, so keep your grid mapping consistent when you build the sheet. It's a niche tool with one job, but for that one job it's the least fiddly thing on the market.

    CategoryCozyMantis

    Inputs (3)

    NameTypeDefaultDescription
    vertical_positionCOMBOcenter3 options: north, center, south
    horizontal_positionCOMBOcenter5 options: west, half-west, center, half-east, east
    sizeCOMBO2 options: 512, 1024

    Outputs (1)

    NameTypeDescription
    poseIMAGE