Skip to content

Commit 7a85d2f

Browse files
committed
docs(example): add emit_memory=True prop
1 parent 6bb7cfc commit 7a85d2f

5 files changed

Lines changed: 157 additions & 0 deletions

File tree

examples/pv/cone.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def _ui(self):
4242
self.html_view = vtklocal.LocalView(
4343
self.render_window,
4444
cache_size=("cache", 0),
45+
emit_memory=True,
4546
memory_vtk="mem_vtk = $event",
4647
memory_arrays="mem_blob = $event",
4748
)

examples/vtk/cone.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ def _ui(self):
9191
self.render_window,
9292
throttle_rate=20,
9393
cache_size=("cache", 0),
94+
emit_memory=True,
9495
memory_vtk="mem_vtk = $event",
9596
memory_arrays="mem_blob = $event",
9697
)

examples/vtk/file_viewer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ def _build_ui(self):
9292
ctx_name="view",
9393
throttle_rate=20,
9494
cache_size=("cache", 0),
95+
emit_memory=True,
9596
memory_vtk="mem_vtk = $event",
9697
memory_arrays="mem_blob = $event",
9798
)

examples/vtk/invoke.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ def _ui(self):
106106
self.render_window,
107107
throttle_rate=20,
108108
cache_size=("cache", 0),
109+
emit_memory=True,
109110
memory_vtk="mem_vtk = $event",
110111
memory_arrays="mem_blob = $event",
111112
)

examples/vtk/many_actors.py

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
import random
2+
3+
from trame.app import get_server
4+
from trame.ui.html import DivLayout
5+
from trame.widgets import html, client
6+
from trame_vtklocal.widgets import vtklocal
7+
from trame.decorators import TrameApp, change, trigger
8+
9+
from vtkmodules.vtkFiltersSources import vtkSphereSource
10+
from vtkmodules.vtkRenderingCore import (
11+
vtkActor,
12+
vtkPolyDataMapper,
13+
vtkRenderer,
14+
vtkRenderWindow,
15+
vtkRenderWindowInteractor,
16+
)
17+
18+
# Required for vtk factory
19+
import vtkmodules.vtkRenderingOpenGL2 # noqa
20+
from vtkmodules.vtkInteractionStyle import vtkInteractorStyleSwitch # noqa
21+
22+
CLIENT_TYPE = "vue3"
23+
24+
# -----------------------------------------------------------------------------
25+
# VTK pipeline
26+
# -----------------------------------------------------------------------------
27+
28+
29+
def create_vtk_pipeline():
30+
renderer = vtkRenderer()
31+
renderWindow = vtkRenderWindow()
32+
renderWindow.AddRenderer(renderer)
33+
34+
renderWindowInteractor = vtkRenderWindowInteractor()
35+
renderWindowInteractor.SetRenderWindow(renderWindow)
36+
renderWindowInteractor.GetInteractorStyle().SetCurrentStyleToTrackballCamera()
37+
actors = []
38+
39+
for i in range(1000):
40+
color = (random.random(), random.random(), random.random())
41+
center = (random.random() * 100, random.random() * 100, random.random() * 100)
42+
radius = random.random() + 0.5
43+
sphere = vtkSphereSource(
44+
center=center, radius=radius, phi_resolution=20, theta_resolution=20
45+
)
46+
47+
mapper = vtkPolyDataMapper(input_connection=sphere.output_port)
48+
actor = vtkActor(mapper=mapper)
49+
renderer.AddActor(actor)
50+
actor.property.color = color
51+
actors.append(actor)
52+
53+
renderer.SetBackground(0.1, 0.2, 0.4)
54+
renderer.ResetCamera()
55+
56+
return renderWindow, actors
57+
58+
59+
# -----------------------------------------------------------------------------
60+
# GUI
61+
# -----------------------------------------------------------------------------
62+
63+
64+
@TrameApp()
65+
class DemoApp:
66+
def __init__(self, server=None):
67+
self.server = get_server(server, client_type=CLIENT_TYPE)
68+
69+
self.render_window, self.actors = create_vtk_pipeline()
70+
self.server.state.update(dict(mem_blob=0, mem_vtk=0))
71+
self.html_view = None
72+
self.ui = self._ui()
73+
# print(self.ui)
74+
75+
@trigger("export")
76+
def export(self, format):
77+
return self.html_view.export(format)
78+
79+
def reset_camera(self):
80+
self.html_view.reset_camera()
81+
82+
@change("opacity")
83+
def on_opacity_change(self, opacity, **kwargs):
84+
for actor in self.actors:
85+
actor.property.opacity = float(opacity)
86+
self.html_view.update_throttle()
87+
88+
def _ui(self):
89+
with DivLayout(self.server) as layout:
90+
client.Style("body { margin: 0; }")
91+
with html.Div(
92+
style="position: absolute; left: 0; top: 0; width: 100vw; height: 100vh;"
93+
):
94+
self.html_view = vtklocal.LocalView(
95+
self.render_window,
96+
throttle_rate=20,
97+
cache_size=("cache", 0),
98+
emit_memory=True,
99+
memory_vtk="mem_vtk = $event",
100+
memory_arrays="mem_blob = $event",
101+
)
102+
html.Div(
103+
"Scene: {{ (mem_vtk / 1024).toFixed(1) }}KB - "
104+
"Arrays: {{ (mem_blob / 1024).toFixed(1) }}KB - "
105+
"cache: {{ (cache/1024).toFixed(1) }}KB ",
106+
style=(
107+
"position: absolute; top: 1rem; left: 1rem;"
108+
"z-index: 10; background: white;"
109+
"padding: 1rem; border-radius: 1rem;"
110+
),
111+
)
112+
html.Input(
113+
type="range",
114+
v_model=("opacity", 1),
115+
min=0.01,
116+
max=1,
117+
step=0.01,
118+
style="position: absolute; top: 1rem; right: 1rem; z-index: 10;",
119+
)
120+
html.Input(
121+
type="range",
122+
v_model=("cache", 0),
123+
min=0,
124+
max=100000,
125+
step=1000,
126+
style="position: absolute; top: 1rem; right: 10rem; z-index: 10;",
127+
)
128+
html.Button(
129+
"Export json",
130+
click="utils.download('scene-wasm.json', trigger('export', ['json']), 'application/octet-stream')",
131+
style="position: absolute; top: 3rem; right: 1rem; z-index: 10;",
132+
)
133+
html.Button(
134+
"Export zip",
135+
click="utils.download('scene-wasm.zip', trigger('export', ['zip']), 'application/octet-stream')",
136+
style="position: absolute; top: 3rem; right: 7rem; z-index: 10;",
137+
)
138+
html.Button(
139+
"Reset Camera",
140+
click=self.reset_camera,
141+
style="position: absolute; top: 3rem; right: 14rem; z-index: 10;",
142+
)
143+
144+
return layout
145+
146+
147+
# -----------------------------------------------------------------------------
148+
# Main
149+
# -----------------------------------------------------------------------------
150+
151+
if __name__ == "__main__":
152+
app = DemoApp()
153+
app.server.start()

0 commit comments

Comments
 (0)