Viser: Imperative, Web-based 3D Visualization in Python
Brent Yi, Chung Min Kim, Justin Kerr, Gina Wu, Rebecca Feng, Anthony Zhang, Jonas Kulhanek, Hongsuk Choi, Yi Ma, Matthew Tancik, Angjoo Kanazawa
TL;DR
Viser addresses the need for easy yet extensible 3D visualization in computer vision and robotics by offering a web-based viewer, scene primitives, and GUI components with an imperative Python API. Its architecture separates user-facing APIs from the web frontend, enabling bidirectional Python-web synchronization and real-time visualization. The approach blends general-purpose visualization with domain-specific capabilities, aiming to accelerate research and debugging on both offline data and real-time robotics. Limitations include WebSocket overhead and Python-only bindings, but the design prioritizes simplicity and integration with common Python workflows.
Abstract
We present Viser, a 3D visualization library for computer vision and robotics. Viser aims to bring easy and extensible 3D visualization to Python: we provide a comprehensive set of 3D scene and 2D GUI primitives, which can be used independently with minimal setup or composed to build specialized interfaces. This technical report describes Viser's features, interface, and implementation. Key design choices include an imperative-style API and a web-based viewer, which improve compatibility with modern programming patterns and workflows.
