Nodes/ComfyUI-CUP/OpenPoseFace
ComfyUI Node

OpenPoseFace

Face landmarks, pre-rendered by Blender

By AIGODLIKE·Created 2 years ago·Updated 10 months ago· 61
OpenPoseFace
    • IMAGE
    • MASK
    image
    frame0

    If you want to steer a character's facial expression - a smile, a glance, an angry brow - with pose control, this is the node you reach for inside the AIGODLIKE Blender pipeline. OpenPoseFace is the CUP pack's loader for face-landmark-only control images: thin line drawings of the face mesh, no body skeleton, no hands.

    As with every node in ComfyUI-CUP, the word "OpenPose" in the name describes the kind of image it loads, not something it computes. This pack is a bridge for the Blender addon ComfyUI-BlenderAI-node: Blender renders the control images for each animation frame, and CUP's nodes just pick the right frame back up and hand it to your sampler. OpenPoseFace is a subclass of OpenPoseBase with posetype = "openpose_face".

    How it works

    It takes image - a STRING path to the directory of rendered control images - and looks inside <image>/openpose_face/ for a file named ImageNNNN.png, where NNNN is the value of the frame input (frame 0 → Image0000.png, and so on). The PNG is converted to an RGB tensor normalized 0–1 and returned as IMAGE, plus a MASK pulled from the image's alpha channel.

    The frame input is the one you actually care about. Because the Blender addon renders a landmark set per animation frame, you bump frame with your timeline and the node hands the exact expression for that frame to an Apply ControlNet node paired with an openpose_face ControlNet model. That's how lip flaps and brow raises track a moving character instead of freezing one expression for the whole shot.

    Inputs and outputs

    • image (STRING) - directory of rendered control images. Normally filled in by the Blender addon, not typed by hand.
    • frame (INT) - which frame's face map to load; default 0.

    Outputs are IMAGE (the face landmark drawing → wire into ControlNet) and MASK (from alpha, optional). Face-only conditioning is the classic way to keep a character's identity intact while letting the body pose drift - the model fills in the rest from your prompt, and only the face region is pinned down.

    Install and gotchas

    It ships with ComfyUI-CUP. In ComfyUI Manager search ComfyUI-CUP and install, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/AIGODLIKE/ComfyUI-CUP.git
    

    then restart. No extra pip packages, no model files - this pack downloads nothing.

    The gotcha, same as every CUP OpenPose node: it does no detection. Standalone in the web UI it's useless, because there's no Blender writing openpose_face frames for it. And a missing frame is a silent failure - the node logs to stderr and returns a 64×64 black placeholder, which a ControlNet happily consumes and turns into garbage. If your face control stops working, the first thing to check is that Blender actually rendered that frame's face map, not the node itself.

    CategoryOpenPose

    Inputs (2)

    NameTypeDefaultDescription
    imageSTRING
    frameINT0-2147483648–2147483648

    Outputs (2)

    NameTypeDescription
    IMAGEIMAGE
    MASKMASK