- Eric Vegas
- 2026-08-01
- 2026-09-23
The problem
A collection only works in a room. Photographs of a room are not the room: scale disappears, the sequence the work was hung in disappears, and so does the part where you choose what to walk up to. The usual substitute is a grid of thumbnails, which answers none of that.
Put the visitor inside the space, on whatever device they already have, with nothing to install.
What I built
A walkable exhibition built with three.js and WebGL: a room with work hung at eye level, wall labels beside each piece, a title wall, and a doorway through to a second room. It runs in a browser on a phone. It is served from this site at /gallery.
How it works
The room is real geometry rather than a panorama, so a visitor moves through it instead of pivoting inside a photograph. Everything is keyed off one exhibition description, so hanging a different show is a data change rather than a rebuild.
My role
Eric built the gallery engine, the room, the hanging system and the interaction. The exhibition currently running in it is his own demonstration show, and it is labelled as a demo. The engine's first outing was a client exhibition; that engagement is undocumented here because it is the client's to disclose, not his.
The hard part
The device it has to run on. A 3D room is easy on a desktop with a graphics card and hard on a phone browser that a visitor opened from a link, and a phone is what most people will use. That is a budget, not a feature: the geometry and the textures are sized so the room loads and moves on a handset rather than so it looks best on a workstation.
Proof
Go and open it
Artifacts
- The gallery, walkable now at /gallery2026-09-25
Claims, and what backs each one
The gallery is live on this site and runs in a browser with nothing to install.
https://www.ericvegas.com/gallery returned HTTP 200 on 2026-09-25 and serves the exhibition as a static single-page application.
It is a real three-dimensional room rendered with three.js and WebGL, not a panorama or a slideshow.
The application is a Vite build whose scene is constructed in three.js and rendered through WebGL. A visitor moves through the room rather than rotating within a fixed viewpoint.
Results from client deployments are shared with permission on a call.
What I learned
The engine outlived the show. Keeping the room and the exhibition in separate layers meant that when the original show came down, what remained was a reusable piece of software rather than a dead site, and rehanging it was a change to a data file.
Technologies
- three.js
- WebGL
- React
- Vite
- Vercel
Related work
If something here is close to a problem you have, the useful first message is what the thing has to do and what it has to talk to.
Work with me →