POINTS

curve-first 3D modeling, for beginners

9-bit

points — a curve-first 3D modeling room for beginning design students, with three complexity levels that grow with you. The next-gen line of ALYUS — a museum room next door — with modern math under period chrome.

The web version runs in any modern browser — no install, no account, no sign-in. Best on a laptop, imperfect on a phone. Drag the wet-cyan anchors to reshape the profile; the 3D view rebuilds the surface live. It also runs natively on a 25-year-old Mac — see the backports below.

network operation  ·  auto-orbit  ·  exported from the app

Points is a teaching tool. A student draws a single Bézier curve in the left view and watches a surface emerge in the right view — revolved, extruded, swept, lofted, or built as a curve network, depending on which operation is set. The 3D view auto-orbits so the user never has to learn pan / orbit / dolly to see their form, though a click-and-drag tilts the camera manually when they want a different angle.

The curve and its relationship to a procedural form is the dynamic. Everything else recedes — the dithered field behind it, the period-amber handles, the workstation-green chrome — so the wet cyan-and-magenta line in the middle of the canvas is the only place attention has to go. That is also the pedagogy: a curve is enough.

The math is cubic Bézier — the same pen-tool curve any design student already touches in Illustrator or Figma. No NURBS, no knots, no weights. Add anchors with + PT, remove them with − PT, drag handles to shape, switch the operation, watch the surface rebuild. When it looks right, export the result as a real quad-mesh OBJ.

five operations

Each operation takes one or more Bézier curves and turns them into a quad surface — a uniform u,v grid that exports as real quads, not triangulated. Any curve can be made periodic (closed into a loop) with one click; cap emission auto-suppresses on the closed boundaries.

  • revolveSweeps the profile around the vertical (Y) axis. Beginner-magical — draw half a vase and watch it spin into a vase. Periodic profile makes a torus-class surface.
  • extrudePulls the profile straight along the depth axis (Z). The simplest 2D → 3D move and a familiar mental model. Periodic profile makes a closed tube.
  • sweepRuns a cross-section along a rail. One rail is the classic sweep; add a second and the section stretches between the two (Sweep2), and more sections blend down the length — thin to fat to thin. Sections and rails each get tabs with + / − to add and remove.
  • loftInterpolates through a list of cross-sections across Z. Two profiles is the classic A→B loft; add more and the surface flows through each in turn. Anchor counts can differ — they're sampled to a common parameterization first.
  • networkA curve network — several cross-section curves blended across one or more rail paths, the way Rhino's NetworkSrf builds a surface, here in spirit and from flat-drawn curves. Add curves in either direction, then sculpt the result with CARDINAL.

Every operation supports live thicken: a slider that gives the surface material thickness, offset along the true surface normal at every vertex so the wall stays perpendicular, with the open ends automatically capped. A second smooth / fillet slider relaxes the mesh — a global fillet you can dial to round sharp edges. The result is a closed shell ready for downstream subdivision modeling or 3D printing.

Five worked presets — Face, Banana, Cabriole Leg, Boat Hull, Shell — span all of these. Each starts as straight lines and animates into its form, so a student watches the construction happen before touching anything.

Anchors come in two flavors: SMOOTH (antiparallel tangent handles, the curve flows through them) and CORNER (zero handles, the curve cusps). Two tool buttons toggle a clicked anchor to either state — useful especially on PERIODIC join endpoints, which start as a straight chord and want to be smoothed.

Export uses real quad faces (f a b c d), not split triangles. Filenames roll from a wordbank that brackets the era this app is in dialogue with — new wave electronics on one side (modular, oscillator, vocoder, telex, lacquer, mirrorball, vinyl, polyester) and observational astronomy on the other (syzygy, parallax, perihelion, ephemeris, pulsar, andromeda, vega, betelgeuse, chondrite, planetoid, with named observers messier, herschel, hubble, kepler, cassini, schiaparelli).

datatrace · five measured curves

