Latent Exploration — Header

Generative Art · Data Visualization · Front-End

Latent
Exploration

Click a circle, watch a tiny video, question your choices.

A radial-tree viewer for a recursive Midjourney video exploration — hundreds of clips, each one a decision about what should happen next, arranged as a map you can fall into.

  • Role
    Concept · Generation · Build · Visual direction
  • Built with
    D3.js · Vanilla HTML/CSS/JS · Python · Midjourney
  • Status
    Live · and quietly still growing

Two origins at the center, 430+ children fanning out. Click any node and its path back to the origin lights up.

Latent Exploration — The Premise

The premise

You generate a video. └─Then four more from it. └─Then you don’t stop.

I sat down and generated a video, then generated four more videos from that one, then kept going — recursively, compulsively, at 2am, for over a month — until my folder of mp4s achieved sentience and had to be given a name, a build script, and a glowing circle to call home. This is the map of that decision tree — mine.

Every clip is a branch point: a choice about what should happen next, and every choice spawned more choices. There is no plot. There is no camera. There is only my folder, and the folder is enormous.

Latent Exploration — Stats
2
Origin trees
Two independent explorations, laid out as one graph.
433
Child nodes
Off two origins, and there was no natural stopping point.
30+
Days, mostly 2am
The recommended dosage was zero.
0
Cameras involved
There was never a camera. It’s Midjourney all the way down.
Latent Exploration — A Taste of the Chaos

A taste of the chaos

The four videos that started it all.

Literally the first fork off the origin node, before things spiraled. Same parent, four different futures. Consider this a warning label — there are 429 more of these.

Branch 1
Branch 2
Branch 3
Branch 4
Latent Exploration — How the Tree Works

How the tree works

The whole structure is hiding
in the filenames.

No database. No graph editor. Each clip’s filename is its own address — a breadcrumb trail from the origin to exactly where it sits in the tree. A Python script reads the breadcrumbs and rebuilds the entire graph from scratch.

0_1_2_1_1.mp4
from origin 0 take branch 1 then 2 then 1 then 1 arrive · question nothing

build_tree.py reads the trail, writes tree.json, and hands the whole thing to D3.

Latent Exploration — Color From the Clip

Color from the clip itself

Seven real nodes, pulled straight from the tree. Each ring and glow is the color the build extracted from that clip — no palette, no hand-picking. Across all 433, the map turns into a spectrum.

Latent Exploration — Ghost Nodes in the Wild

Ghost nodes, in the wild

Here’s one in the actual graph. Every solid ring is a real clip; the lone dashed circle in the middle is a ghost — a branch point something forked from, whose own clip never made it in. The script slips in a virtual placeholder so the two sides stay connected instead of drifting apart.

virtual node · no clip, just structure
Latent Exploration — Two Ways to Get Lost

Two ways to get lost

Flatten the whole tree. Or fall into it.

One toggle. The same 433-node graph, laid out as a clean 2D radial map or tilted into 3D perspective so the branches recede into depth. Either way, hover a node and its path home lights up.

Latent Exploration — The Originals

The originals

Click the big glowing one, and you get The Original Image.

Presented with the reverence of a museum placard — the single frame each cascade grew out of. Two origins, two starting points, everything else downstream of these.

Origin image 0: Where the first cascade begins
Origin image 1: Where the second one did
Latent Exploration — Midjourney All the Way Down

No camera. No human hand. It’s Midjourney all the way down.

Every image · Every video · All 430+ branches · Root to leaf

Latent Exploration — Under the Hood

Under the hood

A static site that refuses to be complicated.

Source
01
Organized folders
Every clip lives in a folder by origin, its filename the whole path from root to leaf. Nothing else to maintain.
0_3_2_1_1.mp4
Build
02
build.py reads it all
One script turns the filenames into the tree, pulls a dominant color from each clip, and merges everything into a single data file.
ffmpeg + Pillowtree.json
Live
03
One page, on GitHub Pages
A single index.html (inline CSS/JS, D3 from a CDN) loads the data and draws the map. Push, and it’s live: zero build step.
index.htmlGitHub Pages
Latent Exploration — Under the Hood

Under the hood

A static site that refuses to be complicated.

Source
01
Organized folders
Every clip lives in a folder by origin, its filename the whole path from root to leaf. Nothing else to maintain.
0_3_2_1_1.mp4
Build
02
build.py reads it all
One script turns the filenames into the tree, pulls a dominant color from each clip, and merges everything into a single data file.
ffmpeg + Pillowtree.json
Live
03
One page, on GitHub Pages
A single index.html (inline CSS/JS, D3 from a CDN) loads the data and draws the map. Push, and it’s live: zero build step.
index.htmlGitHub Pages
Latent Exploration — Concept Art Gallery

Concept art

The tree, dreamed as a galaxy.

The project is already Midjourney all the way down, so it felt only fair to send it back through once more. This time not as a diagram but as a place: two origins blooming into a galaxy of branching light, one path traced from root to leaf.

Latent Exploration — In Conclusion

In conclusion

Go click some circles. Then, ideally, go outside.