Skip to main content

Recipe: 3D from photos

Goal: turn a set of photos of an object or scene into a 3D model — either a Gaussian-splat / radiance field you can fly through, or an exported mesh.

Nodes you'll use: an image set input → Colmap (camera solve) → a splatting/NeRF node (Instant Splat, Open Splat, SuperSplat, or a radiance-field node) → optional mesh export.

Capture tips first (this matters most)

  • Take 30–150 photos orbiting the subject, overlapping ~70% between shots.
  • Keep the subject still and the lighting consistent; avoid blur and reflective/transparent surfaces.
  • Cover it from multiple heights, not just one ring.

In the Workflow Builder

  1. Upload your photos to a folder in Data, and point an input node at that folder.
  2. Add a Colmap node — it solves camera positions and a sparse/dense point cloud (structure-from-motion).
  3. Add a splatting node (e.g. Instant Splat / Open Splat) to build the radiance field, or a NeRF/radiance node.
  4. (Optional) add a mesh export / converter node to get a GLB you can open in any 3D tool.
  5. Connect them in order, Save, and Run.

This is GPU-heavy and longer-running than image nodes — watch the per-node progress and logs. Colmap is the step most sensitive to capture quality; if it fails to converge, re-shoot with more overlap.

Over the API

Same shape as any workflow — upload the photos (or reference an existing folder cog), then run your saved reconstruction workflow:

# $AUTH is "Authorization: Bearer <token>" — get it from your sk_ key,
# see /api-reference#authentication
curl -s -X POST "$BASE/workflows/workflow-versions/<your_version_id>/run" -H "$AUTH" \
-H "Content-Type: application/json" \
-d '{"cog_ids": [<image_folder_or_file_ids>]}'

Poll GET /workflows/workflow-runs/{run_id} until status is success (or partial_success), then download the splat/mesh outputs listed in run_files. See Getting Started → Quickstart.