β¨ Shape Generator (jov)
The old standby for procedural masks
- image
- mask
Some workflows just need a shape. A circle to mask out the center, a rectangle to restrict an inpainting region, a polygon for a stylized vignette. Shape Generator was Jovimetrix's procedural answer before the pack renamed and reworked its shape tooling - and even though it's a legacy node, its design is the one that stuck.
It's a generator with no image input. You pick the shape (CIRCLE, SQUARE, ELLIPSE, RECTANGLE, or POLYGON) and, for polygons, the sides (3β100). Then a batch of tweaks: width/height set the canvas (32β8192), R/G/B are the fill color as 0β1 floats (default all 1.0, i.e. white), angle rotates the shape (-180 to 180), sizeX/sizeY scale it on each axis (0.01β2, so you can squash a circle into an ellipse without changing the shape type), and invert flips the fill (0β1). You get two outputs, image and mask, so the same node serves as a color source or a mask source depending on which output you grab.
The pattern that made it popular: generate a white shape, grab the mask output, and use it to drive compositing. A circle mask is the classic soft region for inpainting or a spot-fix; an inverted ellipse mask lets you keep the center untouched while everything outside gets processed. Because the color is adjustable and the mask comes free, you can also use it as a quick color-fill background - pick a shape, size it to fill, done.
Where it stands today: this lowercase "(jov)" build is the oldest of the pack's shape nodes, and it's no longer in the current source. The modern, maintained version is SHAPE GEN (JOV) β¨ in the JOVIMETRIX menu - same idea, but with proper color pickers, a background color, edge blur, and an extra mask quality. If you loaded an old workflow and this node is missing, swap it for SHAPE GEN and you'll be back in business in a minute; the shape and sides settings map straight across. For the truly ancient builds, pinning an old Jovimetrix version keeps it working, though you don't really gain anything over just using the current node.
Installing it means installing the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Amorano/Jovimetrix.git
pip install -r Jovimetrix/requirements.txt
or ComfyUI Manager β "Jovimetrix", then restart. The dependencies are the shared pack set - numpy, opencv-contrib-python, Pillow, matplotlib, cozy-comfyui helpers - with no models to download. And the standard Jovimetrix history lesson applies: v2.0 split several node groups into separate Jovi_* packages, so if nodes go missing after an update, that's the pack changing shape, not your install breaking.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| shape | COMBO | SQUARE | 5 options: CIRCLE, SQUARE, ELLIPSE, RECTANGLE, POLYGON |
| sides | INT | 33β100 | β |
| widthopt | INT | 25632β8192 | β |
| heightopt | INT | 25632β8192 | β |
| Ropt | FLOAT | 1.000β1 | β |
| Gopt | FLOAT | 1.000β1 | β |
| Bopt | FLOAT | 1.000β1 | β |
| angleopt | FLOAT | 0-180β180 | β |
| sizeXopt | FLOAT | 1.000.01β2 | β |
| sizeYopt | FLOAT | 1.000.01β2 | β |
| invertopt | FLOAT | 0.000β1 | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | β |
| mask | MASK | β |