Confectionery bestiary / Plate VIII

Axolotl Jelly.

A strawberry-gummy salamander with feathered gills. Pull off a leg and it grows another.

WebGPU · Live

HandleGrab a foot and pull until the leg gives. It keeps twitching on the table while a new one buds from the stump. Lean on the head, drag the tail, or startle it and watch the gills flare. Sound starts with your first touch.

Mass≈–g
Volume100.0% of rest
Length–cm
Legs4/4attached

At table scale, 1 simulation unit is 2 cm and the gummy weighs 1.3 g/cm³. Volume is summed every frame over the body's tetrahedra. Length runs from snout to tail tip.

Inside the experiment
  1. Built in partsThe axolotl is a set of distance functions: a lofted body with a broad flat head, a fin blade that wraps the tail, and four legs with splayed fingers. The body and each leg are meshed separately, so each leg is a closed gummy of its own that sits a little way into the body.
  2. Skins and latticesSurface nets gives – skin triangles. Underneath, the body is –, and the legs add –. Glue links tie each leg's root to the body nodes around its socket.
  3. Soft body, with musclesXPBD keeps every edge near its rest length and every tetrahedron near its rest volume. The tail sways because flank edges lengthen and shorten in a travelling wave. Startle speeds that wave up into a flick.
  4. TearingWhile you hold a leg, the solver measures how far its glue is stretched. Past a limit, the leg's particles are copied into a spare slot that is no longer glued to anything. The copy keeps simulating, and its own edges pulse for a while, so it twitches.
  5. RegrowthThe attached slot restarts as a bud at 5% size, placed and turned to match the socket. Its rest lengths, rest volumes and glue lengths are scaled up over a few seconds with a slight overshoot. The physics does the growing; the bud glows pale until it is full size.
  6. Feathered gillsSix stalks with four fronds at each joint, – in all. Each is pulled softly toward its rest pose, turned to match the head, so the gills hold their shape and still trail and flutter. They swell slightly with each breath.
  7. Sound from the physicsEvery noise is synthesized with Web Audio; there are no recordings. Grabbing is a water balloon and letting go is a plunger. Holding a leg starts a low gummy groan that drifts and opens up as the glue stretches, until it pops with a cork and a boing. Torn legs flop like a fish in time with their twitch, drops plip on the table and drum on the jelly, a slap lands with a wub, twisting jiggles it like jello, and the body wibbles as it settles. Slow motion goes in with a whoom and out with a boing.
  8. TablesThe floor is a single full-screen pass that finds where each pixel's ray meets the table. The cutting mat's grid, the marble's veins and the night table's spotlight are drawn there from noise and the pixel's own footprint, so lines stay crisp at any distance. The page's colours switch with the table.
  9. CoatingsSour sugar is a 3-D cell pattern laid on the jelly's rest shape, so the crystals stay put as it squishes. Each crystal gets its own tilted normal, so only a few catch the light at once and twinkle, and the gel under them goes cloudy. Frosted is the same idea with finer, flatter grains and a satin sheen. The ideas came from the texture library in CNC Kitchen's stlTexturizer; the code here is our own.
  10. Light through gelFour render passes per frame: shadow map, tinted floor shadow, back faces for thickness, then front faces with absorption, refraction and Fresnel. Gills use a denser, redder tint; the wild morph scatters dark speckles through the gel.
legs regrown0 solver time– ms frame rate– fps mesh build at load– ms

Stack: plain JavaScript and WGSL, no libraries. The solver runs on the CPU in typed arrays; WebGPU does skinning, the instanced legs and gills, shadows, thickness and shading.

Tip: grab a foot and pull until it pops off