slicer2.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. """Slice multiple datasets"""
  2. from vedo import Plotter, Text2D, load, dataurl, ScalarBar3D
  3. volumes = [dataurl+'vase.vti', dataurl+'embryo.slc', dataurl+'head.vti']
  4. volumes = load(volumes)
  5. cmaps = ['hot_r', 'gist_ncar_r', 'bone_r']
  6. ########################################################################
  7. def initfunc(iren, vol):
  8. vol.mode(1).cmap('k').alpha([0, 0, 0.15, 0, 0])
  9. txt = Text2D(data.filename[-20:], font='Calco')
  10. plt.at(iren).show(vol, vol.box(), txt)
  11. def func(widget, event):
  12. zs = int(widget.value)
  13. widget.title = f"z-slice = {zs}"
  14. msh = vol.zslice(zs)
  15. msh.cmap(cmaps[iren]).lighting("off")
  16. msh.name = "slice"
  17. sb = ScalarBar3D(msh, c='k')
  18. # sb = sb.clone2d("bottom-right", 0.08)
  19. plt.renderer = widget.renderer # make it the current renderer
  20. plt.remove("slice", "ScalarBar3D").add(msh, sb)
  21. return func # this is the actual function returned!
  22. ########################################################################
  23. plt = Plotter(shape=(1, len(volumes)), sharecam=False, bg2='lightcyan')
  24. for iren, data in enumerate(volumes):
  25. plt.add_slider(
  26. initfunc(iren, data), #func
  27. 0, data.dimensions()[2],
  28. value=0,
  29. show_value=False,
  30. pos=[(0.1,0.1), (0.25,0.1)],
  31. )
  32. plt.interactive().close()