← Lab bench
EXP-071Live

Our local park, rebuilt from two walks with a 360 camera

52min

from a 20-second Insta360 X6 walk to a 3D park you can step into, on one RTX 4070

Trees and a grassy slope in the park drawn as coloured points, building up around the camera's frustum
1/4The park walk building up as points, in the order the camera first saw each part.
  1. 1 · Points
  2. 2 · Splat
  3. 3 · Path points
  4. 4 · Path splat

We stopped borrowing other people's footage and filmed our own local park: two ordinary family walks on an Insta360 X6, 20 seconds down a tree-lined path and 38 seconds through the park. Both fisheye lenses go in raw, with no stitching, and are solved together as one camera rig, so every moment is placed. Everyone in the footage, the camera holder included, is masked out, and a Gaussian splat is trained locally. The page replays each walk with the park building up as points in the order the camera first saw it, then hands over to the finished splat.

What we tried

  • Filmed two walks on an Insta360 X6 held on a stick, out with the family.
  • Kept the sharpest moment in every third of a second from both raw fisheye lenses, and masked every person, the pram and hands with Grounding DINO and SAM 2.1.
  • Solved the two lenses as one COLMAP rig, starting from back-to-back lenses a few centimetres apart and letting the solve refine it.
  • Trained in LichtFeld Studio straight on the fisheye images, then tagged every part of the splat with the moment the camera first saw it.

What we measured

MeasureTree-lined pathPark walkNote
Walk filmed20 s38 s
Moments placed (both lenses)61 of 61113 of 113122 and 226 images
Camera solve error0.71 px0.67 px
Distance walkedabout 22 mabout 20 mApproximate, from an assumed 1.6 m camera height
Points in the replay1.50M1.54M
Held-out PSNR17.9 dB19.4 dBHeld down by the two lenses' different exposure
End to end on one RTX 407052 min1 h 26 minTraining 42 and 58 min

What went wrong

  • On an earlier home capture we solved the two lenses separately and some frames landed in the wrong place. Locking them together as one rig placed every moment of both walks.
  • Before this, we tried crowded stock street walks. Half of every frame was strangers to remove, and the crowd left grey smears. Our own quieter walks came out far cleaner.
  • On one of those stock walks, the ground fit locked onto the crowd and tilted the whole street by 15 degrees. "Up" now comes from the camera's level horizon and its steps.

What happens next

  • Match the two lenses' exposure before training.
  • Longer walks that loop back, so the far sides fill in.
  • Join several walks into one map of the area.

Built with

  • COLMAP 4.1 BSD-3-Clause
  • Grounding DINO Apache 2.0
  • SAM 2.1 Apache 2.0
  • LichtFeld Studio GPL-3.0
  • Spark 2.2 MIT
  • three.js MIT