This project implements a fully local pipeline for building a rotatable 3D browser view of a dilution refrigerator on macOS:
phone photos -> COLMAP reconstruction -> Three.js viewer
photos/raw/: source images from the lab capture sessionrecon/colmap/: COLMAP database and sparse/dense outputsscripts/: reproducible reconstruction and publishing helpersviewer/: local Three.js app that loadsviewer/public/models/fridge.ply
-
Install COLMAP on macOS:
brew install colmap
-
Install the viewer dependencies:
cd viewer npm install -
Start the local viewer:
cd viewer npm run dev -
Replace the placeholder model once you have a reconstruction:
./scripts/publish_model.sh
- Shoot 180-300 still photos.
- Use a fixed lens mode and avoid portrait mode, night mode, HDR mode changes, and digital zoom.
- Capture three vertical bands around the fridge: low, mid, and high.
- Keep at least 70% overlap between neighboring images.
- Move in small angular steps and keep exposure stable.
- Include surrounding scene texture so camera registration has stable reference features.
- Avoid people crossing the scene while capturing.
- If registration is weak, add temporary markers in the surroundings, not on sensitive hardware.
-
Copy phone images into
photos/raw/. -
Run:
./scripts/run_colmap.sh
Or run against a specific image folder and keep the output in a named subdirectory:
./scripts/run_colmap.sh "photos/raw/tape_measure/Tape measure photos " tape_measure -
If the run succeeds, publish the dense point cloud into the viewer:
./scripts/publish_model.sh
Or publish a named run to a different viewer asset:
./scripts/publish_model.sh tape_measure tape_measure.ply
-
Refresh the browser viewer.
If your local COLMAP build does not support CUDA dense stereo, the script falls back to exporting a sparse point cloud at recon/colmap/<run>/sparse/sparse.ply, and publish_model.sh will use that automatically.
- v1 is for visual inspection, not precision measurement.
- The viewer is configured through
viewer/src/config.ts. - You can replace
viewer/public/models/fridge.plywith a later reconstruction without changing code. - Set
viewer/src/config.tssourcetoschematicfor the hand-built labeled dilution refrigerator scene, or back toplyto view a reconstructed model file.