← Back to FORMA

Build guide · Experiment 09

How FORMA was built.

One session · three polish passes · six sculptures · zero image files

The premise

FORMA is a fictional gallery of generative sculpture. The brief was to show the heavy end of the graphics range: real 3D, physically based materials, and reflections that move. Everything on the stage is live WebGL through three.js. There are no rendered images and no video, just geometry, light, and a baked studio environment.

Sculpture as equation

Each of the six objects is a different way of turning math into a body you can walk around.

// Aizawa attractor → a single sculptural ribbon
let x=0.1,y=0,z=0; const pts=[];
for (let i=0;i<5200;i++){
  const dx=(z-0.7)*x - 3.5*y;
  const dy=3.5*x + (z-0.7)*y;
  const dz=0.6 + 0.95*z - z*z*z/3 - (x*x+y*y)*(1+0.25*z) + 0.1*z*x*x*x;
  x+=dx*0.008; y+=dy*0.008; z+=dz*0.008;
  if (i>300) pts.push(new THREE.Vector3(x*1.5, z*1.5-1.2, y*1.5));
}
const geo = new THREE.TubeGeometry(new THREE.CatmullRomCurve3(pts), 3000, 0.028, 14);

Four casts, one form

The same mesh can be recast in chrome, bronze, obsidian, or marble from the plaque. Each is a MeshPhysicalMaterial tuned by metalness, roughness, and clearcoat. Because the material is swapped live, one geometry becomes four completely different objects. Marble adds a sheen layer; obsidian adds a clearcoat so it stays glassy even while nearly black.

A room that does not exist

The reflections are the whole trick. There is no HDR file to download: a RoomEnvironment is rendered once into a PMREMGenerator, producing a pre-filtered environment map that every surface samples. With ACESFilmicToneMapping and a spotlight key, a rim light, and a warm fill, the chrome trefoil ends up reflecting a studio that was never modelled in full.

Making it feel like a gallery

Three passes


Live site: buloy.space/x/forma · All experiments: buloy.space/x