Creative technology

Making this site

Five 3D scenes rendered in Blender, scrubbed by scroll, with live web content pinned onto surfaces inside the renders, all moving to original music.

Role
Everything: 3D, music, code, design
Year
2026
Status
Live
Built
Blender (Cycles, Python) · Vite · three.js · FFmpeg

The brief

A portfolio that proves the skills instead of listing them: 3D, real-time graphics, audio-reactive systems and automation, on a page that still loads fast on a phone.

The pipeline

  1. 1Blender scenes
  2. 2Rendered frames and tracked surfaces
  3. 3Size budget and quality check
  4. 4Scroll-scrubbed canvas
  5. 5Web content pinned into the render

The scenes

Archive: each spread is live HTML pinned to the paper.
Photography opener: an original SLR design.
Gaming desk with two monitors (final)Gaming desk with two monitors (clay)ClayFinal
Desk, clay and final. The screens light the room in the colours of the games shown on them.
Pearl-like sculpture
The hero sculpture: one shader, driven by the music.

What's going on under the page

  • Each chapter is a Cycles camera move rendered to frames, compressed to a per-scene size budget, with a quality check so compression never shows.
  • Blender exports where things are in every frame: monitor corners, book pages, lit windows. The site pins real video and HTML onto them, so the gameplay on the monitors and the archive in the book can change without re-rendering.
  • The music is original. Each track is analysed offline into beats and frequency bands, so the sculpture and the island's windows move in time even with the sound off.

Decisions and trade-offs

  • Image frames instead of video for scrubbing: exact and reversible on phones, where video seeking is slow.
  • Baked audio data instead of a live microphone: in sync while muted, no permission prompts, no CPU cost.
  • Chapters load only after the visitor scrolls, every 4th frame first so scrubbing works immediately.
  • Reduced-motion and data-saver visitors get still images, no pinned scrolling and no WebGL.
Next projectE.V.E. & The HavenAI agent system