glisten is a metaball-first sketch modeler. You don't build topology — you drop soft primitives into space and let them fuse, like clay. It's for the early, exploratory part of product and jewelry design, where the form matters more than the mesh.
How to use it
- Add a form — click a primitive in the top rail: sphere, capsule, torus, cone, box, cylinder, and Poly (a polygon prism — set its Sides 3–33, turn it into a Star, or Taper it to a point for a pyramid; Round softens the edges). It drops into the scene.
- Fuse — move two forms near each other and they melt into one body (osmotic union). Subtract carves instead.
- Select — click any form. Its wireframe ghost lights up and the gumball appears.
- Gumball (all live at once, no mode switching): colored arrows move along an axis · rings turn · cubes resize that axis · the white center drags freely on screen · the amber cube scales uniformly. Hover any handle and a label names what it does.
- Inspector (right): switch Add / Subtract / Intersect, set this form's Color and Smoothness, and tune its shape (a torus's radius & thickness, a cone's tip, a box's roundness…). Tap any value to type it exactly. Remove it from here.
- Color tints each form; pigment shaders blend the colors where two forms fuse.
- Blend × (bottom) multiplies every form's smoothness at once — 1 = each at its own setting, >1 = molten, 0 = crisp. Edge chooses how every join is shaped: Fillet (a rounded edge) or Chamfer (a flat 45° bevel); the smoothness sets its size. Fillet is the default soft-clay look; Chamfer gives a faceted, machined edge.
- Shell hollows the body to a thin wall — per-form in the inspector, or globally with the Shell toggle & slider next to Blend ×. It lightens the piece (and drops the ring's metal weight).
- Bend & Twist (bottom bar) warp the whole body — Bend curves it along its length (the side-profile arc), Twist spirals it around that axis. Both are live; center is straight. Flatware comes with a gentle bend already; push it further or zero it.
- Shader (bottom-left) opens a searchable library of looks — Gloss, Matte, Glass, Chrome, Gold, Copper, Pearl, Toon, Velvet, Carbon, Wax, Jade, Zebra (surface-fairness stripes), Wire, Hidden-line, Wind, Iso, Heat, Holo, X-ray, Glow and a Normals debug view. Type to filter (the names from Points — Emrld → Chrome, ZBRA → Zebra, Shade → Matte, HLR → Hidden-line — match too). Reflections and light come from a real photographic studio environment, so metals read like jewelry.
- Mirror reflects one half of space across a fold plane for symmetric rings & pendants — turn it on and pick the X / Y / Z axis (build the +side, get both). Grid toggles the ground plane & contact shadow — the floor drops automatically below taller pieces. ⟨ hide panels (top of the toolbar) tucks the left palettes into a drawer for smaller screens — a panels ▸ tab on the left edge brings them back.
- Builders ▾ is one menu that holds the parametric generators, listed by what they make — Jewelry → Ring, Flatware → Spoon / Fork / Knife, Grow → Tree / Figure / Creature, World → Terrain, Type → MetaText (more to come). Pick one to start it; each opens its own panel of real-world controls and a live metal weight.
- Ring (Builders → Ring) is a one-piece ring builder: a finger-hole mandrel at your chosen US size is a locked subtract, so everything you add fuses into a wearable band with a true bore. Pick a metal and spot price for a live weight + melt-value estimate (metal only — no labor/stones). Turn on a Stone (optional) for a faceted round-brilliant gem in a 4-prong, 6-prong or bezel setting — set its carat (the diameter follows) and prong/wall size. The prongs/bezel are real metal, fused into the band as one body and counted in the weight; the gem is a visual placeholder (you set a real stone), so it's listed separately by carat in the panel and every export manifest, not printed. Undo to leave.
- Flatware (Builders → Spoon/Fork/Knife) builds cutlery at real proportions from glisten's own clay: a shaped handle curves through a flaring neck into an angled dished bowl (or an up-swept fork head, or a bolstered blade) — handle and bowl/tines stay one fused body at every setting. Dial Length / width / thickness in mm (plus bowl depth, tine count & length, or blade length), and choose a Style — Classic, Midcentury, Biomorphic, Sphere Finial, or Surreal — to restyle the proportions and the handle's end. Pick a metal (gold, platinum, sterling, stainless, titanium, aluminum, pewter) for a live weight + approximate material cost at editable commodity prices, then grab any part with the gumball to keep sculpting. Undo to leave.
- Grow (Builders → Tree / Figure / Creature) is the generative builder: a stochastic L-system grows a pear tree (leaves, hanging pears — never the same twice; ↻ reroll), a Vitruvian figure, or a canine — all built from a skeleton fused into one smooth skin. Drag the joint dots to pose (the skin follows live), flip View → wire to see the bones, and choose what the body IS: solo (a fast posable body), melted (it joins the metaball field — primitives fuse into it under Blend ×, booleans carve it, weight & exports include it, still posable), or ◍ bake to clay (freeze the pose as a captured form). Poses ride ◆ keyframes and the animated ABC export. Console types can grow custom forms via glistenGrow().
- Terrain (Builders → World → Terrain) raises a seeded ground under your work — mounds and far ridges over an island that melts into the floor (↻ reroll for new land). Dig opens a hole where the pink dot sits (drag the dot to place it) with the soil heaped at the rim — bury something, then keyframe Dig with ◆ and the ground closes back over it. Relief, Spread, Dig and Heap all animate. It's scenery: rendered in Rendre as a Soil part (drop any material on it), but never counted in weight or exports — those stay your piece.
- MetaText (Builders → Type → MetaText) casts whatever you type in clay — a monoline stroke alphabet (lowercase, space, period) fused into one smooth body. Dial Size, stroke Weight and Blend; set Body to melted and the text joins the metaball field, where a keyframed Blend × condenses the word out of a molten mass — or melts it back into one. Renders in Rendre as a MetaText part. Console types: glistenMetaText('word').
- ◐ Rendre (top of the toolbar) is the rendering room — a real path tracer. Your sculpt (or an imported OBJ / glTF / Rhino 3DM, or a dropped file) lands auto-scaled on an infinite studio floor; light it by swapping the environment (33 studios; drag any .hdr or image onto the canvas to use it — images are expanded to true HDR), with Rotation / Height / Intensity dials; dress it from the materials drawer (577 PBR materials — drag a swatch onto a part, or select-then-click; search speaks both languages: “glass” finds Lucida, “gold” finds Aurum); right-click any part — the floor too — to edit its PBR live (color, metal, rough, glass, coat, sheen, glow). Behind the model you see an infinity surround in the floor's own material (toggle to see the environment image). ⬇ Save scene… writes one .glisten with the model AND the whole render setup; ⬇ Render… saves a PNG up to 4K. One undo history runs through both rooms.
- Save / Load keep your sketch as a re-editable .glisten file (honest JSON inside; saves from the Rendre side carry the full render setup too) (it also autosaves to this browser, so a reload restores it). Undo / Redo — or ⌘Z / ⌘⇧Z — step through your edits.
- Import OBJ/STL brings your own model in as a captured primitive: it's baked into a signed-distance field (the Detail slider sets the resolution — higher is crisper but slower to bake) and dropped into a fresh scene as one form you can fuse, subtract, gumball, shell, and export like any other. It's a frozen capture (movable/boolean-able, not re-shapeable); watertight meshes bake cleanest, and an imported model isn't saved into the .json — re-import after a reload.
- Demo is a guided autopilot — it drives the real UI with a visible cursor through every tool and mode: sketching and fusing primitives, each gumball handle, Add / Subtract / Intersect, color, the searchable shader library, Mirror (and its X/Y/Z fold axis), the panels drawer, Frame / Grid, Shell & opening a face into a cup, Bend / Twist (whole-body and per-part), the ◆ Keyframe animator (two poses, then a previewed morphing turn), and the Ring and Flatware builders. It even flips the Advanced tools on to show them, then restores your settings when you press it again to stop. Export OBJ meshes the field (consistent outward normals, app units) for handoff to CAD/CAM; Export STL writes the mesh at real millimeters for 3D printing / casting, bundled in a .zip with an honest manifest — metal weight, material cost, the mm bounding box, and a watertight (closed-manifold) check. Export GLB writes a colored glTF (real mm) for web / AR / render handoff — it carries your per-form colors as vertex color, and bakes the weight, material and size into the file's glTF extras. Export 3MF writes the modern print interchange (real mm) with the same honest figures stored as native 3MF metadata inside the file.
- Preferences (the ⚙ by the wordmark): turn idle auto-rotate on/off and set its speed — the view drifts after a few seconds without input.
- Outliner (right edge) lists every form — click to select, double-click a name to rename it, and click the ◉ eye to hide a form (it's set aside — removed from the body but kept in the scene; click again to bring it back). ⌘-click (or Ctrl) adds/removes a form; Shift-click selects a range. With several selected, the gumball moves, turns and scales them all together (and Delete removes them all). Works on the canvas too. With exactly two forms selected, a ⌒ Gumbridge button appears — it orients a tunable strut between them so two separate forms connect into one fused body (then tune the strut's radius / smoothness like any form). Camera — drag empty space to tumble; scroll or pinch to zoom; Frame recenters the view on your design if it drifts off-screen. Measure shows the model's size in mm and lets you click two points on the surface for the distance between them — in real millimeters, the same scale as the Ring & Flatware builders. Turntable records a 360° spin of your design to a video (mp4 or webm) — set the duration and frame rate, optionally add a cinematic camera pan or eased (slow→fast→slow) motion; the panels stay out of the video. ◆ Keyframe is the animator (an Advanced tool — flip Animator on in Preferences › Advanced): each press captures the whole model (every form's position, rotation, size, shape, color and warps — never the camera). Capture two or more poses — the second key arms playback automatically (the Keyframes toggle in the Turntable box is the opt-out) — and the model morphs through your keys while the camera turns — ▶ Preview plays it live, ● Record saves the video. Forms can come and go between keys: add a form and capture again — on playback it swells into the body at that key (so ◆, add a shape, ◆, add a shape… replays how the thing was built); delete (or eyeball-hide) a form and it melts away. The animation also exports as an Alembic .abc — the Export ABC button opens its own options box (mesh samples + draft/std/fine quality): one animated mesh with a time sample per frame at 24 fps (real millimeters; the topology morphs freely) — any Alembic-aware renderer or animation package plays it directly on the timeline. Playback is non-destructive (your working pose comes back when the turn ends); keys last for the session.
A short history of metaballs
The idea is older than most modeling tools. In 1982 Jim Blinn, visualizing molecules at JPL, described surfaces as a sum of soft density fields — his "blobby model." Where the fields overlapped, the surfaces bulged together. Touch two and they became one.
A few years later (1983–85) a group at Osaka University — Nishimura, Hirai, and colleagues — formalized the same notion for animation and named it metaballs (メタボール). In 1986 the Wyvill brothers and Craig McPheeters refined the field functions into "soft objects" with finite, well-behaved falloff.
The missing piece was turning a field back into a surface you could render or print. Marching Cubes (Lorensen & Cline, 1987) and Bloomenthal's implicit-surface polygonizers solved that — sample the field on a grid, find where it crosses zero, stitch triangles. glisten's OBJ export is a descendant of exactly this step (it uses marching tetrahedra, after Doi & Koide, 1991).
Through the 1990s metaballs became the look of liquid metal and mercury (the T-1000 lineage), a demoscene staple, and a stock feature of the big animation packages of the day. Digital sculpting tools later took the organic, topology-free spirit in their own direction.
The modern thread is signed distance fields (SDFs). Instead of summing densities you store distance-to-surface and combine shapes with a smooth minimum — popularized for real-time use by Inigo Quilez and the Shadertoy era, and raymarched directly on the GPU. SDF booleans give clean smooth unions and subtractions for free, which is why a whole new generation of clay-like, topology-free modelers is built on them. glisten sits squarely in that thread: every form is an SDF, fused with a smooth-min, raymarched live.
Credits
Made by Phil Renato and Claude (Anthropic), 2026 — part of ILCA. Non-commercial research software — your models and renders are yours (see LICENSE, DISCLAIMER & NOTICES alongside the app).