def __init__(self): self.colour = (0.0, 0.0, 1.0) self.opacity = 1 self.size = 15.0 self.orientation = "AXIAL" self.spacing = (1, 1, 1) self.position = (0, 0, 0) if vtkVersion().GetVTKVersion() > '5.8.0': self.mapper = vtkImageSliceMapper() cursor_property = vtkImageProperty() cursor_property.SetInterpolationTypeToNearest() self.actor = vtkImageSlice() self.actor.SetMapper(self.mapper) self.actor.SetProperty(cursor_property) else: self.actor = vtkImageActor() self.mapper = None self._build_actor() self._calculate_area_pixels()
def create_volume(self): if self._actor is None: if int(ses.Session().rendering) == 0: self._volume_mapper = vtkFixedPointVolumeRayCastMapper() #volume_mapper.AutoAdjustSampleDistancesOff() self._volume_mapper.IntermixIntersectingGeometryOn() pix_diag = 2.0 self._volume_mapper.SetImageSampleDistance(0.25) self._volume_mapper.SetSampleDistance(pix_diag / 5.0) else: self._volume_mapper = vtkGPUVolumeRayCastMapper() self._volume_mapper.UseJitteringOn() if Version(vtkVersion().GetVTKVersion()) > Version('8.0'): self._volume_mapper.SetBlendModeToIsoSurface() # else: # isosurfaceFunc = vtk.vtkVolumeRayCastIsosurfaceFunction() # isosurfaceFunc.SetIsoValue(127) # self._volume_mapper = vtk.vtkVolumeRayCastMapper() # self._volume_mapper.SetVolumeRayCastFunction(isosurfaceFunc) self._flip = vtkImageFlip() self._flip.SetInputData(self.mask.imagedata) self._flip.SetFilteredAxis(1) self._flip.FlipAboutOriginOn() self._volume_mapper.SetInputConnection(self._flip.GetOutputPort()) self._volume_mapper.Update() r, g, b = self.colour self._color_transfer = vtkColorTransferFunction() self._color_transfer.RemoveAllPoints() self._color_transfer.AddRGBPoint(0.0, 0, 0, 0) self._color_transfer.AddRGBPoint(254.0, r, g, b) self._color_transfer.AddRGBPoint(255.0, r, g, b) self._piecewise_function = vtkPiecewiseFunction() self._piecewise_function.RemoveAllPoints() self._piecewise_function.AddPoint(0.0, 0.0) self._piecewise_function.AddPoint(127, 1.0) self._volume_property = vtkVolumeProperty() self._volume_property.SetColor(self._color_transfer) self._volume_property.SetScalarOpacity(self._piecewise_function) self._volume_property.ShadeOn() self._volume_property.SetInterpolationTypeToLinear() self._volume_property.SetSpecular(0.75) self._volume_property.SetSpecularPower(2) if not self._volume_mapper.IsA("vtkGPUVolumeRayCastMapper"): self._volume_property.SetScalarOpacityUnitDistance(pix_diag) else: if Version(vtkVersion().GetVTKVersion()) > Version('8.0'): self._volume_property.GetIsoSurfaceValues().SetValue( 0, 127) self._actor = vtkVolume() self._actor.SetMapper(self._volume_mapper) self._actor.SetProperty(self._volume_property) self._actor.Update()
""" Import from vtk. These are the modules within vtk that must be loaded across pyvista. Here, we attempt to import modules using the VTK9 ``vtkmodules`` package, which lets us only have to import from select modules and not the entire library. """ # Checking for VTK9 here even though 8.2 contains vtkmodules. There # are enough idiosyncrasies to VTK 8.2, and supporting it would lead # to obscure code. try: from vtkmodules.vtkCommonCore import vtkVersion VTK9 = vtkVersion().GetVTKMajorVersion() >= 9 except ImportError: # pragma: no cover VTK9 = False if VTK9: from vtkmodules.vtkInteractionWidgets import ( vtkScalarBarWidget, vtkSplineWidget, vtkSphereWidget, vtkTexturedButtonRepresentation2D, vtkButtonWidget, vtkLineWidget, vtkSliderRepresentation2D, vtkSliderWidget, vtkImplicitPlaneWidget, vtkPlaneWidget, vtkBoxWidget, vtkOrientationMarkerWidget) from vtkmodules.vtkRenderingFreeType import vtkVectorText from vtkmodules.vtkRenderingLabel import (vtkPointSetToLabelHierarchy, vtkLabelPlacementMapper) from vtkmodules.vtkRenderingVolume import ( vtkFixedPointVolumeRayCastMapper, vtkGPUVolumeRayCastMapper)