Player Two

A pocket console that never shipped, and twelve players who only want to dance. Each one began as a single photograph. Live in the browser.

Role
Creator and sole developer
Status
Live
Year
2026 · live at play.wenyizhang.com
Type
Interactive · Web · Generative
Tools
TypeScript · three.js · MediaPipe · SAM 3D Body · fal

Somewhere there is a handheld that never made it to the shops: a grey shell, a small bright screen, and a cast of twelve who know only how to dance. This is that console.

Everyone has been player two at some point, the one handed the spare controller and told to wait for a turn. Here nobody waits. Pick someone, pick a move, and they dance to a tune of their own on a stage that changes when you tap it. The players are people and animals, a little blocky, and each one still very much like the photograph it came from.

Play it at play.wenyizhang.com ↗

Pick a player. Pick a move. Pick a mood.
Nobody here rehearsed.
The stage changes. They keep dancing.

From a photograph to a player

Photo
one picture of a person or an animal
↓
fal
Cut-out
BRIA RMBG 2.0
↓
fal
3D body
Meta SAM 3D Body, in the photo's camera
↓
fal
Side and back
FLUX.2, for what the photo cannot see
↓
browser
Reduce, bake, rig
MediaPipe face and pose, Rocketbox mocap
Once a player is built, everything after runs free in the browser.

A photograph only ever sees one side of anyone. The side and the back have to be imagined, and a model does the imagining. But a model can only guess at a face, and a guessed face is a stranger's, so the face always comes from the photograph. The player looks like the person, not like someone who looks like them.

The workshop

The players came out of Retro Asset Tool, a small workshop I built for turning a photograph, or a sentence, into something that could live inside an old game. It tries the plain tricks first, spinning a silhouette or folding a box, and asks a model only when those run out, with the price shown before it asks. Once a thing is made it stays in the browser, and making it again costs nothing.

Role
Creator and sole developer. The console, the pipeline and the tool behind it
Built with
TypeScript · three.js · Vite · MediaPipe · Cloudflare Pages
Models
BRIA RMBG 2.0 · Meta SAM 3D Body · FLUX.2, through fal
Motion
Microsoft Rocketbox motion capture