def build_view_child(dimensions, spacing, origin, field, enabled, i, j, k, window, level): slice_prop = {"colorWindow": window, "colorLevel": level} child = [ dash_vtk.ShareDataSet( dash_vtk.ImageData( dimensions=dimensions, spacing=spacing, origin=origin, children=dash_vtk.PointData( dash_vtk.DataArray(registration="setScalars", values=field)), ), ), ] if "Volume" in enabled: child.append( dash_vtk.VolumeRepresentation( [dash_vtk.VolumeController(), dash_vtk.ShareDataSet()], )) if "i" in enabled: child.append( dash_vtk.SliceRepresentation( iSlice=int(round(i)), property=slice_prop, children=dash_vtk.ShareDataSet(), )) if "j" in enabled: child.append( dash_vtk.SliceRepresentation( jSlice=int(round(j)), property=slice_prop, children=dash_vtk.ShareDataSet(), )) if "k" in enabled: child.append( dash_vtk.SliceRepresentation( kSlice=int(round(k)), property=slice_prop, children=dash_vtk.ShareDataSet(), )) return child
# Use VTK to get some data data_source = vtkRTAnalyticSource() data_source.Update() # <= Execute source to produce an output dataset = data_source.GetOutput() # Use helper to get a volume structure that can be passed as-is to a Volume volume_state = to_volume_state(dataset) # No need to select field content = dash_vtk.View([ dash_vtk.VolumeRepresentation([ # GUI to control Volume Rendering # + Setup good default at startup dash_vtk.VolumeController(), # Actual volume dash_vtk.ShareDataSet([ dash_vtk.Volume(state=volume_state), ]), ]), dash_vtk.SliceRepresentation(iSlice=10, children=[ dash_vtk.ShareDataSet(), ]), dash_vtk.SliceRepresentation(jSlice=10, children=[ dash_vtk.ShareDataSet(), ]), dash_vtk.SliceRepresentation(kSlice=10, children=[ dash_vtk.ShareDataSet(), ]), ])
field = [random.random() * i for i in range(10 * 10 * 10)] content = dash_vtk.View( [ dash_vtk.VolumeRepresentation( [ dash_vtk.VolumeController(), dash_vtk.ShareDataSet( [ dash_vtk.ImageData( dimensions=[10, 10, 10], spacing=[1, 1, 1], origin=[-4, -4, -4], children=[ dash_vtk.PointData( [ dash_vtk.DataArray( registration="setScalars", values=field, ) ] ) ], ), ] ), ] ), dash_vtk.SliceRepresentation( property={"colorWindow": 500, "colorLevel": 200}, iSlice=5, children=[dash_vtk.ShareDataSet()], ),
children=dbc.Row([ dbc.Col(dbc.FormGroup([dbc.Label(label), component])) for label, component in sliders.items() ]), ) slice_property = {"colorWindow": 4095, "colorLevel": 1000} slice_view = dash_vtk.View( id="slice-view", cameraPosition=[1, 0, 0], cameraViewUp=[0, 0, -1], cameraParallelProjection=False, background=[0.9, 0.9, 1], children=[ dash_vtk.ShareDataSet(dash_vtk.Volume(state=volume_state)), dash_vtk.SliceRepresentation( id="slice-repr-i", iSlice=128, property=slice_property, children=dash_vtk.ShareDataSet(), ), dash_vtk.SliceRepresentation( id="slice-repr-j", jSlice=128, property=slice_property, children=dash_vtk.ShareDataSet(), ), dash_vtk.SliceRepresentation( id="slice-repr-k", kSlice=47,