Mesh Primitive Circle Add
Dropping a clean circle mesh into your avatar graph
- location
- rotation
- scale
- BPY_OBJ
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), orTRIFAN(a triangle fan likeMesh_Pokeproduces, meeting at a center vertex).TRIFANis 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, orCURSOR, 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.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| seedopt | INT | 00–18446744073709550000 | — |
| verticesopt | INT | 323–10000000 | — |
| radiusopt | FLOAT | 1.000–999999995904 | — |
| fill_typeopt | COMBO | 3 options: NOTHING, NGON, TRIFAN | |
| calc_uvsopt | BOOLEAN | true | — |
| enter_editmodeopt | BOOLEAN | false | — |
| alignopt | COMBO | 3 options: WORLD, VIEW, CURSOR | |
| locationopt | B_VECTOR3 | — | |
| rotationopt | B_VECTOR3 | — | |
| scaleopt | B_VECTOR3 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |