Skip to content

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

git clone https://github.com/talmolab/luc3d.git
cd luc3d

Serve Locally

python3 -m http.server 8080

Or use the included server script:

python3 server.py
npx serve .

Point any static file server at the repository root. LUC3D has no server-side dependencies.

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:

http://localhost:8080/tests/test-runner.html