Replies: 1 comment 1 reply
-
|
I noticed a couple of issues in your code:
Here is a full working example based on the current cone source example. It works for both local and remote view for me: r"""
Installation requirements:
pip install trame trame-vuetify trame-vtk vtk
"""
from trame.app import get_server
from trame.decorators import TrameApp, change
from trame.widgets import vuetify, vtk as vtk_widgets
from trame.ui.vuetify import SinglePageLayout
from vtkmodules.vtkFiltersSources import vtkConeSource
from vtkmodules.vtkRenderingCore import (
vtkRenderer,
vtkRenderWindow,
vtkRenderWindowInteractor,
vtkPolyDataMapper,
vtkActor,
)
from vtkmodules.vtkCommonDataModel import vtkPlane
from vtkmodules.vtkFiltersCore import vtkClipPolyData
# VTK factory initialization
from vtkmodules.vtkInteractionStyle import vtkInteractorStyleSwitch # noqa
import vtkmodules.vtkRenderingOpenGL2 # noqa
# -----------------------------------------------------------------------------
@TrameApp()
class Cone:
def __init__(self, server_or_name=None):
self.server = get_server(server_or_name, client_type="vue2")
vtk_objects = self._vtk_setup()
self._vtk_rw = vtk_objects['renderWindow']
self._vtk_cone = vtk_objects['cone']
self._clip_plane = vtk_objects['plane']
self.ui = self._generate_ui()
@property
def ctrl(self):
return self.server.controller
@property
def state(self):
return self.server.state
@change("origin")
def on_origin_change(self, origin, **kwargs):
self._clip_plane.SetOrigin(origin, 0, 0)
self.ctrl.view_update()
@property
def origin(self):
return self.state.origin
@origin.setter
def origin(self, v):
with self.state:
self.state.origin = v
def reset_origin(self):
self.origin = 0
def _vtk_setup(self):
renderer = vtkRenderer()
renderWindow = vtkRenderWindow()
renderWindow.AddRenderer(renderer)
renderWindow.OffScreenRenderingOn()
renderWindowInteractor = vtkRenderWindowInteractor()
renderWindowInteractor.SetRenderWindow(renderWindow)
renderWindowInteractor.GetInteractorStyle().SetCurrentStyleToTrackballCamera()
cone_source = vtkConeSource()
cone_source.SetResolution(6)
clip_plane = vtkPlane()
clip_plane.SetOrigin(0, 0, 0)
clip_plane.SetNormal(1, 0, 0)
clipper = vtkClipPolyData()
clipper.SetInputConnection(cone_source.GetOutputPort())
clipper.SetClipFunction(clip_plane)
mapper = vtkPolyDataMapper()
actor = vtkActor()
mapper.SetInputConnection(clipper.GetOutputPort())
actor.SetMapper(mapper)
renderer.AddActor(actor)
renderer.ResetCamera()
renderWindow.Render()
vtk_objects = {
"renderWindow": renderWindow,
"cone": cone_source,
"plane": clip_plane,
"clipper": clipper,
"mapper": mapper,
"actor": actor,
}
return vtk_objects
def _generate_ui(self):
with SinglePageLayout(self.server) as layout:
layout.title.set_text("Trame demo")
with layout.toolbar as toolbar:
toolbar.dense = True
vuetify.VSpacer()
vuetify.VSlider(
v_model=("origin", 0),
min=0,
max=0.5,
step=0.01,
hide_details=True,
style="max-width: 300px;",
)
with vuetify.VBtn(icon=True, click=self.reset_origin):
vuetify.VIcon("mdi-lock-reset")
with vuetify.VBtn(icon=True, click=self.ctrl.view_reset_camera):
vuetify.VIcon("mdi-crop-free")
with layout.content:
with vuetify.VContainer(fluid=True, classes="pa-0 fill-height"):
view = vtk_widgets.VtkRemoteView(self._vtk_rw)
self.ctrl.view_update = view.update
self.ctrl.view_reset_camera = view.reset_camera
return layout
def main(**kwargs):
cone = Cone()
cone.server.start(**kwargs)
if __name__ == "__main__":
main() |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello!
I am trying to make a clipping plane using the simple cone example. I want to make the slider that changes the resolution move the clipping plane through the cone.
When I am using
vtk_widgets.VtkLocalView(renderWindow)the slider does nothing. If I switch views tovtk_widgets.VtkRemoteView(renderWindow)it seg faults.Here is my code:
Beta Was this translation helpful? Give feedback.
All reactions