Nodes/Avatar Graph/Mesh Primitive Circle Add
ComfyUI Node

Mesh Primitive Circle Add

Dropping a clean circle mesh into your avatar graph

By avatechai·Created 3 years ago·Updated 2 years ago· 264
Mesh Primitive Circle Add
  • location
  • rotation
  • scale
  • BPY_OBJ
seed0
vertices32
radius1.00
fill_type
calc_uvstrue
enter_editmodefalse
align

Every mesh has to start somewhere, and for round shapes - a pupil, an iris, a simple accessory - that's usually a circle primitive. This node is Blender's basic circle-mesh generator, exposed directly as a ComfyUI node: no upstream mesh required, it makes its own starting geometry from scratch.

What it is and why you'd reach for it

It wraps Blender's mesh.primitive_circle_add operator, one of Blender's oldest and simplest mesh-generation tools. In the context of this pack - which exists to build interactive 2D-to-3D avatars, the kind of project that had people animating a pixel-art sprite or a doodled cat so it blinks and lip-syncs in real time - a clean circle is a genuinely useful building block whenever your source image doesn't already give you clean geometry to work with. Think small accessory shapes, a base for a stylized eye highlight, or any round element you'd rather generate than try to extract from a segmented mask.

How it works

Given a vertex count and radius, it generates a ring of evenly spaced vertices around a center point. Left as an open ring (fill_type = NOTHING), it's just an edge loop with no faces - useful as a boundary to build from with other tools in this pack. Set a fill type and it becomes a solid disc instead.

The inputs and outputs that matter

The ones worth actually setting:

  • vertices (default 32, min 3, max very large) - how many points make up the circle. Higher looks smoother but adds more geometry to carry through the rest of your graph; 32 is a sane default for most avatar-scale details.
  • radius (default 1) - the circle's size, in Blender's scene units.
  • fill_type - NOTHING (open ring, no faces), NGON (one big n-gon face), or TRIFAN (a triangle fan like Mesh_Poke produces, meeting at a center vertex). TRIFAN is generally the better choice if you plan to deform the disc later - the center vertex gives a natural pivot point.
  • location, rotation, scale - where the new circle gets placed, each a 3-value vector.
  • align - WORLD, VIEW, or CURSOR, deciding what frame of reference the rotation is relative to.
  • calc_uvs (default on) - generates basic UV coordinates alongside the geometry, worth leaving on if this mesh needs a texture later.

Output is the pack's standard single BPY_OBJ - a brand-new mesh object, since this node needs no BPY_OBJ input at all.

How to install it

ComfyUI Manager: search Avatar Graph, install, restart. Manually:

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 needs Python 3.10.x specifically, because it depends on bpy - Blender packaged as a pip module - which only ships wheels for particular Python minor versions; the README is upfront about this rather than letting you discover it through a failed install. Windows users get a dedicated embedded-Python-3.10 zip for exactly this reason; macOS/Linux users should pin a conda create --name comfyui python=3.10 environment. Restart with --enable-cors-header (--force-fp16 too on Mac) if you want the live avatar preview panel talking to editor.avatech.ai.

Common issues

If the circle appears somewhere unexpected in your scene, check location and align together - align: CURSOR places it relative to Blender's 3D cursor rather than world origin, which can surprise you if you weren't expecting that frame of reference. If a later shape-key deformation looks pinched or uneven, revisit fill_type - a flat NGON face doesn't give a deformation node a natural center to work around the way TRIFAN does. And as with the rest of this pack, a bpy install failure is almost always a Python-version problem, not a broken dependency.

Categoryblender

Inputs (10)

NameTypeDefaultDescription
seedoptINT00–18446744073709550000
verticesoptINT323–10000000
radiusoptFLOAT1.000–999999995904
fill_typeoptCOMBO3 options: NOTHING, NGON, TRIFAN
calc_uvsoptBOOLEANtrue
enter_editmodeoptBOOLEANfalse
alignoptCOMBO3 options: WORLD, VIEW, CURSOR
locationoptB_VECTOR3
rotationoptB_VECTOR3
scaleoptB_VECTOR3

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