Skip to content

Running a ParaView visualization ​

With ParaView things are different as ParaView is not available via pip install. Technically it is available via conda and can be used as such, but for this hands-on we will be using ParaView downloaded from Kitware Website.

Steps needed ​

  1. Download ParaView 5.13.3 or newer for your system.
  2. Create a new virtual environment compatible with the downloaded ParaView.
  3. Install the trame pieces that you need.
  4. Run pvpython with the --venv argument so the trame import could be resolved.

Exact command lines and steps ​

Based on which version of ParaView you've downloaded you will have to create a virtual environment with either python 3.10 or 3.12.

bash
uv venv -p 3.10 .pv-venv
bash
# Activate venv 
source .pv-venv/bin/activate

# Install dependencies
uv pip install trame trame-vuetify trame-vtk
py
from paraview import simple

from trame.app import get_server
from trame.ui.vuetify3 import SinglePageLayout
from trame.widgets import vuetify3 as v3, paraview as pvw
from trame.decorators import TrameApp, change


@TrameApp()
class PVApp:
    def __init__(self, server=None):
        self.server = get_server(server)

        # ParaView
        self.cone = simple.Cone()
        self.representation = simple.Show()
        self.view = simple.Render()

        # GUI
        self._build_ui()

    @property
    def ctrl(self):
        return self.server.controller

    @change("resolution")
    def on_change(self, resolution, **_):
        self.cone.Resolution = resolution
        self.ctrl.view_update()

    def _build_ui(self):
        with SinglePageLayout(self.server, full_height=True) as layout:
            with layout.toolbar as tb:
                tb.density = "compact"
                v3.VSpacer()
                v3.VSlider(
                    v_model=("resolution", 6),
                    min=3,
                    max=60,
                    step=1,
                    density="compact",
                    hide_details=True,
                    classes="mx-4",
                )
                v3.VBtn(
                    icon="mdi-crop-free",
                    click=self.ctrl.view_reset_camera,
                )

            with layout.content:
                with v3.VContainer(fluid=True, classes="ma-0 pa-0 h-100"):
                    with pvw.VtkRemoteView(self.view, interactive_ratio=1) as view:
                        self.ctrl.view_update = view.update
                        self.ctrl.view_reset_camera = view.reset_camera


if __name__ == "__main__":
    app = PVApp()
    app.server.start()
python
# shortcut to pvpython
export PVPYTHON=/Applications/ParaView-5.13.3.app/Contents/bin/pvpython 

# Run from repo
$PVPYTHON --venv .pv-venv ./code/04-visualization-3d/05-paraview-cone.py

Result ​