Skip to main content

vtk-demo

Fancy VTK / PyVista scenes that show off VTK capabilities and performance: GPU instancing, composite datasets, PBR, transparency, huge point clouds, live simulations… plus the demo applications built on them (VTK.wasm + WebGPU in the browser with trame, standalone HTML exports, and Dear ImGui).

Install

pip install vtk-demo              # scenes only (vtk, pyvista)
pip install "vtk-demo[trame]"     # + web applications
pip install "vtk-demo[export]"    # + standalone HTML export
pip install "vtk-demo[all]"

Reusable scenes

vtk_demo.scenes is plain VTK and numpy, through VTK's Python friendly API (keyword constructors, snake_case properties, numpy backed arrays, >> pipelines). Every build_* function fills a vtkRenderer (actors, background, camera) and returns a few statistics:

import vtkmodules.vtkInteractionStyle  # noqa: F401
import vtkmodules.vtkRenderingOpenGL2  # noqa: F401
from vtkmodules.vtkRenderingCore import (
    vtkRenderer,
    vtkRenderWindow,
    vtkRenderWindowInteractor,
)

from vtk_demo.scenes import build_glyph_island

renderer = vtkRenderer()
n_actors, n_instances, n_triangles = build_glyph_island(renderer)
window = vtkRenderWindow(size=(1280, 800))
window.AddRenderer(renderer)
interactor = vtkRenderWindowInteractor(render_window=window)
interactor.Start()

PyVista only comes in with the applications, through a small adapter that builds a scene into a plotter and keeps the scene's camera:

import pyvista as pv
from vtk_demo.pyvista_adapter import add_scene
from vtk_demo.scenes import build_glyph_island

plotter = pv.Plotter()
n_actors, n_instances, n_triangles = add_scene(plotter, build_glyph_island)
plotter.show()
Module What it provides
scenes.instancing InstanceLayer: many copies of one mesh, drawn with a vtkGlyph3DMapper (glyph_actor), one actor per copy (instance_actors) or baked into one mesh (bake_layer)
scenes.composite composite_actor, scattered_collection, partitioned_collection: many meshes in one vtkCompositePolyDataMapper actor
scenes.island The 43k object voxel island, drawn four ways: build_glyph_island, build_actor_island, build_archipelago, build_partitioned_island
scenes.pbr build_pbr_scene: PBR materials and image based lighting
scenes.transparency build_transparency_scene: depth peeling stress test
scenes.galaxy build_galaxy_scene: tens of millions of points
scenes.wave WaveSurface, build_wave_scene: a mesh updated live by a simulation
scenes.isosurface Isosurface, build_isosurface_scene: live vtkFlyingEdges3D contour
scenes.bunny build_bunny_scene
scenes.benchmark build_sphere_mesh, build_sphere_actors: synthetic throughput scenes
scenes.primitives Shapes (cube, cylinder, cone, arrow, icosphere, super_ellipsoid, trefoil) and textures (stone_tiles_texture, image_texture)
scenes.core VTK and numpy helpers: mesh_actor, make_property, rgb, lookup_table, vtk_points, transformed, set_camera…
scenes.datasets bunny, lucy, head, sky_box: example data, downloaded once to ~/.cache/vtk-demo (or $VTK_DEMO_DATA)

Demo applications

vtk-demo list
vtk-demo run trame.glyph            # VTK.wasm on WebGL 2
vtk-demo run trame.glyph --webgpu   # WebGPU in the browser and on the server
vtk-demo run trame.galaxy --help

Demos are grouped by UI toolkit, under vtk_demo.apps:

  • trame: contour, galaxy, animation, pbr, pbr-legacy, transparency, glyph
  • export: bunny-html, a self-contained VTK.wasm HTML page
  • imgui: contour, the trame contour demo as a native desktop window

Every demo is also a runnable module, e.g. python -m vtk_demo.apps.trame.glyph.

The SimpleViewer based trame demos report first frame and interaction times: see vtk_demo/apps/trame/observability.py (--obs-log, --obs-verbose, --no-hud).

Each demo with its default options, VTK.wasm (or vtk.js) on WebGL 2 in Chrome:

trame.contour: isosurface of a CT scan, filtered on the server trame.galaxy: millions of points with VTK.wasm 64-bit
trame.contour trame.galaxy
trame.animation: wave equation stepped in numpy, streamed live trame.glyph: 43k object voxel island, GPU instancing
trame.animation trame.glyph
trame.pbr: PBR materials and image based lighting trame.pbr-legacy: the same scene with vtk.js
trame.pbr trame.pbr-legacy
trame.transparency: depth peeling stress test export.bunny-html: self-contained HTML page, no server
trame.transparency export.bunny-html

Notes

  • --webgpu also asks the server to render with WebGPU, which needs a VTK built with VTK_ENABLE_WEBGPU=ON; otherwise the server falls back to OpenGL, as shown in the chip when rendering remotely.
  • VTK's WebGPU backend has no PBR shaders yet: pbr --webgpu is Phong shaded.
  • The uv setup (uv sync, nox, CI) pins a VTK nightly from wheels.vtk.org ([tool.uv] in pyproject.toml): with VTK 9.7.1, VTK.wasm keeps drawing the first frame of trame.animation. pip install vtk-demo uses the latest VTK release instead; to get a nightly with pip: pip install --pre --extra-index-url https://wheels.vtk.org "vtk>9.7.1".

Contributing

See CONTRIBUTING.md for the development setup, how to add a demo and how releases are made.

License

Apache License 2.0

Metadata

Release files for vtk-demo 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vtk-demo 0.1.0
File Size Uploaded Provenance Actions
vtk_demo-0.1.0.tar.gz 50.1 kB With provenance Details for vtk_demo-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for vtk-demo 0.1.0
File Interpreter ABI Platform Actions
vtk_demo-0.1.0-py3-none-any.whl Python 3 none any Details for vtk_demo-0.1.0-py3-none-any.whl

Total release size: 115.2 kB

Release files / vtk_demo-0.1.0.tar.gz

Download URL vtk_demo-0.1.0.tar.gz
Size 50.1 kB
Tags Source
SHA-256 checksum
How to use checksums
9a497bd93c3859e69ed8cd150698721f003f2d676460cc03426161c1d0d097d9
BLAKE2b-256 checksum
How to use checksums
c0a08e0dfabb43d1b4b5d492e0e2644ce1ab7b062f552587d707cf1061c69e4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / vtk_demo-0.1.0-py3-none-any.whl

Download URL vtk_demo-0.1.0-py3-none-any.whl
Size 65.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0f48c5a7ac4153527defc3f966d7173c0abf981f9ba686dd23d20c9204e8b751
BLAKE2b-256 checksum
How to use checksums
3409af6737aad5207f306cea433dd54fbd31520c146c22cddb1943dea326dd25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Security for vtk-demo 0.1.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for vtk_demo-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page