diff --git a/apps/dash-vtk-explorer/demos/pyvista-point-cloud/demo.jpg b/apps/dash-vtk-explorer/demos/pyvista-point-cloud/demo.jpg index 5eb42c743..17387be77 100644 Binary files a/apps/dash-vtk-explorer/demos/pyvista-point-cloud/demo.jpg and b/apps/dash-vtk-explorer/demos/pyvista-point-cloud/demo.jpg differ diff --git a/apps/dash-vtk-explorer/demos/pyvista-point-cloud/requirements.txt b/apps/dash-vtk-explorer/demos/pyvista-point-cloud/requirements.txt index a88a332df..3823e0247 100644 --- a/apps/dash-vtk-explorer/demos/pyvista-point-cloud/requirements.txt +++ b/apps/dash-vtk-explorer/demos/pyvista-point-cloud/requirements.txt @@ -2,3 +2,4 @@ dash-vtk pyvista numpy +vtk \ No newline at end of file diff --git a/apps/dash-vtk-explorer/demos/pyvista-terrain-following-mesh/app.py b/apps/dash-vtk-explorer/demos/pyvista-terrain-following-mesh/app.py index b6dc35903..a77ffbc09 100644 --- a/apps/dash-vtk-explorer/demos/pyvista-terrain-following-mesh/app.py +++ b/apps/dash-vtk-explorer/demos/pyvista-terrain-following-mesh/app.py @@ -6,6 +6,7 @@ from dash.dependencies import Input, Output, State import random +import json import numpy as np import pyvista as pv from pyvista import examples @@ -44,6 +45,7 @@ def updateWarp(factor=1): vtk_view = dash_vtk.View( id="vtk-view", + pickingModes=["hover"], children=[ dash_vtk.GeometryRepresentation( id="vtk-representation", @@ -68,8 +70,19 @@ def updateWarp(factor=1): ], colorMapPreset="erdc_blue2green_muted", colorDataRange=color_range, - property={"edgeVisibility": True,}, - ) + property={"edgeVisibility": True}, + showCubeAxes=True, + cubeAxesStyle={"axisLabels": ["", "", "Altitude"]}, + ), + dash_vtk.GeometryRepresentation( + id="pick-rep", + actor={"visibility": False}, + children=[ + dash_vtk.Algorithm( + id="pick-sphere", vtkClass="vtkSphereSource", state={"radius": 100}, + ) + ], + ), ], ) @@ -96,6 +109,14 @@ def updateWarp(factor=1): value="erdc_rainbow_bright", ), ), + dbc.Col( + children=dcc.Checklist( + id="toggle-cube-axes", + options=[{"label": " Show axis grid", "value": "grid"},], + value=[], + labelStyle={"display": "inline-block"}, + ), + ), ], style={"height": "12%", "align-items": "center"}, ), @@ -103,12 +124,23 @@ def updateWarp(factor=1): html.Div(vtk_view, style={"height": "100%", "width": "100%"}), style={"height": "88%"}, ), + html.Pre( + id="tooltip", + style={ + "position": "absolute", + "bottom": "25px", + "left": "25px", + "zIndex": 1, + "color": "white", + }, + ), ], ) @app.callback( [ + Output("vtk-representation", "showCubeAxes"), Output("vtk-representation", "colorMapPreset"), Output("vtk-representation", "colorDataRange"), Output("vtk-polydata", "points"), @@ -116,11 +148,47 @@ def updateWarp(factor=1): Output("vtk-array", "values"), Output("vtk-view", "triggerResetCamera"), ], - [Input("dropdown-preset", "value"), Input("scale-factor", "value")], + [ + Input("dropdown-preset", "value"), + Input("scale-factor", "value"), + Input("toggle-cube-axes", "value"), + ], ) -def updatePresetName(name, scale_factor): +def updatePresetName(name, scale_factor, cubeAxes): points, polys, elevation, color_range = updateWarp(scale_factor) - return [name, color_range, points, polys, elevation, random.random()] + return [ + "grid" in cubeAxes, + name, + color_range, + points, + polys, + elevation, + random.random(), + ] + + +@app.callback( + [ + Output("tooltip", "children"), + Output("pick-sphere", "state"), + Output("pick-rep", "actor"), + ], + [Input("vtk-view", "clickInfo"), Input("vtk-view", "hoverInfo"),], +) +def onInfo(clickData, hoverData): + info = hoverData if hoverData else clickData + if info: + if ( + "representationId" in info + and info["representationId"] == "vtk-representation" + ): + return ( + [json.dumps(info, indent=2)], + {"center": info["worldPosition"]}, + {"visibility": True}, + ) + return dash.no_update, dash.no_update, dash.no_update + return [""], {}, {"visibility": False} if __name__ == "__main__": diff --git a/apps/dash-vtk-explorer/demos/pyvista-terrain-following-mesh/demo.jpg b/apps/dash-vtk-explorer/demos/pyvista-terrain-following-mesh/demo.jpg index 854769bb2..d9fc51ea5 100644 Binary files a/apps/dash-vtk-explorer/demos/pyvista-terrain-following-mesh/demo.jpg and b/apps/dash-vtk-explorer/demos/pyvista-terrain-following-mesh/demo.jpg differ diff --git a/apps/dash-vtk-explorer/demos/slice-rendering/demo.jpg b/apps/dash-vtk-explorer/demos/slice-rendering/demo.jpg index 9e5a52645..1a3e4fe54 100644 Binary files a/apps/dash-vtk-explorer/demos/slice-rendering/demo.jpg and b/apps/dash-vtk-explorer/demos/slice-rendering/demo.jpg differ diff --git a/apps/dash-vtk-explorer/demos/synthetic-volume-rendering/demo.jpg b/apps/dash-vtk-explorer/demos/synthetic-volume-rendering/demo.jpg index 2bbe317c3..7f9321af3 100644 Binary files a/apps/dash-vtk-explorer/demos/synthetic-volume-rendering/demo.jpg and b/apps/dash-vtk-explorer/demos/synthetic-volume-rendering/demo.jpg differ diff --git a/apps/dash-vtk-explorer/demos/usage-algorithm/demo.jpg b/apps/dash-vtk-explorer/demos/usage-algorithm/demo.jpg index c0def33ce..a8255197d 100644 Binary files a/apps/dash-vtk-explorer/demos/usage-algorithm/demo.jpg and b/apps/dash-vtk-explorer/demos/usage-algorithm/demo.jpg differ diff --git a/apps/dash-vtk-explorer/demos/usage-vtk-cfd/demo.jpg b/apps/dash-vtk-explorer/demos/usage-vtk-cfd/demo.jpg index 4a694e202..3a0ddd472 100644 Binary files a/apps/dash-vtk-explorer/demos/usage-vtk-cfd/demo.jpg and b/apps/dash-vtk-explorer/demos/usage-vtk-cfd/demo.jpg differ diff --git a/apps/dash-vtk-explorer/demos/volume-rendering/demo.jpg b/apps/dash-vtk-explorer/demos/volume-rendering/demo.jpg index 5a29c2dbe..0a5db8333 100644 Binary files a/apps/dash-vtk-explorer/demos/volume-rendering/demo.jpg and b/apps/dash-vtk-explorer/demos/volume-rendering/demo.jpg differ diff --git a/apps/dash-vtk-explorer/demos/volume-rendering/requirements.txt b/apps/dash-vtk-explorer/demos/volume-rendering/requirements.txt index 8feb89d4a..dc009662b 100644 --- a/apps/dash-vtk-explorer/demos/volume-rendering/requirements.txt +++ b/apps/dash-vtk-explorer/demos/volume-rendering/requirements.txt @@ -1,4 +1,5 @@ # If you skipped `pip install -e ../../`, the package below will be retrieved from pypi: dash-vtk +dash vtk numpy \ No newline at end of file diff --git a/apps/dash-vtk-explorer/requirements.txt b/apps/dash-vtk-explorer/requirements.txt index d27a97262..e80185b4b 100644 --- a/apps/dash-vtk-explorer/requirements.txt +++ b/apps/dash-vtk-explorer/requirements.txt @@ -1,2 +1,7 @@ --r ./demos/requirements.txt +dash-vtk +dash-bootstrap-components +pyvista +numpy +vtk +dash gunicorn \ No newline at end of file