01 The project

A boot born from the moon, assembled from 54,000 particles.

Brief → Blender → Three.js / WebGL · co-authored with Claude Code

A real-time brand piece. Designed as a hero moment for a launch microsite - turning a 3D product model that would otherwise sit in a static library into an interactive campaign centerpiece.

Project
Real-time particle reveal
Choreographed assembly, dissolve, and a hidden interactive payoff
Context
Speculative brand brief
Self-directed concept, modeled and choreographed end to end
Stack
Blender · Three.js · GLSL
Custom shaders and post-processing, built via Claude Code
Watch

The piece, running.

One product model becomes a living brand moment, not another still render.

02 My role

Sole builder, brief to shipped piece.

I modeled the boot in Blender, designed the four-phase choreography, and wrote the custom GLSL shaders, sampling logic, and dust physics, composed through an AI build interface, with the judgment to know when its output was wrong.

03 The problem

A product render is finished the moment it loads. A brand moment has to unfold.

The asset already existed: one boot model. The brief was to turn it into something a viewer watches, then plays with, in the browser, with no plugins, no video file, no render farm. Everything on screen, from assembly to dust to reveal, is computed live from that single mesh. The piece ships as a single self-contained HTML file with no build dependencies - droppable into any brand portal, DAM component, or CMS embed as-is.

The constraint - no plugins, no video file, runs entirely in the browser - is intentional. A piece like this is designed to be dropped into a live workshop with designers and brand stakeholders: one URL, no setup, no render wait. Their reaction to timing, color, and interaction is the feedback that tunes the piece. Skeptics become collaborators once they can touch it.

04 What I did

One mesh in, four phases out, driven by shaders, not keyframes.

Sample

Mesh to particle field

Area-weighted surface sampling converts the boot into 54,000 points, so dense regions of the mesh get proportionally more particles.

Choreograph

A four-phase state machine

Dissolve in, hold, dissolve out, rest. Per-particle stagger and easing live in the vertex shader, so the GPU animates the entire field at once.

Simulate

Dust the viewer can disturb

After the dissolve, the particles settle on procedural lunar terrain. Cursor wind, spring return, and damping keep the dust physical.

Reveal

A payoff hidden in the surface

A brush-mask system tracks where dust has been swept. Trace enough of the buried mark and the swoosh and tagline surface.

05 How it was built

From a Blender model to a live GPU piece.

The boot was modeled by hand. Everything after that, the sampler, the shaders, the physics, the reveal system, was composed through Claude Code, iterated against what was actually rendering on screen.

The pipeline
01 · Author
Blender model
The boot, modeled and exported as a single mesh.
02 · AI
Claude Code
Build interface that composes and revises the system by intent.
03 · Sample
Surface sampler
Area-weighted sampling turns triangles into 54,000 particles.
04 · Animate
GLSL shaders
Per-particle easing, stagger, drift, and color, all on the GPU.
05 · Simulate
Dust physics
Wind impulse, spring return, damping over procedural terrain.
06 · Reveal
Brush mask
Coverage tracking surfaces the swoosh once enough dust moves.

The mesh is the only authored asset. Everything the viewer sees is generated from it at runtime, which is what makes the piece a workflow, not a video.

06 The result

One model, one draw call, a moment worth waiting for.

54k
Particles sampled from one mesh, animated entirely on the GPU
1
Draw call for the full particle field; one shared shader material
4
Choreographed phases: assemble, hold, dissolve, interactive rest
0
Pre-rendered frames; the whole piece runs live in the browser

Capability claims only: what the piece demonstrably does at runtime.

The same discipline as the production tools: a single source asset, data baked per element, and the shader doing the storytelling.

Pattern shared with the DNEG tooling and the Forest Tool · one system, many moments

Performance was a first-class constraint, not an afterthought. Keeping 54,000 particles interactive without a GPU budget blowout meant the entire field runs as a single draw call, all animation computed per-particle in the vertex shader on the GPU rather than on the CPU per frame. The interaction - cursor wind, spring return, reveal tracking - was deliberately kept gestural: simple enough that a first-time visitor understands it in under five seconds, responsive enough that it rewards a second pass.

Carlos M. Cruz
Creative Technologist · Technical Artist