An outdoor pool with an iPhone LiDAR
The methods from the room scan applied as-is to a wide outdoor area (about 38.2 m × 49.6 m), 2026-10-15
- 3,868 video frames (1920×1440) + the camera pose the iPhone recorded for each
- 90 high-resolution photos (2016×1512)
- 11,619 LiDAR depth frames (231×173 depths each); the LiDAR reaches only 5 m
- The app's own mesh, 1,286,546 triangles
End-to-end pipeline
flowchart LR A["iPhone Modelar scan
outdoors, about 44 min"] --> Z["Decode the export
video, photos, LiDAR depth frames"] Z --> M1["① App mesh"] Z --> M2["② LiDAR points"] Z --> D["LiDAR depth frames
11,589"] --> T["TSDF fusion
3 cm grid"] --> M3["③ Mesh + photo texture
(largest view per triangle)"] Z --> P["1,380 photos
(every 3rd video frame + all high-res)"] --> M3 M1 & M2 & M3 --> W["Web compression
GLB · PLY"] classDef m1 fill:#fef3c7,stroke:#f59e0b,color:#78350f classDef m2 fill:#d1fae5,stroke:#10b981,color:#064e3b classDef m3 fill:#ffe4e6,stroke:#e11d48,color:#881337 class M1 m1 class M2 m2 class M3 m3
Compare in 3D
Pick a tab to load that method. Drag to rotate, wheel to zoom, right-drag to pan. Two fingers on a phone. ③ is 4 files (57 MB) and takes a while to load.
Each method in detail
① App mesh
How it was made: The mesh the Modelar app built while scanning, extracted as-is (Mesh.scn decoded with the same tool as the room).
- Zero processing time
- Covers the whole area at once
- Vertex colours, so blurry
- Split into 2,526 pieces
What to look at
- Pool floor and the terrain around it
Numbers: 1,286,546 triangles · web 5.6 MB
② LiDAR points
How it was made: From 30,000,000 LiDAR points, thinned on a 0.05 m grid to 1,331,284 for the web.
- The most trustworthy shape (real metres)
- Gaps between points up close
- LiDAR reaches only 5 m, so far areas are empty
What to look at
- How points accumulate along the walking path
Numbers: web 1,331,284 points · 20.0 MB
③ LiDAR depth mesh + photos
How it was made: The best method from the room scan (room ⑪) as-is: 11,589 LiDAR depth frames fused with TSDF into a mesh, then 1,380 photos (every 3rd video frame + all high-res) projected from the poses the iPhone recorded (texrecon, largest view per triangle). The area is wide, so the grid is 3 cm instead of 1 cm (2 cm produced 59,899 blocks and mesh extraction failed). For the web, textures were reduced to 1024 px and split into 4 files.
- Ground (dry grass, gravel) and walls keep the photo texture
- Shape and dimensions from LiDAR
- Walkable in Walk mode
- Bushes and leaves are holes: LiDAR cannot form surfaces there (screen coverage 84.4%, room 97.7%)
- Close-up surfaces such as wooden boards are coarse at 3 cm and get wrong photo patches
- Web textures reduced to 1024 px
What to look at
- Look around from 'Capture spot' (taken on the survey point)
- Pool edges and ground texture
- Holes where the bushes are
Numbers: 3,816,078 triangles · texture atlases 366 · texturing 14 min · photo match PSNR 16.39 · coverage 84.4% · web 57.1 MB
Compared with the room scan
| Room | Pool | |
|---|---|---|
| Extent | 3.5 m × 3.65 m | 38.2 m × 49.6 m |
| LiDAR depth frames | 1,572 | 11,589 |
| TSDF grid | 1 cm | 3 cm |
| Photo match PSNR | 17.55 | 16.39 |
| Screen coverage | 97.7% | 84.4% |
Next
- Bush holes: fill only the holes with VGGT depth (room ⑫ method)
- Gaussian splat (LiDAR depth + pose refinement): strong on surface-less things like leaves
- RealityScan and WebODM: expected to be weak since most photos were taken turning in place; to be checked
- Tie to the survey point: the high-res photos were taken on a survey point, so the iPhone frame can be aligned to survey coordinates and overlaid on the drone orthophoto