Primitives

All primitives return a Mesh. Defaults are sensible — call with no args for a unit-sized shape.

box

box()                              // 1×1×1
box({ width: 2, height: 3, depth: 1 })
box({ size: 2 })                   // 2×2×2
box({ size: [2, 3, 4] })           // 2×3×4
box({ widthSegments: 4, heightSegments: 4, depthSegments: 4 })

sphere

sphere()                           // radius 0.5, 16×12 segments
sphere({ radius: 1, widthSegments: 32, heightSegments: 24 })

cylinder

cylinder()                         // radius 0.5, height 1
cylinder({ radius: 0.3, height: 2, segments: 8 })
cylinder({ radiusTop: 0.2, radiusBottom: 0.5, height: 1 })  // tapered
cylinder({ segments: 6, heightSegments: 4 })                // more vertical detail

plane

Horizontal (XZ) by default — natural for terrain/floors.

plane()                            // 1×1, 1 segment
plane({ size: 10, segments: 50 })  // 10×10, 50×50 segments
plane({ width: 5, height: 3, widthSegments: 10, heightSegments: 6 })
plane({ size: [4, 8], segments: [8, 16] })

cone

cone()                             // radius 0.5, height 1
cone({ radius: 1, height: 2, segments: 8 })
cone({ segments: 6, heightSegments: 3 })  // pyramid with vertical detail

icosphere

Evenly distributed triangles — much better than sphere() for displacement and organic shapes.

icosphere()                        // radius 0.5, 2 subdivisions (162 verts)
icosphere({ subdivisions: 0 })     // raw icosahedron (12 verts, 20 faces)
icosphere({ subdivisions: 1 })     // 42 verts — good low-poly sphere
icosphere({ radius: 1, subdivisions: 3 })  // 642 verts — smooth

torus

torus()                            // radius 0.5, tube 0.2
torus({ radius: 1, tube: 0.3, radialSegments: 16, tubularSegments: 32 })
shapecraft