A Photographer's Case for Single-Image Splats

Danil Zanozin

Danil Zanozin

Email
Copy Link
Twitter
Linkedin
Reddit
Whatsapp
Running Green

I'm not a 3D artist. I'm a landscape photographer who spent 22 days walking the John Muir Trail with one camera and one wide-angle lens - and a machine-learning engineer the rest of the year. This is a story about what happened when those two halves finally talked to each other: today, every photograph in my portfolio has a "View in 3D" button, and the gaussian splat behind it was generated from the photograph alone.

The problem flat images have

Photographers spend enormous effort compressing a three-dimensional experience into two dimensions, and the compression is lossy in a way that never stops hurting. I stood at Precipice Lake, high on Sequoia's High Sierra Trail, in the morning, with granite walls rising out of dark water in three distinct planes of depth. The photograph is good. The depth is gone.

Radiance fields felt like the obvious answer, except for one practical detail: I shoot photographs, not captures. On a three-week thru-hike there is no orbiting a subject for a multi-view dataset - you get one frame, in one moment of light, and then you keep walking because you have twelve more miles before camp. If 3D was going to happen for this work at all, it had to come from single images, after the fact.

The pipeline

Monocular splat generation crossed the "good enough to ship" line for me with Apple's SHARP. My production pipeline is deliberately boring:

1. SHARP runs on the full-size JPEG of each photo (it resizes internally to 1536px, so feeding it more resolution than that buys nothing).
2. The raw splats go through a 50% pairwise-merge decimation, then compress to .sog via @plaach photo lands at roughly 6 MB.
3. The same pass rasterizes a 768×768 grayscale depth map (60–110 KB) from the splat's geometry - more on why below.
4. Everything is incremental: one Python command finds photos missing their 3D assets and pr a new gallery to the site costs one command and a coffee.

The whole portfolio - a couple hundred photographs - is about 1.1 GB of `.sog`. It runs this way because I refuse to maintain a pipeline that needs babysitting; if generating the 3D asset required per-image fiddling, this feature would have died in a week.                                                                                                                                                           
The trick that makes it feel like magic                                                                                                                                                                        
The splat viewer runs on the PlayCanvas engine, and the single most important decision in the whole project has nothing to do with ML: the camera initializes at the photograph's actual capture field of view, computed from the EXIF focal length, so the first frame of the 3D view is pixel-aligned with the flat photo you were just looking at. Then you move the mouse, and the photograph becomes a space.

That alignment is the entire experience. A splat presented as "a 3D scene" invites you to judge it as 3D - and a monocular splat will lose that judgment, because the occluded regions are guesses. A splat presented as a photograph that yields when you lean into it gets judged as photography, and there it wins. The medium works when you frame it as depth added to an image, not geometry reconstructed from one.

There's a cheaper sibling for browsing: in gallery grids, hovering any photo gets depth-displaced parallax driven by that 768×768 depth map, rendered on a single shared WebGL canvas rather than per-tile contexts. It's a whisper of the full effect at 1% of the bandwidth, and it teaches visitors that the photos here have depth before they ever open the lightbox.

What doesn't work (yet)

Honesty section. Mobile is unsupported entirely. Splat rendering is expensive in both compute and memory, mobile hardware spans an enormous performance range, and 6 MB per view over a cellular connection is a miserable first impression - rather than ship a degraded version of the effect, I gate it to desktop until I have a real answer. That six megabytes per view is my largest UX cost on desktop too, and I have no progressive-loading story for `.sog` yet.

Long lenses are a compromise. SHARP can't build convincing geometry from telephoto frames - telephoto compression strips out the depth cues it needs, and the resulting splats fall apart. After testing across my catalog's focal lengths I found the threshold where reconstruction stays trustworthy, and the viewer clamps there; telephoto images naturally carry little parallax to recover anyway.