The Datatrace menu loads five real-world data sources directly into the active curve, each pre-baked with smooth Catmull-Rom-to-Bézier handles and immediately editable:

  • EKG · one heartbeatLead II PQRST waveform, 16 anchors. Open. The shape every designer recognizes.
  • Keeling Curve · 2024Mauna Loa monthly CO₂ from NOAA, 12 anchors. Open. The climate sawtooth made geometry.
  • Analemma · one yearSolar-noon position over a year, 12 anchors. Closed figure-8. Becomes a beautiful asymmetric vase under revolve.
  • F-hole · violin topStylized after Stradivari 1716 ("Messiah") templates, 16 anchors. Closed. Italian baroque curve, the literal hole shape master luthiers still draft by hand.
  • Humpback moan · one callSingle call envelope from Payne & McVay, Songs of Humpback Whales, Science 1971. 13 anchors. Open.
Close-up of the EKG datatrace loaded in the curve editor — wet cyan anchors trace the PQRST waveform, period-amber handles, dim-blue axis line down the middle
EKG · the 9th bit, made of phosphor

five ways to look at it

The 3D view has five render modes, each addressing a different question about the surface:

  • shadedSolid phong + a dim quad-edge overlay. Default. The form, lit.
  • glossyA reflective material under a phosphor studio environment — read the highlights running over the surface the way you'd judge a clay maquette.
  • wireQuad-edge wireframe only. The actual quad topology, no triangulation.
  • triTriangulated wireframe with diagonals. Shows how the GPU splits each quad into two tris under the hood — useful pedagogy.
  • zebraDiagonal phosphor stripes via a custom shader. The 1990s-Alias "zebra analysis" tool: surface continuity reads at a glance. Stripes wrap smoothly across G1 transitions and break across cusps.

CARDINAL is the on-surface sculpt — a toggle now, not a sixth mode. Switch it on over any render and a control grid of wet cyan-and-magenta dots settles on the surface, on a U × V grid independent of the mesh resolution. Drag a dot and the surface pushes or pulls along its local normal with Gaussian falloff into the neighbors; shift-click to gather several and move them together. Two panel sliders set the count, and the sculpt carries across a count change rather than resetting.

Zebra render mode on a deformed surface — diagonal phosphor-green stripes wrap around a bulge in the vase, the dark bands subtly tinted by surface facing so depth reads even inside the dark stripe
ZEBRA · continuity reading
Full app view — EKG datatrace loaded on the left, revolved EKG on the right with cardinal-point grid visible on the surface
EKG · revolve · cardinal grid on
Wireframe render mode showing the underlying quad mesh of the same revolved EKG surface
WIRE · the actual quad mesh

animate · keyframes + video

Alias/1 was an animation system as much as it was a modeler — the Animate menu carries that history forward. Set keyframes that capture the full editable state (curves, periodic flags, cardinal sculpt), then play to cycle-loop between them with cosine-eased interpolation. Switching operation auto-clears keys; mismatched topology toasts an error rather than guessing.

Export Video hands you 3 s / 10 s / full-cycle .mp4 files (H.264, QuickTime-compatible without conversion; WebM fallback on older browsers). The 1985 equivalent was a physical film recorder writing 35 mm — same gesture, different century.

points-astrometry-revolve-anim.mp4 · one cycle, exported from the app
points-vega-network-anim.mp4 · the network operation · exported from the app

NDZ · the other paradigm

Two ways to author live in the same room now. CURVE is everything above — draw the profile, the surface follows. NDZ is a node-and-wire graph that builds the same geometry the other way: you wire modules together — profile into revolve into divide into attractor into instance — and the whole chain re-settles the instant you change any value. No run button. The CURVE | NDZ switch (top-right, or View ▸ NDZ) moves between them. It's the same kernel underneath — a Revolve node is the surface builder, and the OBJ that leaves is the same real quads.

