Distance Volumes
All distance nodes accept three optional blocks:
profile_scale { … }— scale factor applied before the SDF (tapers, squash-and-stretch).profile_offset { … }— linear offset (world units) subtracted from the SDF (grooves, panels).volume { … }— runs only where the (possibly deformed) SDF is ≤ 0, letting you assign materials or patterns.
Same as in shapes we also have these two helper variables (they shadow the shape variables);
sdf– the raw signed distance (negative inside, positive outside).inside– convenience alias for-sdf(positive inside, zero on the surface).
Sphere
at: centre — default: segment origin (point_at(0)).radius(float): sphere radius — default:0.5.
Simple ball shape.
Box
at: centre.size(vec3): half-sizes (x y z) — default:vec3(0.5).rounding(float): edge bevel radius — default:0.0.
Cuboid with optional bevel.
Capsule
from(vec3): axis start.to(vec3): axis end.radius(float): cylinder/hemisphere radius — default:0.5.
Cylinder capped by hemispheres.
Cylinder
from(vec3): axis start.to(vec3): axis end.radius(float): cylinder radius.
Flat-capped cylinder.
Cone
from(vec3): axis start.to(vec3): axis end.radius1(float): base half-diameter — default:0.5.radius2(float): top half-diameter — default:0.25.
Linear taper.
Vesica
from(vec3): axis start.to(vec3): axis end.radius(float): lens half-thickness — default:0.5.
Lens / rugby-ball shape.
NgonFrustum
from,to(vec3): axis ends.sides(int ≥ 3): number of sides — default:4.base(float): inscribed radius atfrom.top(float): inscribed radius atto.phase(float radians): rotation offset — default:0.
Extruded regular N-gon; sides = 4 gives a pyramid frustum.
RectFrustum
from,to(vec3): axis ends.base_wh(vec2): width × height atfrom.top_wh(vec2): width × height atto— default: same asbase_wh.angle(float radians): rotation — default:0.
Rectangular frustum; equal sizes produce a straight box column.