Skip to content

Commit 3384bb7

Browse files
committed
docs: add pyvista example with mapper input issue
1 parent c71e81c commit 3384bb7

1 file changed

Lines changed: 78 additions & 0 deletions

File tree

examples/pyvista/issue-33.py

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# import os
2+
import pyvista as pv
3+
from pyvista import examples
4+
5+
from trame.app import get_server
6+
from trame.ui.html import DivLayout
7+
from trame.widgets import html, client, vtk as vtk_widgets
8+
from trame_vtklocal.widgets import vtklocal
9+
10+
WASM = True # "USE_WASM" in os.environ
11+
save_ok = False
12+
save_ko = False
13+
14+
# -----------------------------------------------------------------------------
15+
p = pv.Plotter()
16+
p.ren_win.OffScreenRenderingOn()
17+
18+
19+
def setup_pyvista():
20+
p.show_axes()
21+
widgets = [r.axes_widget for r in p.renderers if hasattr(r, "axes_widget")]
22+
# p.ren_win.OffScreenRenderingOn()
23+
24+
return p.ren_win, widgets
25+
26+
27+
# -----------------------------------------------------------------------------
28+
29+
30+
class TrameApp:
31+
def __init__(self, server=None):
32+
self.server = get_server(server, client_type="vue3")
33+
self.render_window, self.widgets = setup_pyvista()
34+
self.html_view = None
35+
self.ui = self._ui()
36+
if save_ok:
37+
self.add_mesh()
38+
self.html_view.update()
39+
self.html_view.save("/Users/sebastien.jourdain/Desktop/scene_ok.zip")
40+
41+
def add_mesh(self):
42+
mesh = examples.download_st_helens()
43+
warped = mesh.warp_by_scalar("Elevation")
44+
surf = warped.extract_surface().triangulate()
45+
surf = surf.decimate_pro(0.75) # reduce the density of the mesh by 75%
46+
p.add_mesh(surf, cmap="gist_earth")
47+
p.reset_camera()
48+
if self.html_view:
49+
self.html_view.update()
50+
if save_ko:
51+
self.html_view.save("/Users/sebastien.jourdain/Desktop/scene.zip")
52+
53+
def _ui(self):
54+
with DivLayout(self.server) as layout:
55+
html.Button(
56+
"Add Mesh",
57+
click=self.add_mesh,
58+
style={"position": "absolute", "z-index": 999},
59+
)
60+
client.Style("body { margin: 0; }")
61+
with html.Div(
62+
style="position: absolute; left: 0; top: 0; width: 100vw; height: 100vh;"
63+
):
64+
if WASM:
65+
self.html_view = vtklocal.LocalView(self.render_window)
66+
else:
67+
self.html_view = vtk_widgets.VtkRemoteView(
68+
self.render_window, interactive_ratio=1
69+
)
70+
71+
return layout
72+
73+
74+
# -----------------------------------------------------------------------------
75+
76+
if __name__ == "__main__":
77+
app = TrameApp()
78+
app.server.start()

0 commit comments

Comments
 (0)