Mesh Inset
Framing a face before you do something to just the inside
- BPY_OBJ
- BPY_OBJ
This is Blender's real bpy.ops.mesh.inset operator, one of the more parameter-heavy nodes in Avatar Graph's auto-generated Blender set - a dozen fields, most of which you'll never touch. What it does in one sentence: it shrinks the selected face(s) inward, adding a new ring of faces around the border where the original edge used to be.
How it works
Inset creates a smaller copy of the selected face(s) sitting inside the original outline, connected to it by a new band of faces. The practical use is almost always the same shape of workflow: inset a face first, then act on just the smaller inner face - extrude it inward for a socket or cavity look, delete it to punch a clean-bordered hole, or push it forward to create a raised panel. Without the inset step first, you'd be operating on the whole original face and losing the border ring that makes the result look intentional rather than abrupt.
On an Avatar Graph mesh this shows up around facial features specifically - insetting a mouth-shaped face before extruding it in for depth, or insetting before a hole for an eye socket, rather than cutting straight into the flat surface.
The inputs that actually matter to a beginner
BPY_OBJ(optional) - the mesh, with the face(s) to inset already selected.thickness(default0) - how far in the new border ring extends. This is the field you'll actually set; at the default of 0 nothing visibly happens.depth(default0) - optionally pushes the inset face along its normal at the same time, combining inset and a small extrude in one step. Leave at 0 for a flat inset.use_outset(defaultfalse) - flips the direction: instead of shrinking inward, it grows the selection outward, adding a border ring around the outside of the original face(s).use_individual(defaultfalse) - with multiple faces selected, insets each one separately rather than treating the whole selection as one connected region. Turn this on if you're insetting several disconnected faces at once and getting one merged blob instead of separate insets.
Everything else - use_boundary, use_even_offset, use_relative_offset, use_edge_rail, use_select_inset, use_interpolate, release_confirm - are legitimate Blender inset controls for edge cases (open mesh boundaries, uneven face sizes, interpolated shading), but they're exposed because this node is a 1:1 wrap of the real operator, not because a typical inset needs them. Leave them at default until something specific isn't working right.
Output is a single BPY_OBJ.
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
Nothing happens. thickness defaults to 0 - an inset with zero thickness produces no visible new geometry. Set it above zero.
Multiple separate faces inset into one merged shape instead of individually. Turn on use_individual - without it, Blender treats a connected group selection as one region to inset as a whole.
The inset ring looks uneven across faces of different sizes. Toggle use_relative_offset on, which scales the inset amount relative to each face's own size instead of applying the same flat thickness everywhere.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| use_boundaryopt | BOOLEAN | true | — |
| use_even_offsetopt | BOOLEAN | true | — |
| use_relative_offsetopt | BOOLEAN | false | — |
| use_edge_railopt | BOOLEAN | false | — |
| thicknessopt | FLOAT | 0.000–999999995904 | — |
| depthopt | FLOAT | 0.00-999999995904–999999995904 | — |
| use_outsetopt | BOOLEAN | false | — |
| use_select_insetopt | BOOLEAN | false | — |
| use_individualopt | BOOLEAN | false | — |
| use_interpolateopt | BOOLEAN | true | — |
| release_confirmopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |