PyVista-like API for VTK.wasm — bring intuitive 3D visualization to the browser using WebAssembly.
| Try it with JupyterLite | Try it with Stlite | Try it with marimo |
|---|---|---|
![]() |
![]() |
![]() |
- Table of Contents
- Install
- Usage
- Presentation
- Differences from pyvista-js
- Citation
- Contributing
- License
pip install pyvista-wasmFor Pyodide/stlite:
import micropip
await micropip.install("pyvista-wasm")import pyvista_wasm as pv
plotter = pv.Plotter()
plotter.add_mesh(pv.Sphere(), color="red")
plotter.show()The PyCon JP 2026 talk introduces pyvista-wasm with live demos and a deep dive into the WASM rendering architecture:
This project replaces the vtk.js rendering backend used in pyvista-js with VTK.wasm (@kitware/vtk-wasm npm package).
Key differences:
- Rendering backend: VTK.wasm (WebAssembly port of VTK C++) instead of vtk.js (pure JavaScript reimplementation)
- API style: VTK.wasm uses
vtk.vtkRenderer()factory functions on a namespace object, vs vtk.js'svtk.Rendering.Core.vtkRenderer.newInstance()hierarchy - Initialization: VTK.wasm requires async initialization via
vtkWASM.createNamespace()to load the WASM binary - Feature parity: VTK.wasm provides access to the full VTK C++ API, enabling features not available in vtk.js
If you use pyvista-wasm in academic or project work, please cite it. See CITATION.cff for the full citation metadata, or use the BibTeX entry below:
@software{Koyama2026pyvista-wasm,
author = {Tetsuo Koyama},
title = {{pyvista-wasm: PyVista-like API for VTK.wasm}},
year = {2026},
version = {0.9.0},
license = {Apache-2.0},
url = {https://github.com/tkoyama010/pyvista-wasm}
}Contributions are welcome! Please open an issue or pull request on GitHub. See CONTRIBUTORS.md for the list of contributors.
Apache License 2.0 © Tetsuo Koyama


