Skip to content

Commit

Permalink
docs(vtk): Update example with latest trame-vtk
Browse files Browse the repository at this point in the history
  • Loading branch information
jourdain committed Feb 25, 2023
1 parent a5e2a5a commit f306d2d
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 15 deletions.
69 changes: 55 additions & 14 deletions examples/06_vtk/Applications/RemoteSelection/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


# -----------------------------------------------------------------------------
Expand Down Expand Up @@ -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"))
Expand All @@ -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
Expand Down Expand Up @@ -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
# -----------------------------------------------------------------------------
Expand Down Expand Up @@ -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(
Expand Down
3 changes: 2 additions & 1 deletion examples/06_vtk/Applications/SurfacePicking/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit f306d2d

Please sign in to comment.