colmap4d
A standard COLMAP sparse model + one timestamp per image + one timestamp per point.
Every image and every point becomes an independent sample in spacetime (x, y, z, t).
Nothing else: frame sync is just timestamps being close, and any discretization is a
derived view or a render parameter, never stored data.
colmap4d adds up to three sidecar files to an ordinary COLMAP model and changes no existing file — so old tools open it as a perfectly normal (static) reconstruction, while a 4D-aware viewer unlocks a free 3D view + a draggable time axis.
Spec v1.0 — frozen. See the specification; Part I and the conformance goldens are normative, and changes follow the CHANGELOG.
colmap4d is an independent, community extension of the COLMAP output format. It is not affiliated with or endorsed by the COLMAP project; "COLMAP" is used only to name the format it extends.
Which one are you?
| I want to… | go to |
|---|---|
| Read colmap4d data (the common case) | Quick start below — pip install colmap4d, three lines |
| Produce colmap4d data (convert / write) | docs/converters.md |
| Build a second implementation (C++/Rust/JS) | the spec: implement Part I, then pass every fixture in conformance/golden/ at the v1.0 tag |
| Contribute (human or AI agent) | CONTRIBUTING.md + AGENTS.md |
| Drive colmap4d from an AI agent | the colmap4d skill |
More detail: repository layout, dev commands & versioning.
Read colmap4d data (quick start)
Read a COLMAP model together with its time layer — zero dependencies:
import colmap4d
mv = colmap4d.load_model_view("path/to/sparse") # COLMAP model dir, with or without sidecars
mv.point_time(42) # -> t_ns (int64 ns), or None if the point is temporally-unbounded
mv.image_time(1) # -> t_ns, or None
mv.effective_points_t() # {point3d_id: t_ns}, dangling ids already dropped
mv.sidecars.time_meta # {"clock_domain": "utc_ntp", ...} or None
Just the timestamps, without the base model: colmap4d.load_sidecars("path/to/sparse").
A plain COLMAP model (no sidecars) loads fine: empty times, all points temporally-unbounded —
the backward-compatibility baseline. The reader is standard-library only; pip install 'colmap4d[model]' adds pycolmap for authoritative parsing and 3.12 rigs/frames support.
Uploading time to a GPU (4DGS/NeRF)? Rebase first — raw epoch ns overflows float32; upload
(t − t0) seconds as float32 via colmap4d.rebase_to_seconds_f32(t, mv.t0_ns()).
License
Metadata
Release files for colmap4d 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| colmap4d-1.0.2.tar.gz | 30.1 kB | Without provenance | Details for colmap4d-1.0.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| colmap4d-1.0.2-py3-none-any.whl | Python 3 | none | any | Details for colmap4d-1.0.2-py3-none-any.whl |
Total release size: 62.4 kB
Release files / colmap4d-1.0.2.tar.gz
| Download URL | colmap4d-1.0.2.tar.gz |
|---|---|
| Size | 30.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
316b424f02a5893d42bed547f90edcf1f8ce0185c2d4ac0f0926c10fc6ada314
|
|
BLAKE2b-256 checksum How to use checksums |
5c32de094e42089e66a61c8c9811907c7b19ccfee85548fe9ac1ca84ca6e6f3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.12
|
Release files / colmap4d-1.0.2-py3-none-any.whl
| Download URL | colmap4d-1.0.2-py3-none-any.whl |
|---|---|
| Size | 32.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8f5a8f0e959b17aa911d0f14e3f6b0a91f73a7f6ac692a23277dcce96494e8ae
|
|
BLAKE2b-256 checksum How to use checksums |
efe9e56c57f43cd5b3dc88409956e2f0e39f28fce1c228a3b2595495bdd02f4c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.12
|
Security for colmap4d 1.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.