Skip to content

Repository files navigation

Scan Room

A private, offline 3D walkthrough for your home scans. Open a Polycam (or any glTF 2.0) export, pick a floor, drop in a person, and walk through the space at eye level. Everything runs in a single HTML file, and your scan never leaves your computer.

Try it online, or download polycam-walkthrough.html and open it in a desktop browser. You don't need a server, an install, or an internet connection. Even the hosted version processes your files locally in your browser and never uploads them.

Features

  • Opens GLB, glTF, and ZIP exports, including loose glTF with its .bin and texture files. If an archive holds several models, you pick one.
  • 3D orbit and plan views, with wall-section outlines in plan.
  • Walk mode: arrow keys or WASD, drag to look, Shift to move faster. Walls and floor edges block you, based on the actual mesh triangles.
  • Visibility controls: show categories (walls, floors, ceilings, openings, furniture) as solid, transparent, or hidden, hide individual objects, or cut away everything above a set height.
  • Measurements in metres and feet/inches.
  • Project files: download a ZIP with your model and setup (orientation, floor, hidden objects, measurements, person position) and reopen it later.
  • Private by design: a strict Content Security Policy blocks all network requests. There's no telemetry, no accounts, and no uploads.

Usage

  1. Open a GLB, or a ZIP containing GLB/glTF. You can also drag files onto the window.
  2. Check the orientation and units. The defaults are Y-up and metres. Use Measure to check a distance you know.
  3. Choose a detected floor level, or use Pick floor surface and click some clear floor.
  4. Click Place person, click clear floor in the plan, then click Walk. Press Escape to leave walk mode.
  5. Use category visibility, individual hiding, or the height cutaway to see inside.
  6. Save image downloads a PNG. Download project ZIP saves your setup. Nothing is saved automatically.

A project ZIP contains your original scan. Only share it with people you'd trust with that data.

Browser support

Scan Room is tested in desktop Chrome. Edge should also work. WebGL 2 is required.

Scope and limitations

  • Only standard glTF 2.0 triangle meshes. OBJ, USDZ, point clouds, Gaussian splats, Draco/meshopt compression, GPU instancing, and KTX2 textures aren't supported.
  • Object categories and floor levels are guessed from mesh names. It works best with structured Polycam architectural exports. A single fused mesh needs a manual floor pick and the cutaway.
  • Walking stays on one elevation, so there are no stairs or gravity. Bad geometry can block you. Floor support only and Free explore relax the boundaries.
  • Wall collisions are limited to 350,000 triangles. Larger models fall back to floor support only. Import limits: 200 MB input, 512 MB expanded ZIP, 512 archive entries, 20,000 nodes, 2 million triangles.
  • Measurements are planar and don't snap to edges. Treat all dimensions as previews, not construction measurements, and check important ones on site.

Development

Requires Node.js 20 or newer.

npm ci
npm run build                # bundles src/ into polycam-walkthrough.html
npx playwright install chromium
npm test
Path Purpose
src/page.html Page template, including the Content Security Policy
src/style.css Styles, inlined at build time
src/main.js Scene, views, walking, measurements, UI
src/importer.js File and ZIP reading, path sanitising, glTF validation, project files
src/triangle-index.js Bounding-volume tree for floor and wall collisions
build.mjs esbuild bundle that inlines everything into one HTML file
tests/ Playwright browser tests using generated glTF fixtures

The built polycam-walkthrough.html is committed so people can download it directly. Rebuild and commit it whenever you change src/. CI fails if it's out of date.

Tests open the built HTML over file:// with networking disabled. To use a system Chrome instead of Playwright's Chromium, set CHROME_PATH=/usr/bin/google-chrome. To also smoke-test a real export, set SCAN_ROOM_SAMPLE=/path/to/export.zip.

See CONTRIBUTING.md for how to contribute.

License

MIT © Matt Ferrante.

The built HTML bundles three.js and fflate, both MIT-licensed. Their license texts are embedded in the file.

Scan Room isn't affiliated with or endorsed by Polycam.

About

Scan Room: a private, offline, single-file 3D walkthrough viewer for Polycam and glTF/GLB scans

Topics

Resources

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages