From f306d2d37eb668362773e6b5e3d3ce0f012a9630 Mon Sep 17 00:00:00 2001 From: Sebastien Jourdain Date: Fri, 24 Feb 2023 17:22:35 -0700 Subject: [PATCH] docs(vtk): Update example with latest trame-vtk --- .../Applications/RemoteSelection/app.py | 69 +++++++++++++++---- .../06_vtk/Applications/SurfacePicking/app.py | 3 +- 2 files changed, 57 insertions(+), 15 deletions(-) diff --git a/examples/06_vtk/Applications/RemoteSelection/app.py b/examples/06_vtk/Applications/RemoteSelection/app.py index 6eafd998..a34c63d8 100644 --- a/examples/06_vtk/Applications/RemoteSelection/app.py +++ b/examples/06_vtk/Applications/RemoteSelection/app.py @@ -162,10 +162,16 @@ def update_figure(figure_size, scatter_x, scatter_y, **kwargs): @state.change("vtk_selection") def update_interactor(vtk_selection, **kwargs): if vtk_selection: + # remote view rw_interactor.SetInteractorStyle(interactor_selection) interactor_selection.StartSelect() + # local view + state.interactorSettings = VIEW_SELECT else: + # remote view rw_interactor.SetInteractorStyle(interactor_trackball) + # local view + state.interactorSettings = VIEW_INTERACT # ----------------------------------------------------------------------------- @@ -202,14 +208,39 @@ def on_chart_selection(selected_point_idxs): def on_box_selection_change(selection): global SELECTED_IDX + if selection.get("mode") == "remote": + actor.GetProperty().SetOpacity(1) + selector.SetArea( + int(renderer.GetPickX1()), + int(renderer.GetPickY1()), + int(renderer.GetPickX2()), + int(renderer.GetPickY2()), + ) + elif selection.get("mode") == "local": + camera = renderer.GetActiveCamera() + camera_props = selection.get("camera") + + # Sync client view to server one + camera.SetPosition(camera_props.get("position")) + camera.SetFocalPoint(camera_props.get("focalPoint")) + camera.SetViewUp(camera_props.get("viewUp")) + camera.SetParallelProjection(camera_props.get("parallelProjection")) + camera.SetParallelScale(camera_props.get("parallelScale")) + camera.SetViewAngle(camera_props.get("viewAngle")) + render_window.SetSize(selection.get("size")) + + actor.GetProperty().SetOpacity(1) + render_window.Render() + + area = selection.get("selection") + selector.SetArea( + int(area[0]), + int(area[2]), + int(area[1]), + int(area[3]), + ) - actor.GetProperty().SetOpacity(1) - selector.SetArea( - int(renderer.GetPickX1()), - int(renderer.GetPickY1()), - int(renderer.GetPickX2()), - int(renderer.GetPickY2()), - ) + # Common server selection s = selector.Select() n = s.GetNode(0) ids = dsa.vtkDataArrayToVTKArray(n.GetSelectionData().GetArray("SelectedIds")) @@ -220,7 +251,6 @@ def on_box_selection_change(selection): selection_extract.SetInputDataObject(1, s) selection_extract.Update() selection_actor.SetVisibility(1) - actor.GetProperty().SetOpacity(0.5) # Update scatter plot with selection @@ -267,6 +297,19 @@ def on_box_selection_change(selection): "interactive_quality": 80, } +VIEW_INTERACT = [ + {"button": 1, "action": "Rotate"}, + {"button": 2, "action": "Pan"}, + {"button": 3, "action": "Zoom", "scrollEnabled": True}, + {"button": 1, "action": "Pan", "alt": True}, + {"button": 1, "action": "Zoom", "control": True}, + {"button": 1, "action": "Pan", "shift": True}, + {"button": 1, "action": "Roll", "alt": True, "shift": True}, +] + +VIEW_SELECT = [{"button": 1, "action": "Select"}] + + # ----------------------------------------------------------------------------- # UI # ----------------------------------------------------------------------------- @@ -300,17 +343,15 @@ def on_box_selection_change(selection): style="border-right: 1px solid #ccc; position: relative;", ): view = vtk_widgets.VtkRemoteView( + # view = vtk_widgets.VtkLocalView( render_window, box_selection=("vtk_selection",), box_selection_change=(on_box_selection_change, "[$event]"), + # For VtkRemoteView **VTK_VIEW_SETTINGS, + # For VtkLocalView + interactor_settings=("interactorSettings", VIEW_SELECT), ) - # view = vtk_widgets.VtkLocalView( - # render_window, - # box_selection=("vtk_selection",), - # box_selection_change=(on_box_selection_change, "[$event]"), - # **VTK_VIEW_SETTINGS, - # ) ctrl.view_update = view.update ctrl.view_reset_camera = view.reset_camera vuetify.VCheckbox( diff --git a/examples/06_vtk/Applications/SurfacePicking/app.py b/examples/06_vtk/Applications/SurfacePicking/app.py index b5348561..6cb97e52 100644 --- a/examples/06_vtk/Applications/SurfacePicking/app.py +++ b/examples/06_vtk/Applications/SurfacePicking/app.py @@ -237,7 +237,8 @@ def update_tooltip(pickData, pixel_ratio, **kwargs): ) vuetify.VSelect( v_model=("colorMap", "erdc_rainbow_bright"), - items=("''|vtkColorPresetItems",), + # items=("''|vtkColorPresetItems",), # <= For trame-vtk<2.1 + items=("trame.utils.vtk.vtkColorPresetItems('')",), # <= for trame-vtk>=2.1 classes="ml-8", dense=True, hide_details=True,