def test_vtk_pyexception_deadlock(self): """Test if VTK has been patched to release the GIL during all VTK method calls. """ import vtk # this gives floats by default s = vtk.vtkImageGridSource() c1 = vtk.vtkImageCast() c1.SetOutputScalarTypeToShort() c1.SetInput(s.GetOutput()) c2 = vtk.vtkImageCast() c2.SetOutputScalarTypeToFloat() c2.SetInput(s.GetOutput()) m = vtk.vtkImageMathematics() # make sure we are multi-threaded if m.GetNumberOfThreads() < 2: m.SetNumberOfThreads(2) m.SetInput1(c1.GetOutput()) m.SetInput2(c2.GetOutput()) # without the patch, this call will deadlock forever try: # with the patch this should generate a RuntimeError m.Update() except RuntimeError: pass else: self.fail( 'Multi-threaded error vtkImageMathematics did not raise ' 'exception.')
def __init__(self, module_manager): SimpleVTKClassModuleBase.__init__( self, module_manager, vtk.vtkImageGridSource(), 'Processing.', (), ('vtkImageData',), replaceDoc=True, inputFunctions=None, outputFunctions=None)
def testInformationVectorKeys(self): a = vtk.vtkImageGridSource() spacing = (3.0, 2.0, 1.0) a.SetDataSpacing(spacing) a.UpdateInformation() info = a.GetOutputInformation(0) t = info.Get(vtk.vtkDataObject.SPACING()) self.assertEqual(t, spacing)
def __init__(self, module_manager): SimpleVTKClassModuleBase.__init__(self, module_manager, vtk.vtkImageGridSource(), 'Processing.', (), ('vtkImageData', ), replaceDoc=True, inputFunctions=None, outputFunctions=None)
def render(args): # file_list = os.listdir(os.path.join(args.dataset_path, 'prediction')) # file_name = choice(file_list)[:-4] # oripoints = read_pickle(os.path.join(args.dataset_path, 'lidar', file_name+'.pkl')) # boxes_corner = read_label(os.path.join(args.dataset_path, 'prediction', file_name+'.txt')) # for KITTI # oripoints = read_bin(args.bin_path) # for Hobot # oripoints = read_pickle(args.bin_path) # boxes_corner = read_label(args.txt_path) oripoints = np.fromfile("./data_labels/10_points.bin", dtype=np.float32).reshape([-1, 5])[:, 1:] bboxes = np.fromfile("./data_labels/10_boxes_f64.bin", dtype=np.float64).reshape([-1, 7]) boxes_corner = rbbox3d_to_corners(bboxes) ren = vtk.vtkRenderer() for box in boxes_corner: cubeActor = draw_box(box) ren.AddActor(cubeActor) gridActor = draw_grid() ren.AddActor(gridActor) colors1 = generator_color(oripoints.shape[0], [128, 128, 128]) obj = pointobject.VTKObject() obj.CreateFromArray(np.array(oripoints)) obj.AddColors(colors1) ren.AddActor(obj.GetActor()) axes = vtk.vtkAxesActor() grid = vtk.vtkImageGridSource() axes.SetTotalLength(80, 10, 80) ren.AddActor(axes) ren.SetBackground(0.1, 0.2, 0.3) renWin = vtk.vtkRenderWindow() renWin.SetSize(1600, 1600) renWin.AddRenderer(ren) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) iren.Initialize() iren.Start()
def testDefaultArray(self): """Test an array arg with default value of 0.""" image = vtk.vtkImageData() image.SetExtent(0,9,0,9,0,9) image.AllocateScalars(vtk.VTK_UNSIGNED_CHAR, 1) ipi = vtk.vtkImagePointIterator() # call this method with the parameter set ipi.Initialize(image, (0,9,0,9,0,9)) # call this method without extent parameter ipi.Initialize(image) # do another method for good measure source = vtk.vtkImageGridSource() source.SetDataExtent((0,99,0,99,0,0)) # set the parameter source.UpdateExtent((0,50,0,50,0,0)) # use default parameter value source.UpdateExtent()
#!/usr/bin/env python import vtk from vtk.test import Testing from vtk.util.misc import vtkGetDataRoot VTK_DATA_ROOT = vtkGetDataRoot() # first, create an image to warp imageGrid = vtk.vtkImageGridSource() imageGrid.SetGridSpacing(16, 16, 0) imageGrid.SetGridOrigin(0, 0, 0) imageGrid.SetDataExtent(0, 255, 0, 255, 0, 0) imageGrid.SetDataScalarTypeToUnsignedChar() table = vtk.vtkLookupTable() table.SetTableRange(0, 1) table.SetValueRange(1.0, 0.0) table.SetSaturationRange(0.0, 0.0) table.SetHueRange(0.0, 0.0) table.SetAlphaRange(0.0, 1.0) table.Build() alpha = vtk.vtkImageMapToColors() alpha.SetInputConnection(imageGrid.GetOutputPort()) alpha.SetLookupTable(table) reader1 = vtk.vtkBMPReader() reader1.SetFileName("" + str(VTK_DATA_ROOT) + "/Data/masonry.bmp") blend = vtk.vtkImageBlend() blend.AddInputConnection(reader1.GetOutputPort()) blend.AddInputConnection(alpha.GetOutputPort()) # next, create a ThinPlateSpline transform p1 = vtk.vtkPoints() p1.SetNumberOfPoints(8)
#!/usr/bin/env python import vtk from vtk.test import Testing from vtk.util.misc import vtkGetDataRoot VTK_DATA_ROOT = vtkGetDataRoot() # warp an image with a thin plate spline # first, create an image to warp imageGrid = vtk.vtkImageGridSource() imageGrid.SetGridSpacing(16,16,0) imageGrid.SetGridOrigin(0,0,0) imageGrid.SetDataExtent(0,255,0,255,0,0) imageGrid.SetDataScalarTypeToUnsignedChar() table = vtk.vtkLookupTable() table.SetTableRange(0,1) table.SetValueRange(1.0,0.0) table.SetSaturationRange(0.0,0.0) table.SetHueRange(0.0,0.0) table.SetAlphaRange(0.0,1.0) table.Build() alpha = vtk.vtkImageMapToColors() alpha.SetInputConnection(imageGrid.GetOutputPort()) alpha.SetLookupTable(table) reader1 = vtk.vtkBMPReader() reader1.SetFileName("" + str(VTK_DATA_ROOT) + "/Data/masonry.bmp") blend = vtk.vtkImageBlend() blend.AddInputConnection(0,reader1.GetOutputPort()) blend.AddInputConnection(0,alpha.GetOutputPort()) # next, create a ThinPlateSpline transform p1 = vtk.vtkPoints() p1.SetNumberOfPoints(8)
def _set_image_viewer_dummy_input(self): ds = vtk.vtkImageGridSource() ds.Update() self._image_viewer.SetInputData(ds.GetOutput())
def __init__(self, ren, renWin, iren): self.ren = ren self.renWin = renWin self.iren = iren # Create a gaussian gs = vtk.vtkImageGaussianSource() gs.SetWholeExtent(0, 30, 0, 30, 0, 30) gs.SetMaximum(255.0) gs.SetStandardDeviation(5) gs.SetCenter(15, 15, 15) # threshold to leave a gap that should show up for # gradient opacity t = vtk.vtkImageThreshold() t.SetInputConnection(gs.GetOutputPort()) t.ReplaceInOn() t.SetInValue(0) t.ThresholdBetween(150, 200) # Use a shift scale to convert to unsigned char ss = vtk.vtkImageShiftScale() ss.SetInputConnection(t.GetOutputPort()) ss.SetOutputScalarTypeToUnsignedChar() # grid will be used for two component dependent grid0 = vtk.vtkImageGridSource() grid0.SetDataScalarTypeToUnsignedChar() grid0.SetGridSpacing(10, 10, 10) grid0.SetLineValue(200) grid0.SetFillValue(10) grid0.SetDataExtent(0, 30, 0, 30, 0, 30) # use dilation to thicken the grid d = vtk.vtkImageContinuousDilate3D() d.SetInputConnection(grid0.GetOutputPort()) d.SetKernelSize(3, 3, 3) # Now make a two component dependent iac = vtk.vtkImageAppendComponents() iac.AddInputConnection(d.GetOutputPort()) iac.AddInputConnection(ss.GetOutputPort()) # Some more gaussians for the four component indepent case gs1 = vtk.vtkImageGaussianSource() gs1.SetWholeExtent(0, 30, 0, 30, 0, 30) gs1.SetMaximum(255.0) gs1.SetStandardDeviation(4) gs1.SetCenter(5, 5, 5) t1 = vtk.vtkImageThreshold() t1.SetInputConnection(gs1.GetOutputPort()) t1.ReplaceInOn() t1.SetInValue(0) t1.ThresholdBetween(150, 256) gs2 = vtk.vtkImageGaussianSource() gs2.SetWholeExtent(0, 30, 0, 30, 0, 30) gs2.SetMaximum(255.0) gs2.SetStandardDeviation(4) gs2.SetCenter(12, 12, 12) gs3 = vtk.vtkImageGaussianSource() gs3.SetWholeExtent(0, 30, 0, 30, 0, 30) gs3.SetMaximum(255.0) gs3.SetStandardDeviation(4) gs3.SetCenter(19, 19, 19) t3 = vtk.vtkImageThreshold() t3.SetInputConnection(gs3.GetOutputPort()) t3.ReplaceInOn() t3.SetInValue(0) t3.ThresholdBetween(150, 256) gs4 = vtk.vtkImageGaussianSource() gs4.SetWholeExtent(0, 30, 0, 30, 0, 30) gs4.SetMaximum(255.0) gs4.SetStandardDeviation(4) gs4.SetCenter(26, 26, 26) # we need a few append filters ... iac1 = vtk.vtkImageAppendComponents() iac1.AddInputConnection(t1.GetOutputPort()) iac1.AddInputConnection(gs2.GetOutputPort()) iac2 = vtk.vtkImageAppendComponents() iac2.AddInputConnection(iac1.GetOutputPort()) iac2.AddInputConnection(t3.GetOutputPort()) iac3 = vtk.vtkImageAppendComponents() iac3.AddInputConnection(iac2.GetOutputPort()) iac3.AddInputConnection(gs4.GetOutputPort()) # create the four component dependent - # use lines in x, y, z for colors gridR = vtk.vtkImageGridSource() gridR.SetDataScalarTypeToUnsignedChar() gridR.SetGridSpacing(10, 100, 100) gridR.SetLineValue(250) gridR.SetFillValue(100) gridR.SetDataExtent(0, 30, 0, 30, 0, 30) dR = vtk.vtkImageContinuousDilate3D() dR.SetInputConnection(gridR.GetOutputPort()) dR.SetKernelSize(2, 2, 2) gridG = vtk.vtkImageGridSource() gridG.SetDataScalarTypeToUnsignedChar() gridG.SetGridSpacing(100, 10, 100) gridG.SetLineValue(250) gridG.SetFillValue(100) gridG.SetDataExtent(0, 30, 0, 30, 0, 30) dG = vtk.vtkImageContinuousDilate3D() dG.SetInputConnection(gridG.GetOutputPort()) dG.SetKernelSize(2, 2, 2) gridB = vtk.vtkImageGridSource() gridB.SetDataScalarTypeToUnsignedChar() gridB.SetGridSpacing(100, 100, 10) gridB.SetLineValue(0) gridB.SetFillValue(250) gridB.SetDataExtent(0, 30, 0, 30, 0, 30) dB = vtk.vtkImageContinuousDilate3D() dB.SetInputConnection(gridB.GetOutputPort()) dB.SetKernelSize(2, 2, 2) # need some appending iacRG = vtk.vtkImageAppendComponents() iacRG.AddInputConnection(dR.GetOutputPort()) iacRG.AddInputConnection(dG.GetOutputPort()) iacRGB = vtk.vtkImageAppendComponents() iacRGB.AddInputConnection(iacRG.GetOutputPort()) iacRGB.AddInputConnection(dB.GetOutputPort()) iacRGBA = vtk.vtkImageAppendComponents() iacRGBA.AddInputConnection(iacRGB.GetOutputPort()) iacRGBA.AddInputConnection(ss.GetOutputPort()) # We need a bunch of opacity functions # this one is a simple ramp to .2 rampPoint2 = vtk.vtkPiecewiseFunction() rampPoint2.AddPoint(0, 0.0) rampPoint2.AddPoint(255, 0.2) # this one is a simple ramp to 1 ramp1 = vtk.vtkPiecewiseFunction() ramp1.AddPoint(0, 0.0) ramp1.AddPoint(255, 1.0) # this one shows a sharp surface surface = vtk.vtkPiecewiseFunction() surface.AddPoint(0, 0.0) surface.AddPoint(10, 0.0) surface.AddPoint(50, 1.0) surface.AddPoint(255, 1.0) # this one is constant 1 constant1 = vtk.vtkPiecewiseFunction() constant1.AddPoint(0, 1.0) constant1.AddPoint(255, 1.0) # this one is used for gradient opacity gop = vtk.vtkPiecewiseFunction() gop.AddPoint(0, 0.0) gop.AddPoint(20, 0.0) gop.AddPoint(60, 1.0) gop.AddPoint(255, 1.0) # We need a bunch of color functions # This one is a simple rainbow rainbow = vtk.vtkColorTransferFunction() rainbow.SetColorSpaceToHSV() rainbow.HSVWrapOff() rainbow.AddHSVPoint(0, 0.1, 1.0, 1.0) rainbow.AddHSVPoint(255, 0.9, 1.0, 1.0) # this is constant red red = vtk.vtkColorTransferFunction() red.AddRGBPoint(0, 1, 0, 0) red.AddRGBPoint(255, 1, 0, 0) # this is constant green green = vtk.vtkColorTransferFunction() green.AddRGBPoint(0, 0, 1, 0) green.AddRGBPoint(255, 0, 1, 0) # this is constant blue blue = vtk.vtkColorTransferFunction() blue.AddRGBPoint(0, 0, 0, 1) blue.AddRGBPoint(255, 0, 0, 1) # this is constant yellow yellow = vtk.vtkColorTransferFunction() yellow.AddRGBPoint(0, 1, 1, 0) yellow.AddRGBPoint(255, 1, 1, 0) #ren = vtk.vtkRenderer() #renWin = vtk.vtkRenderWindow() self.renWin.AddRenderer(self.ren) self.renWin.SetSize(500, 500) #iren = vtk.vtkRenderWindowInteractor() self.iren.SetRenderWindow(self.renWin) self.ren.GetCullers().InitTraversal() culler = self.ren.GetCullers().GetNextItem() culler.SetSortingStyleToBackToFront() # We need 25 mapper / actor pairs which we will render # in a grid. Going down we will vary the input data # with the top row unsigned char, then float, then # two dependent components, then four dependent components # then four independent components. Going across we # will vary the rendering method with MIP, Composite, # Composite Shade, Composite GO, and Composite GO Shade. # Create the 5 by 5 grids self.volumeProperty = [[0 for col in range(0, 5)] for row in range(0, 5)] self.volumeMapper = [[0 for col in range(0, 5)] for row in range(0, 5)] volume = [[0 for col in range(0, 5)] for row in range(0, 5)] for i in range(0, 5): for j in range(0, 5): self.volumeProperty[i][j] = vtk.vtkVolumeProperty() self.volumeMapper[i][j] = vtk.vtkFixedPointVolumeRayCastMapper( ) self.volumeMapper[i][j].SetSampleDistance(0.25) self.volumeMapper[i][j].SetNumberOfThreads(1) volume[i][j] = vtk.vtkVolume() volume[i][j].SetMapper(self.volumeMapper[i][j]) volume[i][j].SetProperty(self.volumeProperty[i][j]) volume[i][j].AddPosition(i * 30, j * 30, 0) self.ren.AddVolume(volume[i][j]) for i in range(0, 5): self.volumeMapper[0][i].SetInputConnection(t.GetOutputPort()) self.volumeMapper[1][i].SetInputConnection(ss.GetOutputPort()) self.volumeMapper[2][i].SetInputConnection(iac.GetOutputPort()) self.volumeMapper[3][i].SetInputConnection(iac3.GetOutputPort()) self.volumeMapper[4][i].SetInputConnection(iacRGBA.GetOutputPort()) self.volumeMapper[i][0].SetBlendModeToMaximumIntensity() self.volumeMapper[i][1].SetBlendModeToComposite() self.volumeMapper[i][2].SetBlendModeToComposite() self.volumeMapper[i][3].SetBlendModeToComposite() self.volumeMapper[i][4].SetBlendModeToComposite() self.volumeProperty[0][i].IndependentComponentsOn() self.volumeProperty[1][i].IndependentComponentsOn() self.volumeProperty[2][i].IndependentComponentsOff() self.volumeProperty[3][i].IndependentComponentsOn() self.volumeProperty[4][i].IndependentComponentsOff() self.volumeProperty[0][i].SetColor(rainbow) self.volumeProperty[0][i].SetScalarOpacity(rampPoint2) self.volumeProperty[0][i].SetGradientOpacity(constant1) self.volumeProperty[1][i].SetColor(rainbow) self.volumeProperty[1][i].SetScalarOpacity(rampPoint2) self.volumeProperty[1][i].SetGradientOpacity(constant1) self.volumeProperty[2][i].SetColor(rainbow) self.volumeProperty[2][i].SetScalarOpacity(rampPoint2) self.volumeProperty[2][i].SetGradientOpacity(constant1) self.volumeProperty[3][i].SetColor(0, red) self.volumeProperty[3][i].SetColor(1, green) self.volumeProperty[3][i].SetColor(2, blue) self.volumeProperty[3][i].SetColor(3, yellow) self.volumeProperty[3][i].SetScalarOpacity(0, rampPoint2) self.volumeProperty[3][i].SetScalarOpacity(1, rampPoint2) self.volumeProperty[3][i].SetScalarOpacity(2, rampPoint2) self.volumeProperty[3][i].SetScalarOpacity(3, rampPoint2) self.volumeProperty[3][i].SetGradientOpacity(0, constant1) self.volumeProperty[3][i].SetGradientOpacity(1, constant1) self.volumeProperty[3][i].SetGradientOpacity(2, constant1) self.volumeProperty[3][i].SetGradientOpacity(3, constant1) self.volumeProperty[3][i].SetComponentWeight(0, 1) self.volumeProperty[3][i].SetComponentWeight(1, 1) self.volumeProperty[3][i].SetComponentWeight(2, 1) self.volumeProperty[3][i].SetComponentWeight(3, 1) self.volumeProperty[4][i].SetColor(rainbow) self.volumeProperty[4][i].SetScalarOpacity(rampPoint2) self.volumeProperty[4][i].SetGradientOpacity(constant1) self.volumeProperty[i][2].ShadeOn() self.volumeProperty[i][4].ShadeOn(0) self.volumeProperty[i][4].ShadeOn(1) self.volumeProperty[i][4].ShadeOn(2) self.volumeProperty[i][4].ShadeOn(3) self.volumeProperty[0][0].SetScalarOpacity(ramp1) self.volumeProperty[1][0].SetScalarOpacity(ramp1) self.volumeProperty[2][0].SetScalarOpacity(ramp1) self.volumeProperty[3][0].SetScalarOpacity(0, surface) self.volumeProperty[3][0].SetScalarOpacity(1, surface) self.volumeProperty[3][0].SetScalarOpacity(2, surface) self.volumeProperty[3][0].SetScalarOpacity(3, surface) self.volumeProperty[4][0].SetScalarOpacity(ramp1) self.volumeProperty[0][2].SetScalarOpacity(surface) self.volumeProperty[1][2].SetScalarOpacity(surface) self.volumeProperty[2][2].SetScalarOpacity(surface) self.volumeProperty[3][2].SetScalarOpacity(0, surface) self.volumeProperty[3][2].SetScalarOpacity(1, surface) self.volumeProperty[3][2].SetScalarOpacity(2, surface) self.volumeProperty[3][2].SetScalarOpacity(3, surface) self.volumeProperty[4][2].SetScalarOpacity(surface) self.volumeProperty[0][4].SetScalarOpacity(surface) self.volumeProperty[1][4].SetScalarOpacity(surface) self.volumeProperty[2][4].SetScalarOpacity(surface) self.volumeProperty[3][4].SetScalarOpacity(0, surface) self.volumeProperty[3][4].SetScalarOpacity(1, surface) self.volumeProperty[3][4].SetScalarOpacity(2, surface) self.volumeProperty[3][4].SetScalarOpacity(3, surface) self.volumeProperty[4][4].SetScalarOpacity(surface) self.volumeProperty[0][3].SetGradientOpacity(gop) self.volumeProperty[1][3].SetGradientOpacity(gop) self.volumeProperty[2][3].SetGradientOpacity(gop) self.volumeProperty[3][3].SetGradientOpacity(0, gop) self.volumeProperty[3][3].SetGradientOpacity(2, gop) self.volumeProperty[4][3].SetGradientOpacity(gop) self.volumeProperty[3][3].SetScalarOpacity(0, ramp1) self.volumeProperty[3][3].SetScalarOpacity(2, ramp1) self.volumeProperty[0][4].SetGradientOpacity(gop) self.volumeProperty[1][4].SetGradientOpacity(gop) self.volumeProperty[2][4].SetGradientOpacity(gop) self.volumeProperty[3][4].SetGradientOpacity(0, gop) self.volumeProperty[3][4].SetGradientOpacity(2, gop) self.volumeProperty[4][4].SetGradientOpacity(gop) self.renWin.Render() self.ren.GetActiveCamera().Dolly(1.3) self.ren.GetActiveCamera().Azimuth(15) self.ren.GetActiveCamera().Elevation(5) self.ren.ResetCameraClippingRange()
reader = vtkbone.vtkboneAIMReader() reader.DataOnCellsOff() elif args.inputImage.lower().endswith('.nii'): reader = vtk.vtkNIFTIImageReader() elif args.inputImage.lower().endswith('.dcm'): reader = vtk.vtkDICOMImageReader() else: os.sys.exit( 'Unable to find a reader for \"{fileName}\". Exiting...'.format( fileName=args.inputImage)) reader.SetFileName(args.inputImage) print('Loading {}...'.format(args.inputImage)) reader.Update() # Grid source gridSource = vtk.vtkImageGridSource() gridSource.SetDataOrigin(reader.GetOutput().GetOrigin()) gridSource.SetDataSpacing(reader.GetOutput().GetSpacing()) gridSource.SetDataExtent(reader.GetOutput().GetExtent()) gridSource.SetDataScalarTypeToShort() gridSource.SetGridSpacing(args.gridSpacing) gridSource.SetLineValue(args.lineValue) gridSource.SetFillValue(args.fillValue) print('Generating grid image with fill/line values of {}/{}'.format( args.fillValue, args.lineValue)) gridSource.Update() # Writer writer = vtk.vtkNIFTIImageWriter() writer.SetFileName(args.outputImage) writer.SetInputConnection(gridSource.GetOutputPort())
def __init__(self, ren, renWin, iren): self.ren = ren self.renWin = renWin self.iren = iren # Create a gaussian gs = vtk.vtkImageGaussianSource() gs.SetWholeExtent(0, 30, 0, 30, 0, 30) gs.SetMaximum(255.0) gs.SetStandardDeviation(5) gs.SetCenter(15, 15, 15) # threshold to leave a gap that should show up for # gradient opacity t = vtk.vtkImageThreshold() t.SetInputConnection(gs.GetOutputPort()) t.ReplaceInOn() t.SetInValue(0) t.ThresholdBetween(150, 200) # Use a shift scale to convert to unsigned char ss = vtk.vtkImageShiftScale() ss.SetInputConnection(t.GetOutputPort()) ss.SetOutputScalarTypeToUnsignedChar() # grid will be used for two component dependent grid0 = vtk.vtkImageGridSource() grid0.SetDataScalarTypeToUnsignedChar() grid0.SetGridSpacing(10, 10, 10) grid0.SetLineValue(200) grid0.SetFillValue(10) grid0.SetDataExtent(0, 30, 0, 30, 0, 30) # use dilation to thicken the grid d = vtk.vtkImageContinuousDilate3D() d.SetInputConnection(grid0.GetOutputPort()) d.SetKernelSize(3, 3, 3) # Now make a two component dependent iac = vtk.vtkImageAppendComponents() iac.AddInputConnection(d.GetOutputPort()) iac.AddInputConnection(ss.GetOutputPort()) # Some more gaussians for the four component indepent case gs1 = vtk.vtkImageGaussianSource() gs1.SetWholeExtent(0, 30, 0, 30, 0, 30) gs1.SetMaximum(255.0) gs1.SetStandardDeviation(4) gs1.SetCenter(5, 5, 5) t1 = vtk.vtkImageThreshold() t1.SetInputConnection(gs1.GetOutputPort()) t1.ReplaceInOn() t1.SetInValue(0) t1.ThresholdBetween(150, 256) gs2 = vtk.vtkImageGaussianSource() gs2.SetWholeExtent(0, 30, 0, 30, 0, 30) gs2.SetMaximum(255.0) gs2.SetStandardDeviation(4) gs2.SetCenter(12, 12, 12) gs3 = vtk.vtkImageGaussianSource() gs3.SetWholeExtent(0, 30, 0, 30, 0, 30) gs3.SetMaximum(255.0) gs3.SetStandardDeviation(4) gs3.SetCenter(19, 19, 19) t3 = vtk.vtkImageThreshold() t3.SetInputConnection(gs3.GetOutputPort()) t3.ReplaceInOn() t3.SetInValue(0) t3.ThresholdBetween(150, 256) gs4 = vtk.vtkImageGaussianSource() gs4.SetWholeExtent(0, 30, 0, 30, 0, 30) gs4.SetMaximum(255.0) gs4.SetStandardDeviation(4) gs4.SetCenter(26, 26, 26) # we need a few append filters ... iac1 = vtk.vtkImageAppendComponents() iac1.AddInputConnection(t1.GetOutputPort()) iac1.AddInputConnection(gs2.GetOutputPort()) iac2 = vtk.vtkImageAppendComponents() iac2.AddInputConnection(iac1.GetOutputPort()) iac2.AddInputConnection(t3.GetOutputPort()) iac3 = vtk.vtkImageAppendComponents() iac3.AddInputConnection(iac2.GetOutputPort()) iac3.AddInputConnection(gs4.GetOutputPort()) # create the four component dependend - # use lines in x, y, z for colors gridR = vtk.vtkImageGridSource() gridR.SetDataScalarTypeToUnsignedChar() gridR.SetGridSpacing(10, 100, 100) gridR.SetLineValue(250) gridR.SetFillValue(100) gridR.SetDataExtent(0, 30, 0, 30, 0, 30) dR = vtk.vtkImageContinuousDilate3D() dR.SetInputConnection(gridR.GetOutputPort()) dR.SetKernelSize(2, 2, 2) gridG = vtk.vtkImageGridSource() gridG.SetDataScalarTypeToUnsignedChar() gridG.SetGridSpacing(100, 10, 100) gridG.SetLineValue(250) gridG.SetFillValue(100) gridG.SetDataExtent(0, 30, 0, 30, 0, 30) dG = vtk.vtkImageContinuousDilate3D() dG.SetInputConnection(gridG.GetOutputPort()) dG.SetKernelSize(2, 2, 2) gridB = vtk.vtkImageGridSource() gridB.SetDataScalarTypeToUnsignedChar() gridB.SetGridSpacing(100, 100, 10) gridB.SetLineValue(0) gridB.SetFillValue(250) gridB.SetDataExtent(0, 30, 0, 30, 0, 30) dB = vtk.vtkImageContinuousDilate3D() dB.SetInputConnection(gridB.GetOutputPort()) dB.SetKernelSize(2, 2, 2) # need some appending iacRG = vtk.vtkImageAppendComponents() iacRG.AddInputConnection(dR.GetOutputPort()) iacRG.AddInputConnection(dG.GetOutputPort()) iacRGB = vtk.vtkImageAppendComponents() iacRGB.AddInputConnection(iacRG.GetOutputPort()) iacRGB.AddInputConnection(dB.GetOutputPort()) iacRGBA = vtk.vtkImageAppendComponents() iacRGBA.AddInputConnection(iacRGB.GetOutputPort()) iacRGBA.AddInputConnection(ss.GetOutputPort()) # We need a bunch of opacity functions # this one is a simple ramp to .2 rampPoint2 = vtk.vtkPiecewiseFunction() rampPoint2.AddPoint(0, 0.0) rampPoint2.AddPoint(255, 0.2) # this one is a simple ramp to 1 ramp1 = vtk.vtkPiecewiseFunction() ramp1.AddPoint(0, 0.0) ramp1.AddPoint(255, 1.0) # this one shows a sharp surface surface = vtk.vtkPiecewiseFunction() surface.AddPoint(0, 0.0) surface.AddPoint(10, 0.0) surface.AddPoint(50, 1.0) surface.AddPoint(255, 1.0) # this one is constant 1 constant1 = vtk.vtkPiecewiseFunction() constant1.AddPoint(0, 1.0) constant1.AddPoint(255, 1.0) # this one is used for gradient opacity gop = vtk.vtkPiecewiseFunction() gop.AddPoint(0, 0.0) gop.AddPoint(20, 0.0) gop.AddPoint(60, 1.0) gop.AddPoint(255, 1.0) # We need a bunch of color functions # This one is a simple rainbow rainbow = vtk.vtkColorTransferFunction() rainbow.SetColorSpaceToHSV() rainbow.HSVWrapOff() rainbow.AddHSVPoint(0, 0.1, 1.0, 1.0) rainbow.AddHSVPoint(255, 0.9, 1.0, 1.0) # this is constant red red = vtk.vtkColorTransferFunction() red.AddRGBPoint(0, 1, 0, 0) red.AddRGBPoint(255, 1, 0, 0) # this is constant green green = vtk.vtkColorTransferFunction() green.AddRGBPoint(0, 0, 1, 0) green.AddRGBPoint(255, 0, 1, 0) # this is constant blue blue = vtk.vtkColorTransferFunction() blue.AddRGBPoint(0, 0, 0, 1) blue.AddRGBPoint(255, 0, 0, 1) # this is constant yellow yellow = vtk.vtkColorTransferFunction() yellow.AddRGBPoint(0, 1, 1, 0) yellow.AddRGBPoint(255, 1, 1, 0) #ren = vtk.vtkRenderer() #renWin = vtk.vtkRenderWindow() self.renWin.AddRenderer(self.ren) self.renWin.SetSize(500, 500) #iren = vtk.vtkRenderWindowInteractor() self.iren.SetRenderWindow(self.renWin) self.ren.GetCullers().InitTraversal() culler = self.ren.GetCullers().GetNextItem() culler.SetSortingStyleToBackToFront() # We need 25 mapper / actor pairs which we will render # in a grid. Going down we will vary the input data # with the top row unsigned char, then float, then # two dependent components, then four dependent components # then four independent components. Going across we # will vary the rendering method with MIP, Composite, # Composite Shade, Composite GO, and Composite GO Shade. # Create the 5 by 5 grids self.volumeProperty = [[0 for col in range(0, 5)] for row in range(0, 5)] self.volumeMapper = [[0 for col in range(0, 5)] for row in range(0, 5)] volume = [[0 for col in range(0, 5)] for row in range(0, 5)] for i in range(0, 5): for j in range(0, 5): self.volumeProperty[i][j] = vtk.vtkVolumeProperty() self.volumeMapper[i][j] = vtk.vtkFixedPointVolumeRayCastMapper() self.volumeMapper[i][j].SetSampleDistance(0.25) volume[i][j] = vtk.vtkVolume() volume[i][j].SetMapper(self.volumeMapper[i][j]) volume[i][j].SetProperty(self.volumeProperty[i][j]) volume[i][j].AddPosition(i * 30, j * 30, 0) self.ren.AddVolume(volume[i][j]) for i in range(0, 5): self.volumeMapper[0][i].SetInputConnection(t.GetOutputPort()) self.volumeMapper[1][i].SetInputConnection(ss.GetOutputPort()) self.volumeMapper[2][i].SetInputConnection(iac.GetOutputPort()) self.volumeMapper[3][i].SetInputConnection(iac3.GetOutputPort()) self.volumeMapper[4][i].SetInputConnection(iacRGBA.GetOutputPort()) self.volumeMapper[i][0].SetBlendModeToMaximumIntensity() self.volumeMapper[i][1].SetBlendModeToComposite() self.volumeMapper[i][2].SetBlendModeToComposite() self.volumeMapper[i][3].SetBlendModeToComposite() self.volumeMapper[i][4].SetBlendModeToComposite() self.volumeProperty[0][i].IndependentComponentsOn() self.volumeProperty[1][i].IndependentComponentsOn() self.volumeProperty[2][i].IndependentComponentsOff() self.volumeProperty[3][i].IndependentComponentsOn() self.volumeProperty[4][i].IndependentComponentsOff() self.volumeProperty[0][i].SetColor(rainbow) self.volumeProperty[0][i].SetScalarOpacity(rampPoint2) self.volumeProperty[0][i].SetGradientOpacity(constant1) self.volumeProperty[1][i].SetColor(rainbow) self.volumeProperty[1][i].SetScalarOpacity(rampPoint2) self.volumeProperty[1][i].SetGradientOpacity(constant1) self.volumeProperty[2][i].SetColor(rainbow) self.volumeProperty[2][i].SetScalarOpacity(rampPoint2) self.volumeProperty[2][i].SetGradientOpacity(constant1) self.volumeProperty[3][i].SetColor(0, red) self.volumeProperty[3][i].SetColor(1, green) self.volumeProperty[3][i].SetColor(2, blue) self.volumeProperty[3][i].SetColor(3, yellow) self.volumeProperty[3][i].SetScalarOpacity(0, rampPoint2) self.volumeProperty[3][i].SetScalarOpacity(1, rampPoint2) self.volumeProperty[3][i].SetScalarOpacity(2, rampPoint2) self.volumeProperty[3][i].SetScalarOpacity(3, rampPoint2) self.volumeProperty[3][i].SetGradientOpacity(0, constant1) self.volumeProperty[3][i].SetGradientOpacity(1, constant1) self.volumeProperty[3][i].SetGradientOpacity(2, constant1) self.volumeProperty[3][i].SetGradientOpacity(3, constant1) self.volumeProperty[3][i].SetComponentWeight(0, 1) self.volumeProperty[3][i].SetComponentWeight(1, 1) self.volumeProperty[3][i].SetComponentWeight(2, 1) self.volumeProperty[3][i].SetComponentWeight(3, 1) self.volumeProperty[4][i].SetColor(rainbow) self.volumeProperty[4][i].SetScalarOpacity(rampPoint2) self.volumeProperty[4][i].SetGradientOpacity(constant1) self.volumeProperty[i][2].ShadeOn() self.volumeProperty[i][4].ShadeOn(0) self.volumeProperty[i][4].ShadeOn(1) self.volumeProperty[i][4].ShadeOn(2) self.volumeProperty[i][4].ShadeOn(3) self.volumeProperty[0][0].SetScalarOpacity(ramp1) self.volumeProperty[1][0].SetScalarOpacity(ramp1) self.volumeProperty[2][0].SetScalarOpacity(ramp1) self.volumeProperty[3][0].SetScalarOpacity(0, surface) self.volumeProperty[3][0].SetScalarOpacity(1, surface) self.volumeProperty[3][0].SetScalarOpacity(2, surface) self.volumeProperty[3][0].SetScalarOpacity(3, surface) self.volumeProperty[4][0].SetScalarOpacity(ramp1) self.volumeProperty[0][2].SetScalarOpacity(surface) self.volumeProperty[1][2].SetScalarOpacity(surface) self.volumeProperty[2][2].SetScalarOpacity(surface) self.volumeProperty[3][2].SetScalarOpacity(0, surface) self.volumeProperty[3][2].SetScalarOpacity(1, surface) self.volumeProperty[3][2].SetScalarOpacity(2, surface) self.volumeProperty[3][2].SetScalarOpacity(3, surface) self.volumeProperty[4][2].SetScalarOpacity(surface) self.volumeProperty[0][4].SetScalarOpacity(surface) self.volumeProperty[1][4].SetScalarOpacity(surface) self.volumeProperty[2][4].SetScalarOpacity(surface) self.volumeProperty[3][4].SetScalarOpacity(0, surface) self.volumeProperty[3][4].SetScalarOpacity(1, surface) self.volumeProperty[3][4].SetScalarOpacity(2, surface) self.volumeProperty[3][4].SetScalarOpacity(3, surface) self.volumeProperty[4][4].SetScalarOpacity(surface) self.volumeProperty[0][3].SetGradientOpacity(gop) self.volumeProperty[1][3].SetGradientOpacity(gop) self.volumeProperty[2][3].SetGradientOpacity(gop) self.volumeProperty[3][3].SetGradientOpacity(0, gop) self.volumeProperty[3][3].SetGradientOpacity(2, gop) self.volumeProperty[4][3].SetGradientOpacity(gop) self.volumeProperty[3][3].SetScalarOpacity(0, ramp1) self.volumeProperty[3][3].SetScalarOpacity(2, ramp1) self.volumeProperty[0][4].SetGradientOpacity(gop) self.volumeProperty[1][4].SetGradientOpacity(gop) self.volumeProperty[2][4].SetGradientOpacity(gop) self.volumeProperty[3][4].SetGradientOpacity(0, gop) self.volumeProperty[3][4].SetGradientOpacity(2, gop) self.volumeProperty[4][4].SetGradientOpacity(gop) self.renWin.Render() self.ren.GetActiveCamera().Dolly(1.3) self.ren.GetActiveCamera().Azimuth(15) self.ren.GetActiveCamera().Elevation(5) self.ren.ResetCameraClippingRange()
def _set_image_viewer_dummy_input(self): ds = vtk.vtkImageGridSource() self._viewer.SetInput(ds.GetOutput())