3D visualization + Python
Project description
viser
viser
is a library for interactive 3D visualization in Python.
Features include:
- API for visualizing 3D primitives
- GUI building blocks: buttons, checkboxes, text inputs, sliders, etc.
- Scene interaction tools (clicks, selection, transform gizmos)
- Programmatic camera control and rendering
- An entirely web-based client, for easy use over SSH!
For usage and API reference, see our documentation.
Installation
You can install viser
with pip
:
pip install viser
To include example dependencies:
pip install viser[examples]
# Clone the repository.
git clone https://github.com/nerfstudio-project/viser.git
# Install the package.
# You can also install via pip: `pip install viser`.
cd ./viser
pip install -e .[examples]
# Run an example.
python ./examples/02_gui.py
After an example script is running, you can connect by navigating to the printed
URL (default: http://localhost:8080
).
See also: our development docs.
Examples
Point cloud visualization
https://github.com/nerfstudio-project/viser/assets/6992947/df35c6ee-78a3-43ad-a2c7-1dddf83f7458
Source: ./examples/07_record3d_visualizer.py
Gaussian splatting visualization
https://github.com/nerfstudio-project/viser/assets/6992947/c51b4871-6cc8-4987-8751-2bf186bcb1ae
Source: WangFeng18/3d-gaussian-splatting and heheyas/gaussian_splatting_3d.
SMPLX visualizer
https://github.com/nerfstudio-project/viser/assets/6992947/78ba0e09-612d-4678-abf3-beaeeffddb01
Source: ./example/08_smpl_visualizer.py
Acknowledgements
viser
is heavily inspired by packages like
Pangolin,
rviz,
meshcat, and
Gradio.
It's made possible by several open-source projects.
The web client is implemented using React, with:
- Vite / Rollup for bundling
- three.js via react-three-fiber and drei
- Mantine for UI components
- zustand for state management
- vanilla-extract for stylesheets
The Python API communicates via msgpack and websockets.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.