← Writing

An experiment in 3D reconstruction

From 123D Catch
to Old Manhattan

A long-running fascination with turning photographs into places—and a new way to revisit an old film.

The reconstructed Manhattan waterfront, with buildings rising behind Battery Park
Loads about 37 MB · WebGL browser required

A real Gaussian reconstruction. The interactive scene loads only when you choose.

Stay near the original camera path. Large rotations reveal gaps, stretched vegetation, and incomplete building surfaces.

3D reconstruction has interested me ever since Autodesk’s 123D Catch. The idea that you could walk around an object, take a bunch of photographs, and turn those images into something three-dimensional felt pretty remarkable.

That was photogrammetry: finding corresponding features across photographs, estimating where the cameras were, and using those relationships to recover the scene’s geometry.

Microsoft was exploring similar territory with Photosynth, which grew out of the Photo Tourism research project. It could organize collections of photographs in 3D, letting you move between the viewpoints where the pictures were taken. Ordinary photos started to feel like pieces of a larger place.

The point cloud looked better

What kept frustrating me in my own experiments was the transition from a point cloud to a mesh.

A point cloud—a collection of colored points in 3D space—could capture a surprising amount of the character of an object. But when I tried turning it into a continuous surface, something often got lost. Fine details disappeared, edges softened, and the result felt like an ugly approximation of something that had looked much more convincing a moment earlier.

The mesh was usually what I needed, though. It was the representation I could bring into other tools to edit, prepare for 3D printing, or use as a starting point for reverse engineering. Getting something that looked good and getting something useful were often two different challenges.

A different way to represent a place

Then NeRF, or neural radiance fields, brought another approach into focus: learning how a scene looks from different positions so it can render views the camera never captured.

3D Gaussian splatting offered a different representation for that same goal. Instead of requiring a triangle mesh, it represents a scene with many overlapping, soft-edged 3D blobs. Each has a position, shape, orientation, opacity, and color information. Together, they can reproduce remarkably detailed images and render quickly enough to explore interactively.

What appealed to me was that it seemed to preserve more of what I liked about point clouds. The representation could remain a collection of separate elements while looking much more continuous when rendered.

It doesn’t automatically give you a solid object you can print. There’s research into extracting meshes from splats—SuGaR is one example—but producing a visually convincing scene and producing a clean, usable surface are still separate problems.

Trying it on old Manhattan

Recently, I came across SplatAnything, and wanted to try it on something I’d attempted before: colorized archival footage of Manhattan’s waterfront.

A frame from the enhanced and colorized historical film, showing the waterfront and Castle Garden
A frame from the source video, presented as enhanced and colorized footage of Lower Manhattan in the 1930s.

It’s a difficult source. The camera is moving, boats are moving, the water is changing, and the footage wasn’t shot with reconstruction in mind. The enhancement and colorization add another layer between the original scene and the images being processed.

Still, the results were better than I’d managed previously.

Adding more footage didn’t necessarily help.

A reconstruction spanning roughly four minutes covered more waterfront, but buildings started overlapping and becoming translucent. Going back to shorter sequences produced much cleaner results. After comparing several windows, I settled on about 80 seconds of footage, using 20 selected frames.

Refined 80-second reconstruction with clearer, more solid building facadesEarlier four-minute reconstruction showing translucent and overlapping buildingsBefore · four minutesAfter · 80 seconds

Actual Gaussian renders. Source views use the same input frame; oblique views use comparable nearby camera movements. No generated preview imagery.

Selected footage
80 seconds
Input frames
20
Inference resolution
1008 × 672

Where the illusion breaks

There’s still plenty to improve. Trees stretch, boats leave ghosts, and parts of buildings float or disappear when you move too far from the original camera path.

Those failures become especially obvious when you try novel view synthesis—rendering the scene from a viewpoint that wasn’t in the input. That’s the central challenge these methods are trying to solve, and this footage gives them plenty of opportunities to struggle.

But even with those limitations, I find the result compelling. A film that used to offer one fixed journey along the waterfront now lets me move a little to either side and look again.

That’s the part of 3D reconstruction that has kept my attention since 123D Catch.

Explore the waterfront ↑

Next experiment: World Labs’ Atlas

Just as I was putting this experiment together, World Labs announced the release of Atlas on November 12. Its Viewfinder app lets you start with photos or generated images, reconstruct a scene, create camera paths, and render videos.

So I started trying the same Manhattan waterfront material in Viewfinder. Here’s a screenshot from that first test, with the extracted film frames along the bottom and the working scene above.

Nick’s World Labs Viewfinder session showing an in-progress Manhattan waterfront scene with stretched building and sky fragments, above a strip of source film frames
My first Viewfinder test using frames from the same historical footage. This is a working-session screenshot; I haven’t yet made a controlled comparison with SplatAnything. Open the image to inspect it at full size.

What interests me is how this connects the different parts of the workflow: reconstructing a place, exploring new viewpoints, and getting the result into other tools. World Labs also lists splats-to-mesh conversion among its Atlas tools, bringing this back to the surface-reconstruction problem that originally frustrated me.

The next thing I want to test is how well it holds the buildings together as the camera moves, and how it handles areas the film never showed. For historical footage, the distinction between recovering visible evidence and generating a plausible continuation matters.

The interactive scene and before-and-after comparison above show the SplatAnything reconstruction. This Viewfinder test is a separate experiment.