Smooth blends
SmoothUnion / SmoothIntersect / SmoothSubtract take a blend distance that
rounds the junction — the organic fillet the hard booleans can’t give.
They come from the implicit engine (signed distance fields) and have no exact B-Rep
form: ToBrep() rejects them with a clear report, while ToMesh() polygonizes the
field with Surface Nets. They still compose freely with the rest of the Shape
vocabulary.
var stem = Shape.Cylinder(5, 30);var bulb = Shape.Sphere(11).Translate(0, 0, 18);
var scene = new Scene();scene.Add(new Part("hard union", stem | bulb, Palette.Steel, Matrix4d.CreateTranslation((-30, 0, 15))));scene.Add(new Part("smooth union", stem.SmoothUnion(bulb, blend: 6), Palette.Teal, Matrix4d.CreateTranslation((30, 0, 15))));
A blend of zero or less degrades to the exact hard operator — field and bounds — so a parametric blend that shrinks to nothing does not have to be special-cased at the call site.
The distance a blended field reports is correct in sign everywhere and a lower bound in magnitude near the seam, which is what meshing and the polygonizer’s cull need; don’t read a wall thickness off the blend region itself.
Related
- Offset — grow or shrink a solid by a uniform distance
- Shell — hollow it into a skin
- Lattices — periodic infill from the same field arithmetic
- The SDF vocabulary — field primitives and domain operations