CIENVITA LAB 3D experiments One photograph in, a mesh out Run on our own hardware

00 / Experiment

One photograph in, a 3D model out.

We wanted to know what image-to-3D can actually do, so we ran an open model on a GPU box of ours and pointed it at things we could photograph. This page is the result: three meshes in the browser, the pipeline that produced one of them, and the part that did not work.

None of this is a product. It is the sort of thing we do to find out where a technology is genuinely useful before we put it anywhere near a client's system, which is the same habit described on our main page.

loading
drag to orbit, scroll to zoom

Drag inside the panel to orbit, and pick a tab for another model. The clock tower has its pipeline stills above it. The panel captures touch, so on a phone scroll the page using the margins either side of it.

01 / Models

What is on the page.

Each scan left the model as a 33 to 40 MB glTF file, which is not something you serve to a visitor. Decimating the mesh and re-exporting it Draco-compressed is what makes it web-sized.

M.01

Suzanne

Blender's mascot mesh, subdivided twice. Not a scan: it is here as the control, a model we know is correct on all sides. Web size 348 KB

M.02

Tiara

Reconstructed from a single AI-generated image, so nothing about it was ever a real object. It holds together because the input was clean and evenly lit. Web size 2.5 MB

M.03

Clock tower

One hand-held photograph of the Darlington town clock. Four corner pinnacles, both visible clock faces and the arcading survived. The back is invented, because there was only ever one view of it. Web size 2.2 MB

Worth knowing

The mesh arrives as confetti.

Output from the model is tens of thousands of disconnected fragments, with a handful of stray specks sitting far from the object. Those specks inflate the bounding box several times over, which wrecks any camera framing built from it. Keeping the largest connected piece does not help, because there is no largest piece. Stripping outliers by percentile is what works.

02 / Findings

What worked, and what did not.

The short version: one good photograph beats several mediocre ones, and beats them badly. Almost everything else follows from that.

F.01

One clean shot is enough

Object filling the frame, plain background, shot from far enough back that perspective is mild. That produced every usable model here.

F.02

Camera height matters more than resolution

At the object's own height, not looking down on it. A steep angle from above was the single worst thing we did to a subject.

F.03

Contrast beats megapixels

A white dish on white tiles came back as a bowl even from a clean single view. Dark glossy granite was no better. A mid-tone, uncluttered surface fixes it.

F.04

Multi-view made it worse

Feeding four views of one object produced a smeared blob where a single photo of the same object gave a crisp shell. The technique blends the views with no notion of where the camera was, so anything that disagrees averages into mush rather than triangulating.

F.05

It is the wrong tool for all-round accuracy

If the geometry has to be correct on every side, this family of models is not the answer. Photogrammetry or a pose-aware reconstruction model is.

F.06

Licensing is a real constraint

The obvious alternative for multi-view work is unusable here: its licence excludes the EU, UK and South Korea by name, and bars use of the model's output in those territories too. We used an MIT-licensed model instead.

03 / Credits

Whose work this is.

Everything here is open source, run on hardware of ours. Nothing on this page was sent to a third-party service, and the page itself loads nothing from anyone else's server.

C.01

TRELLIS.2, Microsoft

Image to 3D. MIT licensed, run locally on an NVIDIA DGX Spark, one photograph per model.

C.02

RMBG-2.0, BRIA AI

Background removal. Cuts the subject out before reconstruction, which is step two on the clock tower tab.

C.03

DINOv3, Meta

The image features the reconstruction is conditioned on.

C.04

Blender

Suzanne is Blender's mascot mesh. Blender also did the decimation and the glTF export for every model on this page.

C.05

three.js

WebGL renderer, orbit controls, glTF loading and the room environment lighting. MIT licensed, served from this site rather than a CDN.

C.06

Draco, Google

Mesh compression, and the reason a 40 MB scan is a 2 MB download. Apache 2.0 licensed.

C.07

Photographs

Darlington town clock, 2025-06-28. Ours.