Memory

Scroll and a brain made of small pyramids turns, bursts into fragments, and re-forms as a lightbulb, then a globe, then the letter M, with the copy rising into focus as each shape arrives. Move the cursor and the particles near it scatter. Memory is a fictional team-knowledge product with a closing mark generated in code.

  • three.js
  • webgl
  • javascript
  • html5
Format
Interactive experience
Platform
Desktop + Mobile
Engine
three.js + WebGL
Type
Concept

How It Works

1
About 3s

Assemble

The particles start scattered and fly in to form the brain, each on its own delay, while the headline lines rise out of their masks and the rest of the hero fades up behind them.
2
Every frame

Scroll

The scroll position becomes one progress value that eases toward its target every frame, and that value drives the rotation, the offset, the burst and which shape the particles are heading for. Every beat is a function of scroll.
3
Between beats

Morph

A GPU simulation pulls each particle toward its target with a spring, and particles leave in a ranked order instead of all at once, so each new shape arrives in a sweep and the closing M builds from the top down.
4
Reduced motion

Rest

With reduced motion on, text fades in without rising or blurring, buttons drop their press, and the scene keeps following the scroll, which is the only way through the story.

Engineering

  • Positions live in a texture

    Every shape is a set of points in one floating-point texture, one shape per quadrant. Two render passes, one for position and one for the spring's velocity, swap between frame buffers on the GPU, so ten thousand particles move with no position update on the CPU. A phone runs seven thousand.
  • A mark generated in code

    The closing M comes from a script that samples points on the faces and walls of an extruded letter and writes them into the position texture with a fixed seed, so every rebuild produces the same file. Each particle already owns a color, so the script pairs cool particles with the top left of the letter and warm ones with the bottom right, which gives the mark its gradient without a new color texture.
  • Text that waits for the scene

    Headlines rise out of per-line masks and the large lines come into focus word by word, each played once when its block is on screen. The closing line holds back until its section fills the view, so it lands as the particles finish the M. The reveals run in their own script, apart from the WebGL module, so the copy never waits on the canvas.

More projects

Get in touch

Working end to end across design, creative, and engineering, where creativity, collaboration, and ownership build toward the company's goals.

jeffkliu@gmail.com