Tombstone
SliceEm
2003 โ 2004 ยท age 21โ22
What it was
A 3D modelling tool built on one idea: a body is a stack of 2D slices. In a C# Windows Forms editor, Jeff drew circles and polygons on planes at different heights, and an OpenGL window stitched neighbouring outlines together with quad strips to make a mesh. Each slice object published its own commands, so a polygon could copy, join edges, split edges, or grow a new branch from a run of selected vertices, which is how an arm came off a torso. The lofter paired outlines on adjacent planes by nearest centre, and a region number, typed as digits over the selection, overrode the guess when two arms crossed. A document was the object graph itself, saved with .NET's SOAP formatter. It ran as a working modelling toy, with Undo and Redo on the menu and never enabled.
Wins, for the age
- At twenty-one, Jeff solved a correspondence problem by changing coordinates: both outlines map to normalized arc length, their vertex parameters are merged, and each is sampled at every one, so the strip never skips an edge. The core is about 150 lines and still worth lifting.
- Added a mark vertex that decides where each strip starts, the fix for strips that twist between slices, found without anyone pointing at it.
- Admitted the algorithm could not always guess and gave the human an override. Tagging fifty polygons was fifty keypresses.
- Built a custom canvas control with grid, zoom from 10% to 400%, rubber-band selection and multi-select, on a framework that did not yet have generics.
What it taught
- Correspondence between shapes needs a parameterization, not vertex indices. That habit of reaching for a better coordinate system stuck.
- Pairing needs a human override. The tool got more useful the moment it stopped pretending to be clever.
- Keeping old code in a scratch text file is not version control, and this ape did not yet have any on this machine.
- Honest bugs: the split-off safety check compared a polygon with itself and so never fired, and a floating-point overshoot could drop a stray vertex at the centre of the world.
Genealogy
Ancestors: none on record. The modeller arrived without a parent. Descendants: Cauldron v1: the mesh work moved into a real engine and its tool pipeline.
Epitaph
Here lies SliceEm, which could turn a stack of outlines into a body, and kept the outlines because the body never had anywhere to go.