Latent Exploration — Header

Generative Art · Data Visualization · Front-End

Latent
Exploration

A genealogy of recursively generated media.

I started with one generated clip, created descendants from it, then repeated the process until hundreds of outputs formed a branching lineage. Instead of presenting them as a gallery, I built an interactive family tree for tracing ancestry, divergence, and the creative paths between them.

  • Role
    Concept · Generation · Build · Visual direction
  • Built with
    D3.js · Vanilla HTML/CSS/JS · Python · Midjourney
  • Scale
    2 origins · 430+ descendants · one explorable lineage
  • Status
    Live · and quietly still growing

Two origins. 430+ descendants. Every edge records an actual parent-child relationship.

Latent Exploration — The Premise

The premise

You generate a video. └─ Then four descendants from it. └─ Then those become parents too.

I started with one generated video, chose outputs from it, and fed those back into the next round of generation. Pretty quickly, the clips stopped feeling like isolated artifacts. They had parents, siblings, cousins, and descendants.

Once there were hundreds of them, the interesting problem was no longer generation. It was representation: how do you make ancestry, divergence, and evolution visible?

Instead of building a gallery of final outputs, I built a family tree — a way to see not just what was generated, but the paths that produced it.

There is still no plot. There is still no camera. The folder is still enormous.

Latent Exploration — Stats
2
Origin lineages
Two independent starting points, each growing into its own cascade.
433
Descendant clips
Every clip stays linked to the exact parent that produced it.
30+
Days of branching
Mostly around 2am. The recommended dosage was zero.
0
Cameras involved
Every branch is generated. It’s Midjourney all the way down.
Latent Exploration — A Taste of the Chaos

A taste of the chaos

Same parent.
Four possible futures.

These four clips all came from the exact same source. They’re not four unrelated outputs — they’re siblings, sharing one parent and immediately diverging into four different visual directions. This is the basic unit of the whole project: one moment becoming several possible trajectories.

One branch point, recursively repeated
Recursive video lineage One large origin node branches into four child clips. Those children become parents and branch into further descendants. PARENT SIBLINGS DESCENDANTS …and then they branch again. And again. You see the problem.

One branch point, recursively repeated.

The diagram is abstract. The nodes aren’t. Here’s what those first four child nodes actually contain.

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

How the tree works

The whole genealogy is hiding
in the filenames.

The family tree isn’t something I drew afterward. Each clip’s filename is its ancestral path — a breadcrumb trail from the origin through every generation that produced it.

One filename = one lineage
0 _ 1 _ 2 _ 1 _ 1 .mp4
origin 0 child 1 child 2 child 1 child 1

Read left to right, and the path leads all the way back to the origin.

The filesystem isn’t just storing the project. It describes the genealogy.

Latent Exploration — Color From the Clip

Color from the clip itself

Color is another layer of data. Each node gets its ring and glow from a dominant color extracted from the clip it represents, so the map’s palette emerges from the media itself.

For legibility: saturation and brightness are boosted before display, so the hue comes from the clip while the intensity is adjusted for the dark interface.

Latent Exploration — Ghost Nodes

Ghost nodes

Sometimes the lineage has a missing ancestor: descendants exist, but the clip they branched from does not. Instead of breaking the family tree, the build inserts a virtual node to preserve the relationship.

virtual ancestor · no clip
Latent Exploration — Two Ways to Get Lost

Two ways to get lost

Flatten the lineage.
Or fall into it.

One toggle switches between two views of the exact same genealogy. In 2D, the 433-node tree becomes a radial map that makes branching relationships easy to scan. Tilt it into 3D, and those same generations recede into depth.

The data never changes — only the way you perceive distance, branching, and generational depth. In either view, hover a node and its path back to the origin lights up.

At the center

Every lineage starts somewhere.

The two large glowing nodes are the original images that started each cascade. Every other clip descends from one of them. Click either origin to reveal The Original Image itself.

2 origins · 433 descendants · many possible futures

Origin image 0: Where the first cascade began
Origin image 1: Where the second one did
Latent Exploration — The Artifact Is the Process

The artifact is the process

The videos are outputs.
The lineage is the artifact.

Generative work is often presented as a gallery: here are the images, here are the videos, here are the favorites. But after hundreds of recursive generations, I became less interested in any one finished clip.

I became interested in the paths between them — how one visual state became another, how siblings diverged, which traits persisted, and how repeated choices accumulated into long trajectories. The model generated the possibilities; I chose which branches kept growing.

Generation is automated. Selection is not.

The map doesn’t just show what was generated. It shows how one possibility became another.

Latent Exploration — Under the Hood

Under the hood

A static site that refuses to be complicated.

The interface stays lightweight because the structure already exists in the media. The filesystem stores the clips, the filenames describe their ancestry, and the build turns that lineage into something the browser can explore.

Source
01
The filesystem is the genealogy.
Every clip lives under its origin, and its filename stores the full ancestral path from root to descendant. There’s no separate relationship database to maintain.
0_3_2_1_1.mp4
Build
02
Python reconstructs the lineage.
One script parses those filenames, rebuilds every parent-child relationship, extracts a dominant color from each clip, and writes the complete graph into a single data file.
ffmpeg + Pillow tree.json
Live
03
One static page makes it explorable.
D3 reads the generated data and draws the interactive map in the browser. The site is plain HTML, CSS, and JavaScript hosted on GitHub Pages: no database, no application server, no runtime backend.
D3.js index.html GitHub Pages

Add a properly named clip, rerun the build, and the genealogy grows with it.

Latent Exploration — Concept Art Gallery

Concept art

The lineage, dreamed as a galaxy.

After spending long enough thinking about this project as a genealogy, I wanted to see what the same structure might feel like as a place rather than a diagram. The branching tree became a field of light: two origins at its center, descendants radiating outward, and individual paths disappearing deep into the larger system.

Not another data view — a visual metaphor for the same structure. And yes: Midjourney, once again.

Latent Exploration — In Conclusion

In conclusion

I stopped seeing outputs as isolated artifacts. I started seeing them as trajectories.

The interesting object wasn’t any one clip. It was the lineage.

A sequence of choices, divergences, inherited visual traits, and possible futures. Latent Exploration became an experiment in making that hidden structure visible and navigable — so the path between outputs could become as meaningful as the outputs themselves.

Anyway

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