Mesh Normals Tools
Copy-paste for custom vertex normals
- BPY_OBJ
- BPY_OBJ
Where Mesh_NormalsMakeConsistent fixes normals pointing the wrong direction, this node is for something more surgical: manually copying a normal's direction from one part of a mesh to another. It's the closest thing in this pack to a clipboard for shading data.
What it is and why you'd reach for it
This wraps Blender's mesh.normals_tools operator, part of the manual custom-normal-editing toolkit normally used when the automatic fixes (recalculate, weighted strength) don't get a mesh's shading exactly right. A common real case: you've got a nice smooth normal somewhere on a mesh and a seam or hard-edge artifact nearby that automatic recalculation won't touch cleanly - you copy the good normal, then paste, add, or multiply it onto the problem area. It's a hand tool. You reach for it after the mesh-wide fixes have gotten you most of the way and something local still looks wrong.
How it works
mode decides what happens between the copied source and the target selection:
- COPY - replace the target's normals outright with the copied one.
- PASTE - similar, applies the stored normal to the current selection.
- ADD - blend the copied normal additively onto the existing ones.
- MULTIPLY - scale the existing normals by the copied one instead of replacing them.
- RESET - discard custom normal data and fall back to Blender's default auto-generated normals for the selection.
absolute changes whether the operation is treated as a relative adjustment or an absolute value assignment - worth toggling if ADD or MULTIPLY gives you a result that looks like it stacked twice as strong as expected.
The inputs and outputs that matter
mode- the enum above:COPY/PASTE/ADD/MULTIPLY/RESET.absolute(boolean, default off) - relative vs. absolute application of the operation.
As with the rest of this pack's mesh nodes, output is a single BPY_OBJ.
How to install it
ComfyUI Manager: search Avatar Graph, install, restart. Or by hand:
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 is built on bpy - Blender packaged as a Python module - and bpy only publishes wheels for specific Python minor versions, so the README is blunt about it: you need Python 3.10.x, not "close enough." Windows users get a dedicated embedded-Python-3.10 zip bundled specifically to avoid this trap; macOS/Linux users should set up a pinned conda create --name comfyui python=3.10 environment before installing anything. Launch with --enable-cors-header (plus --force-fp16 on Mac) if you want the real-time avatar preview panel - skip it and the graph still executes fine, you just lose the live viewer and would export a .glb/.gltf to check your work elsewhere.
Common issues
This node has no effect if you haven't actually copied a normal first - in Blender's own UI that's a separate "Copy Vector" step, and since it's not exposed as its own parameter here, expect PASTE, ADD, and MULTIPLY to behave unpredictably unless your graph's earlier steps set up the source normal Blender expects to have cached. If you're not sure what a given mode did, RESET is your safety valve - it wipes custom normal data back to defaults so you can start over cleanly. And if the install itself is the problem, it's almost always the Python version, not a missing dependency - verify with python --version before assuming bpy is broken.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| modeopt | COMBO | 5 options: COPY, PASTE, ADD, MULTIPLY, RESET | |
| absoluteopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |