Installation¶
LUC3D is a static web application — there is no build step or package to install.
No installation required
You can use LUC3D right away at https://talmolab.github.io/luc3d/ — no setup needed. For better performance with large files, we recommend running a local server as described below.
Clone the Repository¶
Serve Locally¶
Then open http://localhost:8080 in your browser.
Browser Requirements¶
LUC3D runs in any modern browser. It does not block or gate on browser type — there is no user-agent check anywhere in the app.
For frame-accurate video seeking, LUC3D decodes exact frames with WebCodecs (via mediabunny). WebCodecs now ships in current Chrome, Edge, Firefox, and Safari. If WebCodecs is unavailable — or any decode fails — LUC3D transparently falls back to HTML5 <video> seeking, which still works but is less precise on long-GOP / HEVC footage.
Tip
A recent Chromium-based browser (Chrome or Edge) gives the most reliable frame-accurate stepping across a wide range of codecs. To force the HTML5 fallback for debugging, set localStorage.LUCID_VIDEO_BACKEND = 'html5' and reload.
Dependencies¶
No npm install or build step is needed. Most libraries are vendored locally under lib/; a few load from CDN.
| Library | Version | Role | Loaded from |
|---|---|---|---|
| Three.js | 0.147 | 3D viewport rendering | CDN |
| mediabunny | 1.30.0 | Frame-accurate video decode (WebCodecs) | lib/ |
| mp4box.js | 0.5.2 | MP4 metadata (FPS + frame count) | CDN |
| mp4-muxer | 5.2.1 | 3D video (.mp4) export |
lib/ |
| h5wasm | 0.10.3 | WebAssembly HDF5 read/write | lib/ |
| sleap-io.js | 0.5.3 | SLEAP .slp read and write |
lib/ |
| pako | 2.2.0 | Compression (sleap-io.js dependency) | lib/ |
| yaml | 2.8.0 | Calibration / config parsing | CDN |
| dockview-core | latest | Panel layout styles | CDN |
Video decode
Frame-accurate stepping and seeking go through mediabunny by default. mp4box.js is still loaded but is now used only to read accurate FPS and frame counts — not to decode frames. This pairing fixed a class of bugs where the pose overlay could render on a stale video frame after seeking.
Running Tests¶
Open the test runner in your browser: