OpenPoseMediaPipeFace
Google's 468-point face mesh, loaded into your graph
- IMAGE
- MASK
OpenPoseMediaPipeFace is the CUP pack's loader for MediaPipe face control images - the dense 468-landmark face mesh that's far more detailed than the ~70 points of a standard openpose face map. If you're doing lip-sync or micro-expression work in the AIGODLIKE Blender pipeline and the coarse landmark set isn't cutting it, this is the one you want.
A word on what MediaPipe is here, since the name keeps confusing people: Google's MediaPipe is the open-source (Apache 2.0) face-landmark library this community often reaches for when it needs clean, commercially-usable detection. But - and this is the same song as every node in this pack - this node doesn't run MediaPipe. It's an OpenPoseBase subclass with posetype = "MediaPipe_face", so it just reads a control image that Blender already rendered: <image-dir>/MediaPipe_face/ImageNNNN.png. The MediaPipe detection itself happens in the Blender addon.
How it works
The inputs are the CUP standard:
- image (STRING) - directory of rendered control images (filled by the Blender addon).
- frame (INT, default 0) - which frame's mesh to load.
Outputs: IMAGE (the dense face mesh drawing → Apply ControlNet with a mediapipe_face model) and MASK (from the PNG's alpha, optional). Because the mesh is so dense, the condition captures subtle shape - a mouth curve, cheek position - that a sparse landmark set flattens out. It's the control you reach for when faces need to actually act.
Install and gotchas
Ships with ComfyUI-CUP. Manager → search ComfyUI-CUP, or:
cd ComfyUI/custom_nodes
git clone https://github.com/AIGODLIKE/ComfyUI-CUP.git
Restart, and you're done - no model files, no pip deps beyond what ComfyUI already has.
Caveats: it's a loader, not a detector, so standalone in the web UI it does nothing useful, and it needs the addon rendering MediaPipe_face frames. Missing frame → 64×64 black placeholder instead of an error, which then poisons a ControlNet silently. If face control dies mid-shot, that's the first thing to check - not your sampler settings.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| image | STRING | — | |
| frame | INT | 0-2147483648–2147483648 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MASK | MASK | — |