STATION 00 — ENTRY

CaveViewer logo: a skull in a flight helmet

See the whole cave
before you swim it.

CaveViewer is a free desktop tool for walking through large cave-survey 3D scans — the kind that are too big to load all at once anywhere else. Built by a cave diver, for cave divers and survey teams.

Free. No ads. No account. Works offline once installed.

CaveViewer rendering a textured cave passage in blue-lit photogrammetry detail, with the minimap and control column visible

Inside an actual cave scan, fully textured — headlamp and ambient fill lighting both visible, minimap bottom-left, controls bottom-right.

Station 01
The Tool

Built for scans too big to open anywhere else

A multi-gigabyte cave scan will choke most viewers. CaveViewer splits the model into a 3D grid of spatial chunks and only keeps the chunks near your current position loaded — so frame rate stays smooth no matter how large the full system is.

Navigation

Fly through it like you're really there

Free-fly camera with WASD movement, mouse look, vertical movement, and a speed boost — built for covering long passages quickly, then slowing down where it matters.

Lighting

Headlamp, plus an ambient fill when you need it

Adjustable headlamp brightness for the cone in front of you, and a separate global ambient light to wash out shadows across the whole cave when you want to see everything at once.

Orientation

A minimap that knows where the passage actually is

Click anywhere on the minimap to jump there instantly — it lands you inside the actual passage near your current depth, not floating in empty rock.

CaveViewer with photo texture off, showing the plain lit cave surface and the minimap in the bottom-left corner

Inspection

Mesh, texture, or both

Toggle wireframe to inspect scan density and quality, toggle photo texture on or off, or run both together to see the triangulation laid over the real surface.

CaveViewer showing a cave passage in pure wireframe mode, the full triangle mesh visible

Shading

Smooth by default, flat when you need the facets

Maps import with smooth shading applied automatically, and a live SHADE button lets you flip to flat shading instantly to inspect the raw triangulation — no reimport required.

The bottom-right control column showing the SHADE button alongside Brightness, Global Light, View Dist, Mesh, Texture, Help, Color, and Open

Multiple maps

Switch caves without closing the program

Open a different map mid-session with one click. First-time imports show real progress in-window; maps you've opened before load instantly from a local cache.

Always current

Check for updates from the launch screen

One click checks for a newer version and installs it automatically — no separate downloads to track down by hand.

Station 02
Compatibility

Bring your own scan

CaveViewer reads the formats survey and photogrammetry software actually export. Drop in a folder, and it figures out the rest.

.OBJ + .MTL + tiled .JPG — Agisoft Metashape and similar photogrammetry exports
.GLB — binary glTF, including models with textures embedded directly in the file

Station 03
On Screen

Everything you need is one column, one corner

Every adjustable control — headlamp, global light, render distance, mesh, texture, and shading toggles, the background color picker, switching maps — lives in a single column anchored to the bottom-right corner. A live readout above the minimap shows your current frame rate and how many chunks are loaded, in real time.

FPS 58 · CHUNKS 214 (0 pending)
BRIGHTNESS − 5 +    GLOBAL LIGHT − 2 +    VIEW DIST − 4 +
[ MESH ] [ TEXTURE ] [ HELP ] [ COLOR ] [ OPEN ]
CaveViewer's full controls reference screen, listing every key and button including the SHADE toggle, over the sci-fi HUD styling introduced in 1.3

Forget a key? Click HELP anytime to bring this back up — it lists every control in one place.

Station 04
Getting In

Install

A one-click installer handles Python and every dependency for you. No prior setup required.

  1. Download the latest release

    Grab the zip from the Releases page and extract it anywhere.

  2. Run the setup script

    Double-click Launch_Setup.bat inside the setup folder, then click Install. It installs Python (if needed) and every required package automatically.

  3. Launch CaveViewer

    Use the new desktop shortcut, or run python caveviewer.py from the project folder. Either way, you'll land on the launch screen with a Browse button.

  4. Point it at your map

    Select the folder containing your .obj+.mtl or .glb file. First time opening a new map, it imports and caches it once — every open after that is instant.

CaveViewer's launch screen showing Version 1.3, the skull logo, Check for Updates link, credits, Browse button, and Sample Maps button

What you see on launch — click Browse and pick your map folder, or try Sample Maps if you don't have one.

CaveViewer's progress screen while importing a brand-new map for the first time, showing the sci-fi HUD styling introduced in 1.3

First time opening a new map only — every open after this is instant.

Station 05
Try It

No scan of your own yet? Borrow one of ours

The launch screen has a Sample Maps... button right below Browse. Pick a cave, confirm the download size, and CaveViewer fetches and extracts it automatically — no manual unzipping, no hunting for the right folder.

Sample Maps list showing Devils Eye already downloaded with an Open button, and Peacock Springs Cave System available to download

Once a map's downloaded, its button switches to Open — it's saved locally, so picking it again later never needs the internet.

Download confirmation dialog showing Peacock Springs Cave System at 365 MB

Confirms the size before anything downloads.

Download progress bar partway through downloading Peacock Springs Cave System

A real progress bar, not a frozen-looking window.

Once downloaded, it hands straight off to the same one-time import process any brand-new map goes through — after that, opening it again is instant.

Station 06
Surface

Built by people who use it

CaveViewer started as a way to actually look at the survey data from real dives, not just collect it.

Brian Deatherage (K3rnalPanic)
CO-CREATOR
Zsolt Zsabo
CO-CREATOR · BOTTOMLINE PROJECTS SCIENTIFIC DIVE TEAM