HELIODON is one of 25 sites built by Formwork. The metal object looks expensively lit — but there are no light probes or HDRIs, just a room three.js builds in memory.
An industrial-design studio should show a real object, turning slowly, catching light like the real thing would on a bench. So the hero is a machined titanium form that rotates as you scroll and leans toward your cursor.
RoomEnvironment addon, via import-map.MeshStandardMaterial (metalness 1, low roughness).Convincing metal needs something to reflect. Instead of loading a big environment image, three.js
ships a procedural RoomEnvironment — a tiny scene of glowing panels. We render it
once into a pre-filtered cube map with PMREMGenerator and set it as the scene's
environment; every metal surface then samples it for reflections, for free:
const pmrem = new THREE.PMREMGenerator(renderer);
scene.environment = pmrem.fromScene(new RoomEnvironment(), 0.04).texture;
const mat = new THREE.MeshStandardMaterial({ metalness: 1, roughness: 0.32 });
ACES filmic tone-mapping keeps the bright highlights from clipping, so the titanium rolls off to white the way real metal does. Two soft directional lights (one warm, one cool) add edge definition.
scrollY feeds straight into the object's Y rotation, so the page scroll is the turntable.git init -b main && git add -A && git commit -m "ship"
gh repo create formwork-heliodon --public --source=. --push
gh api --method POST /repos/OWNER/formwork-heliodon/pages \
-f 'source[branch]=main' -f 'source[path]=/'
One material, one procedural room, one scroll-driven rotation — and a slab of metal that behaves like the real thing.