← Portfolio

Project · January 2019

SourceForm

A kiosk that scrapes crowdsourced web photos, reconstructs a 3D model by photogrammetry, and 3D-prints whatever the internet currently thinks an object looks like.

Role
Front-end interaction design, backend pipeline
Tags
Photogrammetry, Interaction Design, Computer Vision, Full-stack
The SourceForm kiosk interface running on its touchscreen.

SourceForm is a standalone kiosk that turns crowdsourced web images into physical objects: it scrapes tagged photos of a user-specified subject, reconstructs a 3D model via photogrammetry, repairs the mesh, and 3D-prints the result. Because the model is rebuilt from whatever images exist online at the time, the same query produces a different, incrementally more accurate print months later — either tracking a specific object’s growing visual record (the Statue of Liberty, for example) or synthesizing the internet’s collective, unfiltered idea of a common one (an apple). This project was showcased at ACM SIGGRAPH 2019.

The system was split across two machines before I joined: a powerful, internet-connected PC handling image collection, photogrammetry, and print commands, and a lighter touchscreen machine for the user-facing interaction. I was given a rough brief for what that interaction should do, then rapid-prototyped and built the front-end interface myself, running full-screen in a browser window on the touchscreen machine. Mid-testing I forked an existing npm on-screen-keyboard package rather than rely on Windows’ built-in touch keyboard, which visually clashed with the interface — a small decision, but one made because the seams show if you don’t fix them.

On the backend, I reworked the legacy MATLAB code that pulled candidate images from Flickr, rewriting it in Python. That became part of a watcher process I wrote that also listens for HTTP requests from the UI machine, returning things like search-result thumbnails so users can confirm a match before committing, and that calls into the 3D printer’s control API built by a colleague. COLMAP handles photogrammetry and mesh repair; I experimented with and tuned the parameters to accommodate different types of objects that could be requested by a user.