OpenPoseFace
Face landmarks, pre-rendered by Blender
- IMAGE
- MASK
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.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | STRING | — | |
| frame | INT | 0-2147483648–2147483648 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MASK | MASK | — |