Tutorial 15: Organic Bezier Vase
Create a sculptural vase with an organic, non-circular cross-section using a Bezier curve. Then make it breathe — pulsating in and out as it rises — by driving Scale with a sine wave.

What you'll learn
- How to use the Bezier block with 7 control points for a closed organic shape
- How extraState (point count) defines the number of control points
- How to combine Scale with Sin for a breathing/pulsating effect
- How Bezier curves differ from circles, polygons, and stars
Prerequisites
- Completion of Tutorial 6 (Sine Wave Vase) is recommended.
Step 1: Define variables
Set Variable
Interactive preview is available in the interactive reader.
Step 1
Create three slider variables
Add three Set Variable blocks with Show in Viewport enabled:
- vaseHeight =
50— total height
Step 2: Center and add Spiral Up
Spiral Up
Interactive preview is available in the interactive reader.
Step 2
Add Translate and Spiral Up
Add Translate with X = Bed Size X / 2, Y = Bed Size Y / 2. Inside the body, add Spiral Up with Start Z = Layer Height, End Z = vaseHeight, Rotations = vaseHeight / Layer Height.
Step 3: Add the breathing Scale
Scale
Interactive preview is available in the interactive reader.
Step 3
Add Scale with sine-driven pulsation
Inside the Spiral Up body, add a Scale block. For both SX and SY, build the expression: 1 + breatheAmount × sin(normZ × breatheFreq).
Build it as: Arithmetic (+) with left = Number (1), right = Arithmetic (×) with left = Get Variable (breatheAmount), right = Sin of Arithmetic (×) with Variable (normZ) and Get Variable (breatheFreq).
Step 4: Draw the Bezier cross-section
Bezier Curve
Interactive preview is available in the interactive reader.
Step 4
Add Bezier with 7 control points
Inside the Scale body, add a Bezier block. Click + to add points until you have 7 control points total (two chained cubic segments). Set these coordinates for an organic, asymmetric blob:
- P0 = (0, -18) — bottom center
The last point must match P0 to close the shape.
Complete block program
Full program — Tutorial 15
Interactive preview is available in the interactive reader.
Final block structure
| # | Block | Where | Values |
|---|---|---|---|
| 1–3 | Set Variable | Path Group | vaseHeight=50, breatheAmount=0.2, breatheFreq=8 |
| 4 | Translate | Path Group | X = bedsize_x/2, Y = bedsize_y/2 |
| 5 | ↳ Spiral Up | Inside Translate | Start Z, End Z, Rotations = height/LH |
| 6 | ↳ Scale | Inside Spiral Up | SX/SY = 1 + breatheAmount × sin(normZ × breatheFreq) |
| 7 | ↳ Bezier | Inside Scale | 7 points, asymmetric organic closed curve |
Outcome
You should see a sculptural vase with an organic, non-circular profile that pulsates smoothly as it rises. The asymmetric Bezier cross-section gives it a handmade, artisanal quality that no simple geometric shape can match.
Load this tutorial
Interactive preview is available in the interactive reader.
Interactive preview is available in the interactive reader.
What's Next
Tutorial 16: Twisted Tray — Use Rounded Rect with For Z and Rotate to create a designer tray with gently twisted walls.