Nodes/Avatar Graph/Mesh Primitive Monkey Add
ComfyUI Node

Mesh Primitive Monkey Add

Blender's mascot, one node away

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

If you've ever opened Blender, you've met Suzanne - the monkey head that's been Blender's built-in test mesh and unofficial mascot since practically forever, the thing people spawn to check a shader or a rig before committing to a real asset. This node is Blender's actual bpy.ops.mesh.primitive_monkey_add operator, exposed as a ComfyUI node because it's part of Avatar Graph, the pack that turns a 2D character image into an interactive rigged avatar by running real Blender (via the bpy Python package) inside ComfyUI itself. Every one of Blender's mesh operators gets auto-generated into a node here - Suzanne included, whether or not you were expecting to find her in an avatar-rigging pack.

How it works

It spawns Suzanne's mesh - a fixed, hand-modeled shape, not a parametric primitive like a cube or sphere - into the scene, exactly the way it appears in Blender's own Add menu. Because it's a real, moderately detailed asymmetric mesh with actual character to it (eyes, ears, a jaw), it's genuinely useful as a stand-in test object: if you're building or debugging a chain of mesh operations (a Screw, a rip, some selection logic) and want something more interesting than a cube to watch it happen to, this is the one to reach for.

Inputs and outputs

Same shape as every primitive-add node in this pack - everything's optional, so it runs with no configuration and gives you a default-sized Suzanne at the origin:

  • size (default 2) - scales the whole mesh up or down.
  • location, rotation, scale - the standard XYZ placement vectors if you need it somewhere other than the origin.

The rest is boilerplate shared across every primitive node here: calc_uvs (on by default, gives Suzanne her actual UV layout - worth leaving alone), enter_editmode, an align enum (WORLD/VIEW/CURSOR), and a seed field that - as on every other primitive-add node in this pack - isn't part of the real Blender operator at all. Best guess is it's there purely to give ComfyUI something to force a re-run against, not to affect the mesh. Output is a single BPY_OBJ, a live reference into the running Blender session, ready to feed into whatever comes next in your graph.

Installing it

ComfyUI Manager: search "avatar-graph-comfyui", install, restart. Or manually: cd ComfyUI/custom_nodes && git clone https://github.com/avatechai/avatar-graph-comfyui, then inside that folder python -m pip install -r requirements.txt, then restart ComfyUI.

The one requirement worth getting right before anything else: Python 3.10.x, because the bpy package this whole pack depends on is built specifically for that minor version. The README recommends a dedicated conda environment on macOS/Linux (conda create --name comfyui python=3.10) rather than fighting an existing setup, and for Windows there's a prebuilt ComfyUI + Python 3.10 zip linked directly in the README that you unzip over your ComfyUI folder before installing the pack through Manager. Restart with --enable-cors-header (add --force-fp16 on macOS) - that flag lets ComfyUI talk to Avatech's web-based 3D viewer for a live preview; without it, the graph still runs fine, you just save the mesh out manually via the pack's Avatar Main Output node instead of watching it animate inside ComfyUI.

Common issues

The Python version mismatch is far and away the most common failure - install against anything but 3.10.x and bpy won't have a working build, so the whole pack fails to load rather than just this node quietly misbehaving. Beyond that, this pack is a heavier dependency than most custom nodes because it's embedding real Blender machinery, so watch for conflicts with other packs' pinned Python requirements - a known hazard of an ecosystem where every custom node brings its own requirements.txt. There's nothing Monkey-specific to trip over otherwise: it's a fixed mesh with no moving parts to misconfigure. Just remember the README's own warning that nodes and demo templates in this pack are still actively changing, so don't read a shifted default in a future version as something you broke.

Categoryblender

Inputs (8)

NameTypeDefaultDescription
seedoptINT00–18446744073709550000
sizeoptFLOAT2.000–999999995904
calc_uvsoptBOOLEANtrue
enter_editmodeoptBOOLEANfalse
alignoptCOMBO3 options: WORLD, VIEW, CURSOR
locationoptB_VECTOR3
rotationoptB_VECTOR3
scaleoptB_VECTOR3

Outputs (1)

NameTypeDescription
BPY_OBJBPY_OBJ