Starter Templates
Opening Node Sculptor from Empty Canvas loads Parametric Vase. Seventeen starter graphs live in the left dock Nodes tab, under the Templates group (collapsed by default). Click a card to replace the current graph \u2014 the browser confirms first. There is no overlay gallery and no Templates dock tab.
Templates are authored code, not user data, so they stay consistent across releases. A dev-build validator checks every template on load and complains in the console if a node kind, socket type, or conversion ever breaks \u2014 so broken templates show up at commit time, not in somebody\u2019s browser.
Template Categories
Cards in the Nodes-tab Templates group are sectioned by intent. The scan path a maker tends to take:
Sculptures- Not a cup: peg-board string art (mesh), dense Peano coaster, gyroid lattice brick, trefoil bead on a raft.
Vessels- Vases and cups. Profile curve + stacker, loft, or spiralizer.
Functional- Boxes and grips. Surface texture, structured stacking, solid extrusion, lattice walls.
Generative- Lattice / lofted lamp shades.
Toolpath Tricks- Native toolpath recipes: multi-wall stacking, Hilbert infill, helix coil, loft-then-spiral lamps.
Blank Canvas exists in the catalog for authors but is hidden from the Nodes-tab list (no buildConfig). Wave Cup, Attractor Lamp, and Sculpted Lamp keep their graphs (listed: false) so they still validate and document, but they do not appear as cards. The default graph is Parametric Vase, not an empty Output node.
Blank Canvas
Hidden from the Nodes-tab Templates list. It has no buildConfig, so applying it would keep the current graph. Use New Design if you want to leave Node Sculptor, or delete nodes on the canvas if you want an Output-only graph.
String Art
Category: Sculptures · Graph: Circle \u2192 Extrude (board) + Circle \u2192 Extrude \u2192 Array Polar (pegs) + String Art \u2192 Pipe Along Path \u2192 Mesh Merge \u2192 Output.previewMesh
A loom, not a stacked star. Crossing chords at one Z cannot be G-code \u2014 two extrusions occupy the same height. This graph prints a solid board with 16 pegs; the winding is a mesh tube on the board face so a slicer can union the crossings. Wind real thread on the pegs if you want the craft object.
What you should see: a round board with standing pegs and a chord star on top, \u00d8100.0 mm \u00d7 H12.8 mm, as a mesh preview. Toolbar Export Mesh. No G-code path. Problems tab empty.
Tagged parameters: Nails, Step, Radius, Pegs.
Peano Plate
Category: Sculptures · Graph: Rectangle \u2192 Offset Walls joined with two Peano curves (offset by one line width) \u2192 Array Linear (24 layers) \u2192 Output.Toolpath
A maze coaster whose fill is the Peano curve \u2014 two copies, 0.45 mm apart, so the plate is dense enough to set a glass on. Three perimeter walls. Distinct from Hilbert Box (infill engine inside a 40 mm cube). Peano does not self-cross, so stacking it is a real plate. Order 4, size 80 mm, origin shifted by (\u221240, \u221240).
What you should see: an ~80 mm maze plate on the bed, \u00d883.7 mm \u00d7 H5.6 mm, as a toolpath preview (toolbar G-code). Looks like a filled coaster, not a cup and not a Hilbert box. Problems tab empty.
Tagged parameters: Kind, Order, Size, Layers.
Gyroid Brick
Category: Sculptures · Graph: (SDF \u00b7 Box \u2229 SDF \u00b7 Gyroid) \u222a SDF \u00b7 Box (floor) \u2192 Marching Cubes \u2192 Output.previewMesh
A gyroid lattice clipped to a 60 \u00d7 60 \u00d7 20 mm box, sitting on a solid 4 mm floor so it does not fall apart and does not cut the bed face. Distinct from Lattice Lamp (cylinder \u2229 gyroid) and from box-minus-gyroid slits. Lattice period 12 mm, wall thickness 0.75. Marching Cubes resolution 56.
What you should see: a perforated brick on the bed with a closed underside, \u00d860.0 mm \u00d7 H24.0 mm, as a mesh preview. Toolbar Export Mesh. No print path. Generation is slower than a vase. Problems tab empty.
Tagged parameters: Box size, Lattice period, Thickness, MC resolution.
Trefoil Knot
Category: Sculptures · Graph: Spiral + Circle (raft) joined with Function Curve (torus knot) \u2192 Set Speed \u2192 Extruder \u2192 Output.Toolpath
A (2,3) torus knot as a 3D bead on a filled raft. The curve is an embedding \u2014 it does not cross itself \u2014 and a small Z weave keeps over/under at different heights. A flying single bead has nothing to sit on; contour-slicing a tube is a hollow straw with overhangs.
What you should see: a spiral-filled disk with a trefoil ridge on top, \u00d857.0 mm \u00d7 H6.2 mm, as a toolpath preview (toolbar G-code). Not a vase wall. Problems tab empty.
Tagged parameters: Segments, Raft radius, Raft layers.
Parametric Vase
Category: Vessels · Graph: Print Bed \u2192 Circle \u2192 Vase Spiralizer \u2192 Output.Toolpath
This is the default graph when you open Node Sculptor from Empty Canvas. Shortest path to a printable spiral vase: a 96-segment circle anchored to the bed centre, 120 layers at 0.2 mm starting at Z = 0.2 mm, end-scale 1.35 (about 35% wider at the rim).
What you should see: a closed spiral vase sitting on the print bed, roughly Ø28 mm \u00d7 H24 mm, as a toolpath preview (toolbar G-code, Output.Preview Mesh unwired). Problems tab empty.
There are no tagged parameters on this template \u2014 edit Circle radius / segments and Vase Spiralizer layers / end scale on the nodes themselves.
Twisted Hex Vase
Category: Vessels · Graph: Print Bed \u2192 Polygon (6 sides) \u2192 Layer Stacker \u2192 Output.Toolpath
A hexagonal profile stacked with per-layer rotation and a gentle taper. 150 layers at 0.3 mm, Z start 0.2 mm, end-scale 1.30. The geometry swings dramatically for only a few parameter changes.
What you should see: a recognisable twisted hex vase on the bed, roughly Ø28 mm \u00d7 H46 mm, as a toolpath preview. Problems tab empty.
Tagged parameters: Twist \u00b0/layer (rotationPerLayerDeg, 1.5 in the graph \u2014 the integer stepper may display 2), Taper (endScale).
Ribbed Vase
Category: Vessels · Graph: Print Bed \u2192 Circle \u2192 Layer Stacker \u2192 Modulate Toolpath \u2190 (Series \u2192 Wave Field) \u2192 Output.Toolpath
A circular stacker whose Toolpath is radially displaced by a sine Wave Field. 120 layers at 0.3 mm, end-scale 1.20. Wave frequency 0.6 and amplitude 2 mm set rib count and depth; Modulate Toolpath is in Radial (XY) mode so the ribs run up the wall.
What you should see: a closed vase on the bed with vertical sine ribs, roughly Ø29 mm \u00d7 H37 mm, as a toolpath preview. Problems tab empty.
Tagged parameters: Ribs/lap (wave.frequency), Rib depth (wave.amplitude), Taper (stack.endScale).
Wave Cup
Hidden from the Nodes-tab Templates list (listed: false) \u2014 too close to a stacked vase. The graph stays in the catalog for authors and tests.
Category: Vessels · Graph: Print Bed \u2192 Circle \u2192 Modulate Path \u2190 Noise Field \u2192 Layer Stacker \u2192 Output.Toolpath
A cup whose profile Z is displaced by a seeded 2-octave noise field (frequency 0.12, amplitude 3 mm, seed 1337), then stacked 110 layers at 0.3 mm with a slight end-scale 1.08. Because the seed is stable, the bottom and rim echo each other.
What you should see: a cup on the bed with a wavy rim (not a perfect cylinder), roughly Ø23 mm \u00d7 H34 mm, as a toolpath preview. Problems tab empty.
Tagged parameters: Wave frequency, Wave depth, Seed.
Twisted Modulated Vase
Category: Vessels · Graph: Print Bed \u2192 Circle Array (24 radii \u00d7 Z series) \u2192 Loft Multi (Catmull-Rom) \u2192 Twist \u2192 Mesh Spiralize 3D \u2192 Curve Modulator \u2192 Output.Toolpath, with Twist.mesh \u2192 Output.previewMesh
A tall lofted vase: 24 circles with a parabolic radius (about \u00d840\u201356 mm), stacked every 4 mm from Z = 0.2 mm, Catmull-Rom lofted, then twisted around the mesh XY centroid (not world origin) and spiralized. A Z-axis sine ripple with alternating turns textures the wall.
What you should see: a recognisable tall twisted vase on the bed, \u00d856.9 mm \u00d7 H93.0 mm, as a toolpath (toolbar G-code) plus a preview mesh. Problems tab empty. If Twist ever ran around the world origin the AABB ballooned to a pancake \u2014 that is a bug, not the intended look.
Tagged parameters: Base height (mm), Tier count, Tier spacing (mm), Twist (turns), Loft smoothness, Spiral layer height, Spiral samples/turn, Z ripple amp, Z ripple freq.
Knurled Grip
Category: Functional · Graph: Print Bed \u2192 Circle \u2192 Modulate Path \u2190 Wave Field \u2192 Layer Stacker (rotated) \u2192 Output.Toolpath
A cylindrical grip with diagonal knurling. A circle profile is modulated by a diagonal-direction wave field; the Layer Stacker then rotates per layer so the bumps march around the cylinder in a pleasing spiral.
What you should see: a short knurled cylinder on the bed, \u00d822.3 mm \u00d7 H27.7 mm, with diagonal grooves, as a toolpath preview (toolbar G-code). Problems tab empty.
Tagged parameters: Groove density, Groove depth, Diagonal pitch.
Parametric Box
Category: Functional · Graph: Print Bed \u2192 Rectangle \u2192 Extrude \u2192 Output.previewMesh
The minimal "how do I make a box" recipe \u2014 and the cheapest demo of the Extrude node. The bed centre is wired into the Rectangle so the box always sits in the middle of the build plate; Extrude pushes 20 mm in +Z and the resulting mesh drives both the viewport preview and the top-toolbar\u2019s Export Mesh (STL) button.
Also exercises the Path \u2192 Region implicit conversion: Rectangle emits a closed Path, Extrude declares a Region input, and no glue node is needed.
What you should see: a solid 20\u00d720\u00d720 mm box on the bed as a mesh preview. The toolbar swaps to Export Mesh (STL). Problems tab empty.
Tagged parameters: Height, Cap top, Cap bottom.
Voronoi Lattice Box
Category: Functional · Graph: Rectangle \u2192 Voronoi 2D \u2192 Extrude \u2192 Rotate \u2192 Move \u2192 Array Polar \u2192 Mesh Merge \u2192 Output.previewMesh, with Rectangle \u2192 Extrude on the side as the base plate.
Voronoi-perforated lattice walls cloned around a base plate \u2014 the canonical Grasshopper "lattice box" recipe rebuilt as a single template. Showcases the entire mesh pipeline in one graph:
- The 50\u00d750 wall rectangle is centred on the bed and Voronoi-tessellated into a planar
Region. Extrudepushes the region 0.3 mm into a thin slab.Rotate(\u221290\u00b0 around X, pivoted atbed.center) tips the slab vertical so its 0.3 mm thickness grows into the box interior \u2014 rotating the other way would leave the walls sticking past the nominal 50\u00d750 footprint.Movethen slides it to the front of the box.Array Polarclones it four times around the Z axis throughbed.centerto form all four walls.- A second
Rectangle \u2192 Extrudepair makes a slim 50\u00d750 base plate. Mesh Mergeconcatenates the wall array and the base into one mesh; that mesh feeds Output\u2019spreviewMeshsocket, which drives both the live render and the top-toolbar\u2019s Export Mesh (STL) button.
The transform chain (Extrude.mesh \u2192 Rotate.geometry \u2192 Move.geometry \u2192 Array Polar.geometry) relies on the polymorphic-transform identity coercions documented in Socket Types & Conversions \u2014 the Mesh runtime type is preserved through the chain so the final array stays a mesh.
One shared Number node named size drives both rectangles and, through a tiny Binary Op + Unary Op + Construct Vector sub-graph, the wall move offset. Change the box size once and the walls, base and offsets all re-derive \u2014 a nice example of how to keep parametrics DRY.
What you should see: a ~50 mm lattice box on a base plate, \u00d850.0 mm \u00d7 H50.1 mm, as a mesh preview. Toolbar Export Mesh. Generation is slower than a vase. Problems tab empty (or only expected Voronoi cull notes).
Tagged parameters: Box size (mm), Cell count, Seed, Wall thickness, Wall depth.
Attractor Lamp
Hidden from the Nodes-tab Templates list (listed: false) \u2014 still a stacked circle; the pinch is subtle. The graph stays in the catalog for authors and tests.
Category: Generative · Graph: Print Bed \u2192 Circle \u2192 Modulate Path \u2190 Point Attractor (offset from the centre) \u2192 Layer Stacker \u2192 Output.Toolpath
A lamp shade silhouette with a Gaussian-falloff attractor positioned next to the profile, creating a localised pinch on one side. Moving the attractor offset vector changes where the pinch appears; changing strength switches pinch to bulge.
What you should see: a stacked shade on the bed, \u00d819.6 mm \u00d7 H42.7 mm, as a toolpath preview (toolbar G-code). The pinch can be subtle at the default strength. Problems tab empty.
Tagged parameters: Attractor radius, Pinch strength, Lampshade taper.
Lattice Lamp
Category: Generative · Graph: (SDF \u00b7 Cylinder \u2229 SDF \u00b7 Gyroid) \u2192 Marching Cubes \u2192 Output.previewMesh
A Schoen Gyroid TPMS implicit field clipped to a cylindrical region, polygonised via Marching Cubes at 80 resolution. The cylinder is lifted by half its height so it sits on the bed rather than being split by the XY plane. Drives the Preview Mesh socket, not the Toolpath \u2014 lattice slicing belongs in a real slicer.
What you should see: a gyroid cylinder mesh on the bed, \u00d852.0 mm \u00d7 H70.0 mm. Toolbar Export Mesh. Marching Cubes at resolution 80 can take about a minute. No print path. Problems tab empty.
Tagged parameters: Lattice period, Lattice thickness, MC resolution.
Sculpted Lamp
Hidden from the Nodes-tab Templates list (listed: false) \u2014 same loft-shade family as Tiered lamp. The graph stays in the catalog for authors and tests.
Category: Generative · Graph: Print Bed + local offset \u2192 Rectangle Array (11 tiers) \u2192 Loft Multi (Catmull-Rom) \u2192 Mesh Spiralize 3D \u2192 Curve Modulator \u2192 Output.Toolpath, with Loft.mesh \u2192 Output.previewMesh
Eleven rectangle profiles with alternating widths, lofted into an undulating shade, then spiralized. Tier spacing is 6 mm so the lamp is printable (~\u00d840 \u00d7 H60), not a thimble-scale Grasshopper import.
What you should see: a tall undulating lamp shade on the bed, \u00d837.2 mm \u00d7 H60.5 mm, as a toolpath (toolbar G-code) plus a preview mesh. Problems tab empty. Generation is slower than a simple vase.
Tagged parameters: Tier spacing (mm), Tier count, Loft smoothness, Loft tension, Spiral layer height, Spiral samples/turn, Texture amplitude, Texture frequency.
Gerridaj Loft Lamp
Category: Generative · Graph: Series (radii) + Series (Z) \u2192 Circle Array \u2192 Curve Modulator \u2192 Loft Multi \u2192 Mesh Spiralize 3D \u2192 Output.Toolpath, with Loft.mesh \u2192 Output.previewMesh
Longest-list matching modulates every profile in the circle series, then lofts and spiralizes \u2014 the Grasshopper-painful lamp recipe as one graph.
What you should see: a ribbed lofted lamp on the bed, \u00d851.4 mm \u00d7 H57.0 mm, as a toolpath (toolbar G-code) plus a preview mesh. Problems tab empty.
Tagged parameters: Base radius, Ripple amp, Ripple freq, Spiral layer H.
Tiered lamp · loft & spiral
Category: Toolpath Tricks · Graph: Expression Series (widths) + Rectangle Array \u2192 Loft Multi \u2192 Slice \u2192 Spiralize Contours \u2192 Modulate Toolpath \u2190 Wave Field \u2192 Output.Toolpath, with Loft.mesh \u2192 Output.previewMesh
Eleven rectangle tiers chain-lofted into a bumpy lamp shell (~\u00d840 \u00d7 H60 mm), then sliced and stitched into a continuous spiral with sine ripple. Printable scale, not a thimble.
What you should see: an 11-tier bumpy shell on the bed, \u00d839.9 mm \u00d7 H60.3 mm, as a toolpath (toolbar G-code) plus a preview mesh. Problems tab empty.
Tagged parameters: Tier Z spacing (mm), Width formula f(n), Tier count, Loft smoothness, Slice layer (mm), Squiggle frequency, Squiggle amplitude.
Multi-Wall Cup
Category: Toolpath Tricks · Graph: Print Bed \u2192 Circle \u2192 Offset Walls \u2192 Layer Stacker \u2192 Seam Shift \u2192 Output.Toolpath
Offset Walls emits a PathList of inward offsets; Layer Stacker longest-list-matches every wall without duplicating the stacker. Offset Walls is inward-only \u2014 the outer printed wall is the first inset (0.45 mm inside the circle), not the original circle.
What you should see: a short cup with three concentric walls on the bed, \u00d825.5 mm \u00d7 H16.8 mm, as a toolpath preview (toolbar G-code). Problems tab empty.
Tagged parameters: Walls, Spacing, Layers.
Hilbert Box
Category: Toolpath Tricks · Graph: Print Bed \u2192 Rectangle \u2192 Planar Boundary \u2192 Infill (Hilbert) joined with Offset Walls \u2192 Array Linear (Z) \u2192 Output.Toolpath
A 40 mm square region filled with the 3dSynth Hilbert infill engine, joined with two inward offset walls, then copied 80 times in Z at 0.5 mm so it is a box, not a single layer at Z = 0.2. Hilbert generation uses the region's circumradius, so the XY overlay diameter reads larger than the 40 mm square (~\u00d865 mm).
What you should see: a stacked Hilbert-filled square on the bed, \u00d864.6 mm \u00d7 H40.7 mm, as a toolpath preview (toolbar G-code). Problems tab empty.
Tagged parameters: Box size, Infill density, Pattern, Layers.
Helix Tower
Category: Toolpath Tricks · Graph: Print Bed \u2192 Helix \u2192 Set Speed \u2192 Extruder \u2192 Output.Toolpath
A FullControl helix (radius 18 mm, height 50 mm, 12 turns, 256 segments, Z start 0.2 mm) with per-stream speed 1800 mm/min and extruder on. Native toolpath primitives, not a mesh you later slice.
What you should see: a climbing coil on the bed, \u00d837.0 mm \u00d7 H51.0 mm, as a toolpath preview (toolbar G-code). Problems tab empty.
Tagged parameters: Radius, Turns, Speed.
Gallery UX
Templates live in the left dock Nodes tab, Templates group \u2014 not an overlay modal and not a separate Templates tab.
Default graph- Opening Node Sculptor from Empty Canvas seeds Parametric Vase. Blank Canvas is hidden from the list.
Where to find them- Left dock \u2192 Nodes \u2192 expand Templates (17 cards). Search also filters templates. The group remembers expanded/collapsed in localStorage.
Card anatomy- Each card shows label, optional badge (Phase H / Rework), and a short description. Hover for details; right-click opens node docs where wired.
Category grouping- Cards are grouped by Sculptures, Vessels, Functional, Generative, Toolpath Tricks with an uppercase header per group. Wave Cup, Attractor Lamp, and Sculpted Lamp are hidden.
Apply + confirm- Clicking a card replaces the entire graph. After the first graph exists, the browser
confirmdialog asks before replacing. One undo entry; undo restores the previous graph.
Switching templates
Expand Templates on the Nodes tab any time and click another card. The first apply from Empty Canvas is Parametric Vase (already loaded); later clicks confirm replace.
Authoring Your Own Template
Templates live in templates/node-sculptor/templates.ts. Each entry is a NodeSculptorTemplate with:
id\u2014 stable identifier, used for undo history.label,description,badge\u2014 gallery display.category\u2014 one ofBlank | Sculptures | Vessels | Functional | Generative | Toolpath Tricks.listed\u2014 optional;falsehides the card from the Nodes-tab list while keepingbuildConfig.buildConfig()\u2014 optional factory returning aNodeSculptorModuleConfig(nodes + edges + viewport + taggedParams).
A dev-build validator checks every template for unknown node kinds, duplicate ids, dangling edges, and unconvertible socket types \u2014 regressions show up as console warnings on page load, not runtime breakage for the user.