And SHARP has failure modes every photographer will recognize on sight. Out-of-focus regions sometimes land at the wrong depth - the model reads bokeh as geometry. Non-literal scenes confuse it: a star-trail frame has no sane depth interpretation, and it shows. Mist and transparent surfaces do what mist and glass have always done to depth estimation. And there's an irony built into the physics: deep-depth-of-field ultra-wide frames produce the strongest 3D effect - which means they also invite you to lean furthest into the scene, where you discover the medium's honest limit. Look "behind" a foreground boulder and there's nothing there but median-colored noise, because the photograph never knew what was behind it either.

Why I think this matters beyond my website

Every working photographer is sitting on an archive of thousands of single images. None of them will ever be re-captured as multi-view datasets - the moments are gone. Monocular splat generation means that the entire body of existing photography is now addressable as a 3D display medium, with a pipeline a single person can run. The capture side of radiance fields gets most of the attention; I'd argue the archive side is the bigger audience, and it's photographers - not 3D artists - who will walk through that door.

See it live (desktop): danilzanozin.com - any photo, "View in 3D." The John Muir Trail gallery at danilzanozin.com/jmt is where I'd start.

Featured

Recents

NUBIGON Pro v7.5.2 Extends Clip Plane Support to Gaussian Splats

NUBIGON Pro v7.5.2 extends clip plane support to Gaussian splats for dollhouse cuts and improves level of detail on large splat datasets on Windows.

Michael Rubloff

Aug 4, 2026

NUBIGON Pro v7.5.2 Extends Clip Plane Support to Gaussian Splats

NUBIGON Pro v7.5.2 extends clip plane support to Gaussian splats for dollhouse cuts and improves level of detail on large splat datasets on Windows.

Michael Rubloff

MPEG Calls for Dynamic Gaussian Splat Test Material Ahead of a Coding Call for Proposals

MPEG has formally opened a call for content for Gaussian splat coding, seeking dynamic I-3DGS test material with COLMAP camera calibration by 15 October 2026.

Michael Rubloff

Aug 4, 2026

MPEG Calls for Dynamic Gaussian Splat Test Material Ahead of a Coding Call for Proposals

MPEG has formally opened a call for content for Gaussian splat coding, seeking dynamic I-3DGS test material with COLMAP camera calibration by 15 October 2026.

Michael Rubloff

Terrasolid Adds Cut, Copy and Paste Point Tools to TerraScan for Gaussian Splat Editing

TerraScan 026.008 adds Cut, Copy and Paste point tools for manual Gaussian Splat scene editing, and TerraSplat renders the result inside Bentley and Spatix CAD.

Michael Rubloff

Aug 3, 2026

Terrasolid Adds Cut, Copy and Paste Point Tools to TerraScan for Gaussian Splat Editing

TerraScan 026.008 adds Cut, Copy and Paste point tools for manual Gaussian Splat scene editing, and TerraSplat renders the result inside Bentley and Spatix CAD.

Michael Rubloff

Scenario Adds Hosted 3D Gaussian Splat Generation With Tencent HY World

Scenario adds Tencent's HY World Multi-view to Splat, generating an explorable 3D Gaussian splat from 2 to 64 photos or a video walkthrough, up to 15M points.

Michael Rubloff

Aug 3, 2026

Scenario Adds Hosted 3D Gaussian Splat Generation With Tencent HY World

Scenario adds Tencent's HY World Multi-view to Splat, generating an explorable 3D Gaussian splat from 2 to 64 photos or a video walkthrough, up to 15M points.

Michael Rubloff

Trending Articles
  1. TRENDING
    Loading...
  2. TRENDING
    Loading...
  3. TRENDING
    Loading...
Danil Zanozin

Written by Danil Zanozin

Danil Zanozin is a landscape photographer and machine-learning engineer in California. His portfolio at danilzanozin.com pairs long-trail photo essays - the John Muir Trail, the High Sierra Trail, the Grand Canyon - with a self-built pipeline that gives every photograph a gaussian-splat depth view.

Email
Copy Link
Twitter
Linkedin
Reddit
Whatsapp