示例#1
0
 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()
示例#2
0
    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()
示例#3
0
文件: _vtk.py 项目: jackhuu/pyvista
"""
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)