The NDZ node graph in Points — a chain of nodes (profile, revolve, divide surface, attractor, instance) on the left wired together, a stats readout showing 5 nodes, 6 wires, 9216 quads, 364 instances, and on the right a glossy revolved vase form with hundreds of black beaded shapes standing off its surface in columns, sized and placed by the attractor field
NDZ · a revolve, divided and populated off an attractor field · 9,216 quads, 364 instances

The graph isn't just a second way to draw the same thing — it stages two ideas the direct tools can't. The field: an Attractor is a thing in space with a visible reach; every divided point reads its own value off it, and every instance is sized and coloured by what it read. Drag the attractor and the whole population breathes. Vectors come free: Divide hands back the surface normal at every point, so shapes can stand off the surface without anyone building a vector by hand — and an Aim node swings the whole field to face a target.

The palette reads top-to-bottom: construct above (Profile, Trace, Revolve, Extrude, Loft, Sweep), extract below (Divide, Attractor, Series, Remap, Aim, Instance). Drag a header to move a node, drag a port into a port to wire, click a wire to cut. Click any node and the geometry it controls lights up cyan in the 3D view. It's a sibling to the node room in Classicery, the suite next door — the same node-and-wire idea, here driving real surfaces.

the 9-bit conceit

points is dressed in 8-bit chrome — phosphor-dark workstation palette, bitmap typography, dithered shading, no gradients. Period-correct to within a half-decade of the IRIS workstations that ran the original Alias/1 in 1985. The 8 bits are the museum.

The 9th bit is the live curve. While the student is editing it, the curve glows full-saturation cyan-and-magenta against the period palette, with anchors that pulse wet under a halo. It is the only place the present day shows up on screen.

The conceit is a pedagogical move as much as an aesthetic one. The curve is the thing the student is supposed to think about. So the chrome recedes into period dither, and the curve glows wet cyan and magenta. The student's attention has nowhere else to go.

the backports · points on a 25-year-old mac

The 9-bit conceit wanted to be more than a costume, so points was ported backward — off the web entirely, onto the hardware the look is borrowed from. It now runs as a native application on a clamshell iBook G3: once under Mac OS X 10.4 Tiger, and once in the Classic Mac OS underneath it. Same curve-first idea, rebuilt for machines a quarter-century old.

points running natively on Mac OS X Tiger on a PowerPC iBook — a curve editor on the left, a green-wireframe revolve surface in an OpenGL viewport on the right, with the Tiger Aqua menu bar and Dock visible
Mac OS X Tiger · PowerPC · Cocoa + OpenGL, drawn on the GPU
points running as a native Classic Mac OS application — a curve editor, a wireframe revolve, and a floating Controls palette with Revolve / Extrude radio buttons, drawn in Color QuickDraw
Classic Mac OS · Color QuickDraw · floating Controls palette

The Tiger build is a real native app — a Cocoa window around an OpenGL viewport, so the surface is drawn on the actual GPU instead of interpreted in software. The Classic build is a true Toolbox application — no browser, no web view — with a floating Controls palette and menu-driven everything, the way a 1999 program was meant to be driven. Neither is something you'd download; they are built for hardware most people no longer have. They exist to prove the curve survives the trip back.

the rooms next door

points sits between two adjacent rooms in the suite.

ALYUS · the museum

The Classicery clean-room recreation of Alias/1, a 1985 3D surfacing program that shipped on the IRIS 2400. Cardinal-spline profile editor, four-viewport canvas, paint + animation + render + film-recorder all in one suite. points borrows the chrome and the curve-first instinct; ALYUS keeps the period UI faithful.

visit ALYUS →

Plug Innery · the NURBS continuation

A small suite of plugins for Rhino — the contemporary descendant of the Alias surfacing approach. Where points teaches with cubic Bézier and a single browser tab, Plug Innery does production NURBS work for the practitioner who already knows the math. Different generation, same curve.

visit Plug Innery →

A museum, a teaching room, a working room. The student walks the hallway between them.