Skip to content

Commit 0c45443

Browse files
committed
docs(vtklocal): add push camera example
1 parent 3d333ba commit 0c45443

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import vtk
2+
3+
from trame.app import TrameApp
4+
from trame.ui.vuetify3 import SinglePageLayout
5+
from trame.widgets import vuetify3, vtk as vtk_widgets
6+
7+
8+
class PushCamera(TrameApp):
9+
def __init__(self, server=None):
10+
super().__init__(server)
11+
self._setup_vtk()
12+
self._build_ui()
13+
14+
def _setup_vtk(self):
15+
render_window = vtk.vtkRenderWindow()
16+
render_window.SetOffScreenRendering(True)
17+
18+
renderer = vtk.vtkRenderer()
19+
render_window.AddRenderer(renderer)
20+
21+
cone = vtk.vtkConeSource()
22+
mapper = vtk.vtkPolyDataMapper()
23+
actor = vtk.vtkActor()
24+
25+
mapper.SetInputConnection(cone.GetOutputPort())
26+
actor.SetMapper(mapper)
27+
renderer.AddActor(actor)
28+
renderer.ResetCamera()
29+
30+
self.render_window = render_window
31+
self.camera = renderer.GetActiveCamera()
32+
33+
def _build_ui(self):
34+
with SinglePageLayout(self.server) as self.ui:
35+
self.ui.title.set_text("Client-side Camera Control")
36+
37+
with self.ui.content:
38+
with vuetify3.VContainer(
39+
fluid=True,
40+
classes="pa-0 fill-height",
41+
):
42+
vtk_widgets.VtkLocalView(self.render_window, ctx_name="view")
43+
44+
with self.ui.toolbar:
45+
vuetify3.VSpacer()
46+
vuetify3.VBtn("Set Top View", click=self.set_top_view)
47+
48+
def set_top_view(self):
49+
self.camera.SetPosition(0, 5, 0)
50+
self.camera.SetFocalPoint(0, 0, 0)
51+
self.camera.SetViewUp(0, 0, -1)
52+
53+
self.ctx.view.push_camera()
54+
# self.ctx.view.update()
55+
56+
57+
if __name__ == "__main__":
58+
app = PushCamera()
59+
app.server.start()

0 commit comments

Comments
 (0)