← All Work Brian Lee.

Engineering · Graphics/3D · DesignAug–Dec 2025

Art of the Web

A semester of coursework rebuilt as one interactive Three.js world.

Overview

A portfolio that is itself a project

Art of the Web is a course about the internet as a creative and cultural medium: how the web is built, who controls it, how it shapes culture. Instead of submitting work through an LMS, the format required building and maintaining a public portfolio all semester.

So the portfolio became the project: how do you build something that feels as considered as the work it houses? The answer was a fully interactive 3D scene where each course project floats in space, clickable to reveal its details.

The scene

A Three.js scene as an interface

It's built with Three.js and Vite, not a static page but a rendered WebGL scene. Nine GLTF models (a book, clock, globe, tape, cube, and others) drift continuously across the viewport, each one a course project; clicking opens a modal with its details.

Systems

  • Custom physics: per-object velocity + angular velocity each frame, radius-based collision resolution, restitution off the viewport bounds, and a slow random drift to keep the scene alive.
  • GLTF loading: GLTFLoader auto-scales and centers each model from its bounding box; a loading screen tracks all load promises before the scene goes interactive.
  • Raycasting: mouse → normalized device coords each frame; a Raycaster detects the hovered object, which scales up on a GSAP spring; click opens the modal.
  • Lighting: ambient, directional, hemisphere, and rim lights with a PMREM environment map for accurate reflections.
  • GSAP + OrbitControls: spring-based modal, hover, and camera transitions; a freely orbitable camera with damping and distance limits.

Inside

Eight projects, each a different medium

  • F1 ASCII Animation: a Formula 1 race animated in pure CSS/HTML with ASCII characters.
  • CSS Still Life: an 800×600 still life built entirely from divs, gradients, and keyframes. No images.
  • Blue Mixtape: a multi-page music zine as a navigable site (HTML + CSS grid/flex).
  • Data Footprints: an interactive site on personal data and web tracking, in vanilla JS.
  • p5.js Clock: a generative clock where seconds, minutes, and hours each drive their own visual system.
  • Tame the Cat: a scripted browser game with a state machine and chance elements.
  • QuadTree Painter: a generative Mondrian-style painter (Canvas API) from recursive quadtree splits.
  • API Tool Pitch: a team single-page pitch for an IFTTT-linked assistive tool.

Reflection

When the container is as interesting as the content

Building the navigation as a physics scene made it more fun to make and to browse, and it taught me a lot about performance budgeting on the web, where one unoptimized GLTF can tank the frame rate.

Outcome

9floating 3D objects
8course projects
1live Three.js world