Skip to content

Repository files navigation

Open4D: tools for 4D spatial data

Python Ubuntu License

Open4D aims to provide reusable, high-performance libraries and tools for modern spatial representations, including point clouds, triangle meshes, Gaussian splats, and future spatial data formats. Our goal is to create a common open-source infrastructure that accelerates research and development across applications in XR, robotics, physical AI, autonomous systems, digital twins, graphics, vision, and spatial computing.

A reference mesh beside decoded results from N4MC, QNDF, TVMC, and TSMC, coloured by distance from the reference

A reference sequence beside results from four research codecs. Colour shows distance from the reference.

Core features

  • A small Python model for frames and finite sequences, over geometry that may be a triangle mesh, a point cloud, or a Gaussian cloud.
  • One-file OpenUSD and Open4D codec containers, plus .obj/.ply import paths.
  • A viewer for inspecting, playing, scrubbing, and exporting mesh sequences. It runs on macOS, Linux, and Windows and does not need a GPU.
  • A comparison tool that measures a decoded sequence against its reference and displays both under one camera.
  • Research codecs for mesh compression, Gaussian-splatting reconstruction and streaming, and Open3D and Unity integrations. These larger components still have their own setup and dependencies.

Quick start

The viewer's normal input is one 4D sequence file:

git clone https://github.com/open4dfoundation/Open4D.git
cd Open4D
python -m venv .venv
source .venv/bin/activate            # Windows: .venv\Scripts\activate
python -m pip install -e '.[player,usd]'

# does it load?
python examples/visualization/visualize_sequence.py capture.usdc --info
# play it
python examples/visualization/visualize_sequence.py capture.usdc

Try it on the 10 basketball frames the TVMC codec vendors, if you have no sequence of your own to hand:

python examples/visualization/visualize_sequence.py \
    open4d/codecs/tvmc/arap-volume-tracking/data/basketball_player \
    --up y --fps 10 --azimuth 180

The Open4D sequence viewer playing a ten-frame mesh sequence

In Python:

import open4d

with open4d.load("capture.usdc") as sequence:
    print(len(sequence), sequence.duration, sequence.fps)
    open4d.visualize(sequence)

Project status: Open4D is early research software. The core data model, viewer, comparison tool, and individual research components work today, but the shared API and complete cross-codec workflows are still being built.

Release safety: redistribution is currently blocked while the third-party provenance and license audit is incomplete. See THIRD_PARTY.md.

Documentation

Requirements and installation The baseline, the one codec dependency set, GPU extras, and what each module adds
Viewer and comparison guide Supported inputs, flags, controls, reading the error numbers, and OpenUSD packing
Python API Loading, saving, the codec registry, and device selection
Components Every codec, reconstruction module, and integration, with links to their own READMEs
Artifacts policy What not to commit, and what a published result must record

Repository layout

open4d/
├── core/            shared temporal geometry and sequence abstractions
├── io/              public mesh-file and manifested-directory I/O
├── codec/           shared sequence codec API and adapters
├── visualization/   public viewer and GIF renderer
├── torch_ops/       optional Torch geometry helpers
├── codecs/          draco, faster_vdmc, klt, n4mc, qndf, qndf_int8, tsmc, tvmc, vdmc
└── reconstruction/  rgbd, queen, 3dgstream, vega, rerf, gs_tools, streamer
integrations/        open3d, unity
examples/            runnable sequence loading, visualization, and comparison
scripts/             repository-level setup utilities
docs/                requirements, API, components, and repository policies

How the Open4D repository's data, codec, evaluation, and playback components fit together

Contributing

Contributions are welcome, especially around shared data abstractions, common metrics, codec adapters, documentation, and performance. Keep codec dependencies isolated and document any new binary fixture or external artifact alongside the code that consumes it. Please contact the maintainers before adding a large dataset, checkpoint, or third-party source tree. See CONTRIBUTING.md.

License and citation

Open4D is distributed under the MIT License and is intended to be useful in academic, educational, and commercial projects. Bundled third-party components and submodules remain subject to their respective license terms.

If Open4D contributes to published research, please acknowledge the project using the repository's citation metadata, and cite the original papers for any individual codecs, datasets, or algorithms used in your work.

About

This repository contains code to process, compress, store, stream, and visualize dynamic and time-varying 4D geometry data.

Topics

Resources

Contributing

Security policy

Stars

112 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages