Mesh Mark Seam
Telling Blender's unwrapper where it's allowed to cut
- BPY_OBJ
- BPY_OBJ
Unlike its Freestyle-flagging siblings, this one is directly relevant to Avatar Graph's actual documented pipeline. The README's own Plane Texture Unwrap node handles the simple case automatically - "will perform mesh face fill and UV Cube project on the target plane mesh." Anything beyond a flat plane, though, needs a human decision about where the mesh is allowed to be "cut open" when it's flattened into 2D texture space, and that decision is what seams are for.
How it works
This wraps Blender's mesh.mark_seam operator. It flags the selected edges as a UV seam - the boundary Blender's unwrapper is permitted to split the mesh along when generating UVs. Unwrap a closed mesh with no seams at all, and the algorithm has to guess where to cut, usually producing heavy stretching and distortion somewhere. Mark deliberate seams first - typically along places that won't be very visible, or along natural boundaries like where an eye plane meets the surrounding face - and the unwrap comes out flatter and less distorted.
The inputs and outputs that matter
BPY_OBJ(optional) - the mesh, with the edges to mark already selected.clear(defaultfalse) - removes the seam flag from the selected edges instead of adding it, Blender's "Clear Seam."
Output is a single BPY_OBJ, geometrically unchanged - this only sets the seam flag on the selected edges, it doesn't unwrap anything itself.
How to install it
ComfyUI Manager: search "Avatar Graph" and install. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
then pip install -r requirements.txt and restart. Needs Blender's bpy module, pinned to Python 3.10.x - a dedicated conda environment on macOS/Linux, or Avatech's prebuilt Python-3.10 ComfyUI zip on Windows with the pack installed through Manager afterward.
Common issues & troubleshooting
Marking a seam doesn't visibly change anything. That's correct - this node only sets a flag that a separate unwrap step reads later. If nothing downstream in your graph actually runs an unwrap, marking seams has no effect on the final texture mapping.
Texture still looks stretched or distorted after unwrapping. Check whether seams were placed somewhere that actually breaks the mesh into flat-enough pieces - a seam in the wrong spot, or too few seams on a mesh with real 3D curvature, still leaves the unwrapper guessing on the rest. Plane Texture Unwrap's automatic handling only really works well on genuinely flat, plane-like geometry; anything more complex benefits from seams placed with actual UV layout in mind.
Seam is visible as a texture discontinuity in the final result. That's expected - a seam is, by definition, a place the UV map is allowed to break continuity. Put seams somewhere the visual break won't be obvious (along a natural edge, hairline, or the back of a shape) rather than across the middle of a visible feature.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| clearopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |