3D scanning, underground and above.
SpeleoMap uses the LiDAR scanner on iPhone Pro and Pro Max to capture real-time 3D point clouds and meshes of cave passages and surface features. Scans are anchored to your Map Line and exportable to the formats your team already uses.
← Back to WorkflowCave Scanning
Starting a scan
During a cave survey workout, tap Scan from the drop pin menu on your Map Line. SpeleoMap opens the scan screen — a full-screen live camera view with a real-time ARMesh wireframe overlay showing the 3D geometry being captured as you move.
The scan starts anchored to your current position and heading on the Map Line. A start station drops automatically.
You can also start a scan directly from the Scans tab by tapping the + New Scan button. Scans started this way are unanchored — they're not tied to a specific position on a Map Line and render at the project origin until retroactively anchored via desktop tooling.
The scan screen
While scanning you'll see:
- Live wireframe overlay — the ARMesh geometry building in real time over the camera feed. Move slowly and sweep the passage to maximize coverage
- Status bar at the top — battery level, thermal state, elapsed time, coverage, and segment counter
- Torch — toggles the rear LED on and off. In dark passages with no cave light, the torch illuminates the walls enough for the camera to track
- Marker — drops an annotation at the current scan position without stopping the capture
- STOP — ends the scan with a confirmation tap
Continuous capture and segments
LiDAR scanning in SpeleoMap is continuous — there's no fixed time or size limit per scan. As the point cloud grows, SpeleoMap automatically flushes segments to disk in the background and keeps scanning. The segment counter in the status bar shows which segment is actively capturing.
Smaller segment sizes are gentler on older or hotter devices. Larger segments mean fewer flushes. Adjust in Settings → Scanning.
Stopping a scan
Tap STOP and confirm to end the scan. A stop station drops automatically at your current position on the Map Line. Post-processing — mesh building, texture baking, and storage — runs in the background after you return to the survey screen. You can keep surveying immediately.
Warnings during a scan
The scan screen surfaces three warnings:
- DEVICE TOO HOT — the device has reached the thermal threshold set in Settings → Warnings. Stop the scan and let the device cool. SpeleoMap never auto-pauses — the warning is informational
- MEMORY LOW — memory pressure is high. Stop the scan to save what you've captured before the system reclaims memory
- SLOW DOWN — motion coaching banner. Moving too fast for the LiDAR to build clean geometry. Slow your sweep
Hike Scanning
Ad-hoc scans on a hike
During a Hike Line workout, tap Scan on the map to capture a 3D scan of any surface feature — a cliff face, a cave entrance, a geological feature. The scan spins up a short ARKit session, captures for as long as you hold, then anchors the result to your GPS position and heading on the Hike Line. It appears as a pin on the trail map. Tap it to open the 3D viewer.
Hike scans use the same scan screen and controls as cave scans. See Hike Line.
Sharing and Viewing Scans
Sharing scans with your team
AirDrop a scan or full project bundle to a teammate's device. Every iPhone running SpeleoMap — Pro or not — can view scans in the 3D viewer. On a crew where only one person has an iPhone Pro, that device handles all LiDAR capture and shares the scans to the rest of the team.
Viewing scans
Tap any scan from the Scans tab or the Map Line detail view to open it in the 3D viewer. The viewer opens full-screen in landscape — scan name at the top, controls on the right side:
- Fit to view — resets the camera to show the whole scan
- Measure — single — tap two points on the mesh to measure a straight-line distance
- Measure — multi-point — tap a chain of points to measure a total path distance. Running total displays at the top of the screen in your chosen units
- Clear measurement — removes the current measurement overlay
- Axis gizmo — bottom left. Shows the current viewing orientation. Tap an axis to snap to that view
- Scale bar — bottom right. Live scale reference for the current zoom level
Pinch to zoom, rotate with one finger. If the scan is still processing when you open it, SpeleoMap shows a "baking colors" placeholder and updates automatically when processing finishes.
Managing scans
The Scans tab on any project shows all scans in chronological order. From here you can:
- Tap a row — open the scan in the 3D viewer
- Swipe to delete — removes the scan from the project with a confirmation
- Rename — swipe for options or use the context menu
- Share — shares the scan as a
.speleoscanfile via AirDrop or any share destination - Assign to station — links the scan to a specific survey station
From inside the 3D viewer, you can also reassign the scan's anchor — change which Map Line position and heading the scan is tied to. Useful for correcting an unanchored scan or updating the anchor after surveying additional context.
Exporting scans
Scans export as OBJ, PLY, or USDZ — open in Blender, Therion, CloudCompare, or any 3D tool your team uses. The desktop bundle includes scan meshes alongside your Survex file and CSV station data. See Export.
Scan Settings
Scan quality
Controls the detail level of each scan. Higher quality produces a more detailed mesh but scans take longer to process and use more storage. Adjust in Settings → Scanning → Default quality.
Path detail
Controls how finely SpeleoMap records your movement as you walk a Map Line — not just during scanning but throughout the whole survey. Finer detail draws a smoother traverse but uses more storage. Adjust in Settings → Scanning → Path detail.
Auto-torch
When enabled, the rear LED turns on automatically when a scan starts. Off by default — the torch draws battery and heat, and many cavers prefer to manage their light manually. Toggle in Settings → Scanning → Auto-torch.
Scan segment size
Long scans are split into segments automatically to keep memory usage bounded. Larger segments mean fewer splits and bigger pieces; smaller segments are gentler on older or hotter devices. Adjust in Settings → Scanning → Scan segment size. Options: 250K, 500K, or 1M points per segment.