Object Shape Key Transfer
Borrow a face rig from another mesh
- BPY_OBJ
- BPY_OBJ
The fastest way to get a decent face rig is to steal one. Object Shape Key Transfer wraps bpy.ops.object.shape_key_transfer - Blender's "Transfer Shape Keys" operator - and copies shape keys from one mesh onto another, so a mouth-open/blink set you already tuned on one character can move onto a new one instead of being rebuilt from scratch.
This is the node that makes Avatar Graph feel like a production pipeline instead of a toy: shape key sets are reusable assets. Get the blink timing and mouth shapes right once, then transfer them to every character that matches the target topology.
How it works
Auto-generated wrapper, standard for the pack. Your incoming BPY_OBJ becomes the active object and the operator transfers keys onto it. The catch baked into Blender's design: transfer works between meshes with matching vertex counts and topology - it maps vertices positionally. If the meshes differ, results get messy fast.
The inputs that matter
BPY_OBJ- the target mesh receiving the keys.mode- an enum with three choices:OFFSET- copy the keys' offset from the source's basis, so both meshes deform the same way relative to rest.RELATIVE_FACE- transfer in face-relative space.RELATIVE_EDGE- transfer in edge-relative space.- In practice,
OFFSETis what you want for same-topology characters; the relative modes are for when the meshes differ slightly and you need a better fallback.
use_clamp- boolean, default false. Clamps transferred values to safe ranges. Turn it on if the transfer is producing wild deformations.
Output is one BPY_OBJ, unchanged - but now carrying the transferred key stack.
Install
Standard Avatar Graph install. ComfyUI Manager: search Avatar Graph, install, restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui
python -m pip install -r requirements.txt
The pack pins bpy==3.6.0, so Python 3.10 is effectively required (conda env recommended), and first launch downloads the ~2.5 GB SAM checkpoint plus MediaPipe landmarkers.
Common issues
The whole ballgame is topology. Transfer onto a mesh with a different vertex count and you'll get either an error or a mangled result - the operator has no "figure it out" mode. Match your source and target meshes (same base image, same segmentation, same layer build) and transfers are clean; change the face's geometry and they're not.
Second gotcha: transfer needs a source and a target, and this node only carries one BPY_OBJ input - the active object at execution time is the target, and the source is whatever Blender considers the source for the transfer. In the pack's shared scene, that means you need the source mesh set up as the transfer source beforehand. If nothing transfers, that wiring is the first thing to check.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| modeopt | COMBO | 3 options: OFFSET, RELATIVE_FACE, RELATIVE_EDGE | |
| use_clampopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |