Blockwork

After Igloo Inc

Studied 2026-08-282D canvas, real 3D block positions, painter sorted. No libraries.

An igloo is a sphere somebody had to build out of blocks, and that constraint is the whole read. This is the construction taken off the ice and put on a plain sphere: courses of blocks laid on the surface, one shared breath running through all of them, a local response to the pointer, and the points and links drawn only where the pointer has been. Nothing on this page is lit and nothing is refracted. Drag any figure to turn it.

1 · Courses

A sphere cut into blocks the way masonry is: horizontal courses, each one a ring of quads. The count per course has to follow the cosine of the latitude, or every block near a pole becomes a sliver. Turn the cosine off and watch the poles fail.

Read this: with the cosine off, the block count is constant and the poles crowd into slivers while the equator gaps open. With break joints off, every course starts at the same longitude and a seam runs from pole to pole.

2 · Breath

The breathing is one field, not per-block animation: a travelling wave in latitude that every block samples, plus a small phase of its own taken from its identity. A uniform pulse and a travelling wave are one term apart and they read as completely different things.

Read this: at wave 0 the whole sphere scales together and it reads as a keyframe on a transform. Any wavelength at all and the same amplitude reads as an inhale, because the poles and the equator stop agreeing.

3 · The cursor is a direction

Blocks respond to the angle between their own normal and the pointer direction on the sphere, not to their distance from the pointer on screen. The wrong version is one checkbox away and it wakes the silhouette, where the cursor is nowhere near in three dimensions.

Read this: low damping is a material and high damping is a slider. Tick measure on screen and the response smears around the rim, because two blocks a pixel apart there are half the sphere apart in fact.

4 · Points and links

The lattice is drawn only on the blocks the cursor has woken, and a link exists only while two of them are near enough. Reach and neighbour cap look like the same control and are not: reach adds length, the cap adds density, and only one of them destroys the object.

Read this: push the cap to 10 and the field fills in solid — the lattice stops sitting on a sphere and becomes a patch of noise. Push reach instead and you get long wrong lines but the object survives. Link through the body drops the hemisphere test, and the far side starts wiring itself to the near side.
After Igloo Inc, built by Abeto with Bureaux — a WebGL site whose identity is procedurally grown ice and refraction. None of that is reproduced here. What is taken is the geometry underneath the glass: an object assembled from blocks that breathes, answers the pointer, and shows its structure where you touch it. The blocks here are flat fills over a painter sort, and the depth read costs one alpha value.

What it actually does

  • Blocks per course has to follow the cosine of the latitude or the poles crowd into slivers. It is the same reason a real igloo’s courses get shorter as they close, and it is one line.
  • Each course rotates its joints by a fraction of a block so no seam runs pole to pole. The offset is worth a hash rather than a constant: a constant half-block offset builds a visible spiral instead of a bond.
  • The breath is one field, not per-block animation. A single travelling wave in latitude, sampled by every block, plus a per-block phase from its identity hash. A uniform pulse reads as a scale keyframe; a wave reads as an inhale.
  • The pointer is a direction, not a screen position. Response falls off with the angle between a block’s normal and the cursor direction on the sphere, so the far side stays asleep and nothing reacts through the body of the object.
  • The push is springy rather than eased, so a block overshoots slightly on the way back. The surface settles rather than arriving, and that is the whole difference between a material and a value.
  • Back-facing blocks drawn at low alpha before the front ones give translucency for free once a painter sort is already there. One number, and it is the entire ice read.
  • Points sit on the block corners rather than at the centres, because corners are shared between neighbours and the eye reads them as a lattice lying on the surface rather than as labels on faces.
  • The link test is on live distance, so connections form and break as the sphere turns under the cursor. Capping neighbours keeps it a lattice instead of a mesh.

What the rebuild taught

  • The neighbour cap matters more than the reach. Raising the reach adds long links that read as noise; raising the cap fills the field in solid and loses the object underneath it. Cap first, then tune reach. This is the same conclusion the dust links in Axis Mundi arrived at from a completely different scene.
  • Drawing the graph only where the pointer is doing something is the entire trick. A permanent wireframe is decoration; the same wireframe appearing under the cursor is a response, and it is the same geometry either way.
  • The response has to be measured in the object’s own frame. Screen distance to the pointer looks right on the front of the sphere and wrong everywhere else, because it wakes blocks on the silhouette that the cursor is nowhere near in three dimensions.
  • A sphere is the honest test case, not the easy one. An igloo has a floor, a door and a crown, all of which hide the places tessellation goes wrong. A closed sphere shows every seam and both poles at once.
  • A painter sort and one alpha number bought the depth read here and no lighting model was needed, which is the same result the orbital field study reached from the opposite direction.

Rebuild

Four figures on one sphere. The courses, with the cosine rule and the joint offset both switchable so each failure is visible on its own. The breath, uniform against travelling. The cursor field, with the falloff and the spring exposed. And the graph, with reach and neighbour cap on separate sliders, because they do not do the same thing.

Primitives

ProjectionReal 3D positions flattened by an explicit camera. The source of every honest 2.5D read.
Painter sortExplicit far-to-near draw order. Replaces a depth buffer with one sort per frame.
Depth cueAlpha, scale or weight standing in for lighting. Cheap, flat, and more legible than shading.
Pointer gazeContinuous, saturating response to pointer position rather than discrete hover states.
Proximity graphLinks drawn between things that are near each other right now, so connections form and break on live distance. The neighbour cap is the design: uncapped it stops reading as objects and starts reading as a hairball.
SpringDamped follow. Nothing snaps, and stiffness/damping carry most of the perceived personality.
Flow fieldOne continuous field that everything samples, so unrelated objects agree about the world for free.

The work it is after

www.igloo.inc