Mesh Select Interior Faces
Find the geometry buried inside your mesh
- BPY_OBJ
- BPY_OBJ
Combine two meshes, run a boolean operation, or join overlapping geometry, and you often end up with faces buried entirely inside the resulting solid - completely enclosed by other geometry, invisible from outside, and pure waste once you're rendering or exporting. Finding them by hand on anything but a trivial mesh isn't realistic. This node does it automatically: Blender's real bpy.ops.mesh.select_interior_faces operator, exposed as a ComfyUI node inside Avatar Graph, the pack that runs actual Blender inside ComfyUI's process (via the bpy Python package) to build interactive 2D-to-3D avatars, auto-generating a node for every mesh operator Blender has.
How it works
It scans the mesh for faces that are fully enclosed - surrounded on every side by other faces, with no path to the outside - and selects them, with no configuration involved. The typical next step is deleting whatever gets selected, since interior faces this deep inside a solid contribute nothing to how it looks and only add unnecessary geometry.
Inputs and outputs
BPY_OBJ- the only input. Just the mesh to scan; there are no parameters to tune on this operator.
Output is a single BPY_OBJ - the same object, with any interior faces found now selected, ready for a delete step or further inspection.
Installing it
ComfyUI Manager: search "avatar-graph-comfyui", install, restart. Manually: cd ComfyUI/custom_nodes && git clone https://github.com/avatechai/avatar-graph-comfyui, then cd avatar-graph-comfyui && python -m pip install -r requirements.txt, then restart.
Python 3.10.x is the requirement to get right first - the bpy package this pack is built on needs that exact minor version, and the README recommends a dedicated conda environment on macOS/Linux (conda create --name comfyui python=3.10) rather than trusting an existing Python install. Windows users get a prebuilt ComfyUI + Python 3.10 zip linked in the README to unzip over an existing install before adding the pack through Manager. Restart with --enable-cors-header (macOS also wants --force-fp16) for the live 3D preview - without it, the graph still runs, you just save the model manually from the pack's Avatar Main Output node instead.
Common issues
If nodes from this pack aren't loading, check the Python version first - anything other than 3.10.x leaves bpy without a working build. On this node itself, the main thing to know is that it can come back with nothing selected, and that's not a failure - plenty of meshes genuinely have no interior faces, especially anything built from a single clean surface rather than merged solids. It's also worth double-checking your intent before deleting whatever it finds: on a mesh with thin double-walled geometry (a common byproduct of some solidify or shell operations), "interior" can catch faces you actually wanted to keep, so a quick look before committing to a delete is cheap insurance. As with every mesh node in this pack, feeding it something other than a real mesh BPY_OBJ from earlier in the same graph surfaces as a Blender-side error.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |