def __init__(self, module_manager): ModuleBase.__init__(self, module_manager) self._view_frame = None self._viewer = None self._input_image = None self._dummy_image_source = vtk.vtkImageMandelbrotSource() self._widgets = M2DWidgetList() # build frame self._view_frame = module_utils.instantiate_module_view_frame( self, self._module_manager, Measure2DFrame.Measure2DFrame) # now link up all event handlers self._bind_events() # then build VTK pipeline self._create_vtk_pipeline() # set us up with dummy input self._setup_new_image() # show everything self.view()
def __init__(self, module_manager): SimpleVTKClassModuleBase.__init__( self, module_manager, vtk.vtkImageMandelbrotSource(), 'Processing.', (), ('vtkImageData',), replaceDoc=True, inputFunctions=None, outputFunctions=None)
def testThreshold(self): global args writefiles = "SaveData" in args renderer = vtk.vtkRenderer() renwin = vtk.vtkRenderWindow() renwin.AddRenderer(renderer) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renwin) renwin.Render() if "GPURender" in args: vtk.vtkPistonMapper.InitCUDAGL(renwin) src = vtk.vtkImageMandelbrotSource() src.SetWholeExtent(0, 10, 0, 10, 0, 10) #scale and bias until piston's threshold understands origin and spacing src.Update() inputdata = src.GetOutput() if "Normalize" in args: testdata1 = inputdata.NewInstance() testdata1.ShallowCopy(inputdata) testdata1.SetSpacing(1, 1, 1) testdata1.SetOrigin(0, 0, 0) inputdata = testdata1 d2p = vtk.vtkDataSetToPiston() d2p.SetInputData(inputdata) #d2p.SetInputConnection(src.GetOutputPort()) threshF = vtk.vtkPistonThreshold() threshF.SetInputConnection(d2p.GetOutputPort()) threshF.SetMinValue(0) threshF.SetMaxValue(80) p2d = vtk.vtkPistonToDataSet() p2d.SetInputConnection(threshF.GetOutputPort()) p2d.SetOutputDataSetType(vtk.VTK_POLY_DATA) if writefiles: writeFile(p2d, "piston_threshold.vtk") mapper = vtk.vtkPistonMapper() mapper.SetInputConnection(threshF.GetOutputPort()) mapper.Update() actor = vtk.vtkActor() actor.SetMapper(mapper) renderer.AddActor(actor) renderer.ResetCamera() renwin.Render() img_file = "TestThreshold.png" Testing.compareImage(renwin, Testing.getAbsImagePath(img_file)) if Testing.isInteractive(): iren.Start()
def testThreshold(self): global args writefiles = "SaveData" in args renderer = vtk.vtkRenderer() renwin = vtk.vtkRenderWindow() renwin.AddRenderer(renderer) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renwin) renwin.Render() if "GPURender" in args: vtk.vtkPistonMapper.InitCUDAGL(renwin) src = vtk.vtkImageMandelbrotSource() src.SetWholeExtent(0,10,0,10,0,10) #scale and bias until piston's threshold understands origin and spacing src.Update() inputdata = src.GetOutput() if "Normalize" in args: testdata1 = inputdata.NewInstance() testdata1.ShallowCopy(inputdata) testdata1.SetSpacing(1,1,1) testdata1.SetOrigin(0,0,0) inputdata = testdata1 d2p = vtk.vtkDataSetToPiston() d2p.SetInputData(inputdata) #d2p.SetInputConnection(src.GetOutputPort()) threshF = vtk.vtkPistonThreshold() threshF.SetInputConnection(d2p.GetOutputPort()) threshF.SetMinValue(0) threshF.SetMaxValue(80) p2d = vtk.vtkPistonToDataSet() p2d.SetInputConnection(threshF.GetOutputPort()) p2d.SetOutputDataSetType(vtk.VTK_POLY_DATA) if writefiles: writeFile(p2d, "piston_threshold.vtk") mapper = vtk.vtkPistonMapper() mapper.SetInputConnection(threshF.GetOutputPort()) mapper.Update() actor = vtk.vtkActor() actor.SetMapper(mapper) renderer.AddActor(actor) renderer.ResetCamera() renwin.Render() img_file = "TestThreshold.png" Testing.compareImage(renwin, Testing.getAbsImagePath(img_file)) if Testing.isInteractive(): iren.Start()
def test_vtkio_image(tmpdir): source = vtk.vtkImageMandelbrotSource() fname = str(tmpdir.join('test.vti')) # Write the file writer = vtk.vtkXMLImageDataWriter() writer.SetFileName(fname) writer.SetInputConnection(source.GetOutputPort()) writer.SetDataModeToBinary() writer.Write() dataset = read_vtk_xml(fname) assert isinstance(dataset, MutableDataSet) assert dataset.kind == 'vtkImageData'
def dumpImage(filename): toImage = vtk.vtkWindowToImageFilter() toImage.SetInput(renWin) toImage.Modified() writer = vtk.vtkPNGWriter() writer.SetInput(toImage.GetOutput()) writer.SetFileName(filename) writer.Modified() print "writing to ", filename writer.Write() Fractal0 = vtk.vtkImageMandelbrotSource() Fractal0.SetWholeExtent(0, 247, 0, 247, 0, 0) Fractal0.SetProjectionAxes(0, 1, 2) Fractal0.SetOriginCX(-1.75, -1.25, 0, 0) Fractal0.SetSizeCX(2.5, 2.5, 2, 1.5) Fractal0.SetMaximumNumberOfIterations(1000) cast = vtk.vtkImageCast() cast.SetInputConnection(Fractal0.GetOutputPort()) cast.SetOutputScalarTypeToUnsignedChar() table = vtk.vtkLookupTable() table.SetTableRange(0, 100) table.SetNumberOfColors(100) table.Build() table.SetTableValue(99, 0, 0, 0, 0) colorize = vtk.vtkImageMapToColors() colorize.SetOutputFormatToRGB() colorize.SetLookupTable(table) colorize.SetInputConnection(cast.GetOutputPort()) mpeg = vtk.vtkMPEG2Writer() #mpeg.SetInputConnection(toImage.GetOutputPort()) #mpeg.SetFileName("TestMovie.mpg") #print "writing File TestMovie.mpg " #mpeg.Start() itr = 1 for itr in range(1, 10): Fractal0.SetMaximumNumberOfIterations(itr) table.SetTableRange(0, itr) table.SetNumberOfColors(itr) table.ForceBuild() table.SetTableValue(itr - 1, 0, 0, 0, 0) mpeg.Write() itr += 1 err = 0 exists = 0
def main(): colors = vtk.vtkNamedColors() # Create a float image source = vtk.vtkImageMandelbrotSource() source.Update() print(source.GetOutput().GetScalarTypeAsString()) castFilter = vtk.vtkImageCast() castFilter.SetInputConnection(source.GetOutputPort()) castFilter.SetOutputScalarTypeToUnsignedChar() castFilter.Update() # Create an actor actor = vtk.vtkImageActor() actor.GetMapper().SetInputConnection(castFilter.GetOutputPort()) # Setup renderer renderer = vtk.vtkRenderer() renderer.AddActor(actor) renderer.SetBackground(colors.GetColor3d('DarkSlateGray')) renderer.ResetCamera() # Setup render window renderWindow = vtk.vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindow.SetWindowName('Cast') # Setup render window interactor renderWindowInteractor = vtk.vtkRenderWindowInteractor() style = vtk.vtkInteractorStyleImage() renderWindowInteractor.SetInteractorStyle(style) # Render and start interaction renderWindowInteractor.SetRenderWindow(renderWindow) renderWindow.Render() renderWindowInteractor.Initialize() renderWindowInteractor.Start()
def testSlice(self): global plane, filter, args writefiles = "SaveData" in args renderer = vtk.vtkRenderer() renwin = vtk.vtkRenderWindow() renwin.AddRenderer(renderer) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renwin) renwin.Render() if "GPURender" in args: vtk.vtkPistonMapper.InitCUDAGL(renwin) src = vtk.vtkImageMandelbrotSource() src.SetWholeExtent(0, 20, 0, 20, 0, 20) #scale and bias until piston understands origin and spacing src.Update() inputdata = src.GetOutput() if "Normalize" in args: testdata1 = inputdata.NewInstance() testdata1.ShallowCopy(inputdata) testdata1.SetSpacing(1, 1, 1) testdata1.SetOrigin(0, 0, 0) inputdata = testdata1 bounds = inputdata.GetBounds() center = [(bounds[1] - bounds[0]) / 2 + bounds[0], (bounds[3] - bounds[2]) / 2 + bounds[2], (bounds[5] - bounds[4]) / 2 + bounds[4]] d2p = vtk.vtkDataSetToPiston() d2p.SetInputData(inputdata) #d2p.SetInputConnection(src.GetOutputPort()) plane = vtk.vtkPlane() plane.SetOrigin(center) plane.SetNormal(0, 0, 1) filter = vtk.vtkPistonSlice() filter.SetInputConnection(d2p.GetOutputPort()) filter.SetClippingPlane(plane) filter.SetOffset(0.0) p2d = vtk.vtkPistonToDataSet() p2d.SetOutputDataSetType(vtk.VTK_POLY_DATA) p2d.SetInputConnection(filter.GetOutputPort()) if writefiles: writeFile(p2d, "piston_slice.vtk") mapper = vtk.vtkPistonMapper() mapper.SetInputConnection(filter.GetOutputPort()) mapper.Update() #TODO why is this necessary actor = vtk.vtkActor() actor.SetMapper(mapper) renderer.AddActor(actor) widget = vtk.vtkImplicitPlaneWidget() widget.PlaceWidget(bounds) widget.SetOrigin([plane.GetOrigin()[x] for x in 0, 1, 2]) widget.SetNormal([plane.GetNormal()[x] for x in 0, 1, 2]) widget.SetInteractor(iren) widget.AddObserver("InteractionEvent", widgetCallBack) widget.SetEnabled(1) widget.DrawPlaneOff() renderer.ResetCamera() renwin.Render() img_file = "TestSlice.png" Testing.compareImage(renwin, Testing.getAbsImagePath(img_file)) if Testing.isInteractive(): widget.DrawPlaneOn() iren.Start()
#!/usr/bin/env python import vtk from vtk.util.misc import vtkGetDataRoot VTK_DATA_ROOT = vtkGetDataRoot() RANGE = 150 MAX_ITERATIONS_1 = RANGE MAX_ITERATIONS_2 = RANGE XRAD = 200 YRAD = 200 mandelbrot1 = vtk.vtkImageMandelbrotSource() mandelbrot1.SetMaximumNumberOfIterations(150) mandelbrot1.SetWholeExtent(0, XRAD - 1, 0, YRAD - 1, 0, 0) mandelbrot1.SetSampleCX(1.3 / XRAD, 1.3 / XRAD, 1.3 / XRAD, 1.3 / XRAD) mandelbrot1.SetOriginCX(-0.72, 0.22, 0.0, 0.0) mandelbrot1.SetProjectionAxes(0, 1, 2) mapToWL = vtk.vtkImageMapToWindowLevelColors() mapToWL.SetInputConnection(mandelbrot1.GetOutputPort()) mapToWL.SetWindow(RANGE) mapToWL.SetLevel(RANGE / 3.0) # set the window/level to 255.0/127.5 to view full range viewer = vtk.vtkImageViewer() viewer.SetInputConnection(mapToWL.GetOutputPort()) viewer.SetColorWindow(255.0) viewer.SetColorLevel(127.5) viewer.Render()
import vtk from vtk.test import Testing from vtk.util.misc import vtkGetDataRoot VTK_DATA_ROOT = vtkGetDataRoot() # Create the standard renderer, render window # and interactor ren1 = vtk.vtkRenderer() renWin = vtk.vtkRenderWindow() renWin.AddRenderer(ren1) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) iren.SetDesiredUpdateRate(3) # Create a small mesh. The coarser and more opaque the mesh, the easier it # is to see rendering errors. input = vtk.vtkImageMandelbrotSource() input.SetWholeExtent(0, 2, 0, 2, 0, 2) input.SetSizeCX(2, 2, 2, 2) input.SetMaximumNumberOfIterations(10) # make sure we have only tetrahedra trifilter = vtk.vtkDataSetTriangleFilter() trifilter.SetInputConnection(input.GetOutputPort()) # Create transfer mapping scalar value to opacity opacityTransferFunction = vtk.vtkPiecewiseFunction() opacityTransferFunction.AddPoint(0, 0.0) opacityTransferFunction.AddPoint(10, 1.0) # Create transfer mapping scalar value to color colorTransferFunction = vtk.vtkColorTransferFunction() colorTransferFunction.AddRGBPoint(0, 1.0, 0.0, 1.0) colorTransferFunction.AddRGBPoint(2, 0.0, 0.0, 1.0) colorTransferFunction.AddRGBPoint(4, 0.0, 1.0, 1.0)
#!/usr/bin/env python import vtk from vtk.test import Testing from vtk.util.misc import vtkGetDataRoot VTK_DATA_ROOT = vtkGetDataRoot() RANGE = 150 MAX_ITERATIONS_1 = RANGE MAX_ITERATIONS_2 = RANGE XRAD = 200 YRAD = 200 mandelbrot1 = vtk.vtkImageMandelbrotSource() mandelbrot1.SetMaximumNumberOfIterations(150) mandelbrot1.SetWholeExtent(0,expr.expr(globals(), locals(),["XRAD","-1"]),0,expr.expr(globals(), locals(),["YRAD","-1"]),0,0) mandelbrot1.SetSampleCX(expr.expr(globals(), locals(),["1.3","/","XRAD"]),expr.expr(globals(), locals(),["1.3","/","XRAD"]),expr.expr(globals(), locals(),["1.3","/","XRAD"]),expr.expr(globals(), locals(),["1.3","/","XRAD"])) mandelbrot1.SetOriginCX(-0.72,0.22,0.0,0.0) mandelbrot1.SetProjectionAxes(0,1,2) mapToWL = vtk.vtkImageMapToWindowLevelColors() mapToWL.SetInputConnection(mandelbrot1.GetOutputPort()) mapToWL.SetWindow(RANGE) mapToWL.SetLevel(expr.expr(globals(), locals(),["RANGE","/","3.0"])) # set the window/level to 255.0/127.5 to view full range viewer = vtk.vtkImageViewer() viewer.SetInputConnection(mapToWL.GetOutputPort()) viewer.SetColorWindow(255.0) viewer.SetColorLevel(127.5) viewer.Render() # --- end of script --
def testSlice(self): global plane, filter, args writefiles = "SaveData" in args renderer = vtk.vtkRenderer() renwin = vtk.vtkRenderWindow() renwin.AddRenderer(renderer) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renwin) renwin.Render() if "GPURender" in args: vtk.vtkPistonMapper.InitCUDAGL(renwin) src = vtk.vtkImageMandelbrotSource() src.SetWholeExtent(0,20,0,20,0,20) #scale and bias until piston understands origin and spacing src.Update() inputdata = src.GetOutput() if "Normalize" in args: testdata1 = inputdata.NewInstance() testdata1.ShallowCopy(inputdata) testdata1.SetSpacing(1,1,1) testdata1.SetOrigin(0,0,0) inputdata = testdata1 bounds = inputdata.GetBounds() center = [(bounds[1]-bounds[0])/2+bounds[0], (bounds[3]-bounds[2])/2+bounds[2], (bounds[5]-bounds[4])/2+bounds[4]] d2p = vtk.vtkDataSetToPiston() d2p.SetInputData(inputdata) #d2p.SetInputConnection(src.GetOutputPort()) plane = vtk.vtkPlane() plane.SetOrigin(center) plane.SetNormal(0,0,1) filter = vtk.vtkPistonSlice() filter.SetInputConnection(d2p.GetOutputPort()) filter.SetClippingPlane(plane) filter.SetOffset(0.0) p2d = vtk.vtkPistonToDataSet() p2d.SetOutputDataSetType(vtk.VTK_POLY_DATA) p2d.SetInputConnection(filter.GetOutputPort()) if writefiles: writeFile(p2d, "piston_slice.vtk") mapper = vtk.vtkPistonMapper() mapper.SetInputConnection(filter.GetOutputPort()) mapper.Update() #TODO why is this necessary actor = vtk.vtkActor() actor.SetMapper(mapper) renderer.AddActor(actor) widget = vtk.vtkImplicitPlaneWidget() widget.PlaceWidget(bounds) widget.SetOrigin([plane.GetOrigin()[x] for x in 0,1,2])
import vtk from vtk.test import Testing from vtk.util.misc import vtkGetDataRoot VTK_DATA_ROOT = vtkGetDataRoot() # Create the standard renderer, render window # and interactor ren1 = vtk.vtkRenderer() renWin = vtk.vtkRenderWindow() renWin.AddRenderer(ren1) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) iren.SetDesiredUpdateRate(3) # Create a small mesh. The coarser and more opaque the mesh, the easier it # is to see rendering errors. input = vtk.vtkImageMandelbrotSource() input.SetWholeExtent(0,2,0,2,0,2) input.SetSizeCX(2,2,2,2) input.SetMaximumNumberOfIterations(10) # make sure we have only tetrahedra trifilter = vtk.vtkDataSetTriangleFilter() trifilter.SetInputConnection(input.GetOutputPort()) # Create transfer mapping scalar value to opacity opacityTransferFunction = vtk.vtkPiecewiseFunction() opacityTransferFunction.AddPoint(0,0.0) opacityTransferFunction.AddPoint(10,1.0) # Create transfer mapping scalar value to color colorTransferFunction = vtk.vtkColorTransferFunction() colorTransferFunction.AddRGBPoint(0,1.0,0.0,1.0) colorTransferFunction.AddRGBPoint(2,0.0,0.0,1.0) colorTransferFunction.AddRGBPoint(4,0.0,1.0,1.0)
def testConversion(self): global args writefiles = "SaveData" in args src = vtk.vtkImageMandelbrotSource() src2 = vtk.vtkSphereSource() d2p = vtk.vtkDataSetToPiston() p2d = vtk.vtkPistonToDataSet() #test sending imagedata to the card and getting it back src.SetWholeExtent(0,10,0,10,0,10) d2p.SetInputConnection(src.GetOutputPort()) p2d.SetOutputDataSetType(vtk.VTK_IMAGE_DATA) p2d.SetInputConnection(d2p.GetOutputPort()) p2d.Update() printDS("INPUT IMAGE DATA", src.GetOutput()) printTDO("GPU VERSION", d2p.GetPistonDataObjectOutput(0)) printDS("OUTPUT IMAGE DATA", p2d.GetDataSetOutput(0)) if writefiles: writeFile(p2d, "piston_imagedata.vtk") inDS = src.GetOutput() outDS = p2d.GetDataSetOutput(0) if inDS.GetBounds() != outDS.GetBounds(): self.fail("Problem: bounds were not preserved.") if inDS.GetNumberOfCells() != outDS.GetNumberOfCells(): self.fail("Problem: cells were not preserved.") if inDS.GetPointData().GetArray(0).GetName() != outDS.GetPointData().GetArray(0).GetName(): self.fail("Problem: arrays were not preserved.") #test sending polydata to the card and getting it back #test a pipeline that works on poly data #below doesn't work in vtk6, gets null output for p2d #since data type AND upstream pipeline changes #workaround until that is fixes #d2p.SetInputConnection(src2.GetOutputPort()) #p2d.SetOutputDataSetType(vtk.VTK_POLY_DATA) #p2d.Update() #printDS("INPUT POLYDATA", src2.GetOutput()) #printTDO("GPU VERSION", d2p.GetPistonDataObjectOutput(0)) #printDS("OUTPUT POLYDATA", p2d.GetDataSetOutput(0)) #if writefiles: # writeFile(p2d, "piston_polydata.vtk") # #so use this instead d2p2 = vtk.vtkDataSetToPiston() p2d2 = vtk.vtkPistonToDataSet() d2p2.SetInputConnection(src2.GetOutputPort()) p2d2.SetOutputDataSetType(vtk.VTK_POLY_DATA) p2d2.SetInputConnection(d2p2.GetOutputPort()) p2d2.Update() printDS("INPUT POLYDATA", src2.GetOutput()) printTDO("GPU VERSION", d2p2.GetPistonDataObjectOutput(0)) printDS("OUTPUT POLYDATA", p2d2.GetDataSetOutput(0)) if writefiles: writeFile(p2d2, "piston_polydata.vtk") inDS = src2.GetOutput() outDS = p2d2.GetDataSetOutput(0) if inDS.GetBounds() != outDS.GetBounds(): self.fail("Problem: bounds were not preserved.") if inDS.GetNumberOfCells() != outDS.GetNumberOfCells(): self.fail("Problem: cells were not preserved.") if inDS.GetPointData().GetArray(0).GetName() != outDS.GetPointData().GetArray(0).GetName(): self.fail("Problem: arrays were not preserved.")
def main(): colors = vtk.vtkNamedColors() colors.SetColor('leftBkg', [0.6, 0.5, 0.4, 1.0]) colors.SetColor('centreBkg', [0.1, 0.5, 0.4, 1.0]) colors.SetColor('rightBkg', [0.4, 0.5, 0.6, 1.0]) # Create image 1 source1 = vtk.vtkImageMandelbrotSource() source1.SetWholeExtent(0, 255, 0, 255, 0, 0) source1.Update() source1Double = vtk.vtkImageCast() source1Double.SetInputConnection(0, source1.GetOutputPort()) source1Double.SetOutputScalarTypeToDouble() # Create image 2 source2 = vtk.vtkImageSinusoidSource() source2.SetWholeExtent(0, 255, 0, 255, 0, 0) source2.Update() # Do the sum sumFilter = vtk.vtkImageWeightedSum() sumFilter.SetWeight(0, 0.8) sumFilter.SetWeight(1, 0.2) sumFilter.AddInputConnection(source1Double.GetOutputPort()) sumFilter.AddInputConnection(source2.GetOutputPort()) sumFilter.Update() # Display the images source1CastFilter = vtk.vtkImageCast() source1CastFilter.SetInputConnection(source1.GetOutputPort()) source1CastFilter.SetOutputScalarTypeToUnsignedChar() source1CastFilter.Update() source2CastFilter = vtk.vtkImageCast() source2CastFilter.SetInputConnection(source2.GetOutputPort()) source2CastFilter.SetOutputScalarTypeToUnsignedChar() source2CastFilter.Update() summedCastFilter = vtk.vtkImageCast() summedCastFilter.SetInputConnection(sumFilter.GetOutputPort()) summedCastFilter.SetOutputScalarTypeToUnsignedChar() summedCastFilter.Update() # Create actors source1Actor = vtk.vtkImageActor() source1Actor.GetMapper().SetInputConnection( source1CastFilter.GetOutputPort()) source2Actor = vtk.vtkImageActor() source2Actor.GetMapper().SetInputConnection( source2CastFilter.GetOutputPort()) summedActor = vtk.vtkImageActor() summedActor.GetMapper().SetInputConnection( summedCastFilter.GetOutputPort()) # There will be one render window renderWindow = vtk.vtkRenderWindow() renderWindow.SetSize(600, 300) # And one interactor interactor = vtk.vtkRenderWindowInteractor() interactor.SetRenderWindow(renderWindow) # Define viewport ranges # (xmin, ymin, xmax, ymax) leftViewport = [0.0, 0.0, 0.33, 1.0] centerViewport = [0.33, 0.0, .66, 1.0] rightViewport = [0.66, 0.0, 1.0, 1.0] # Setup renderers leftRenderer = vtk.vtkRenderer() renderWindow.AddRenderer(leftRenderer) leftRenderer.SetViewport(leftViewport) leftRenderer.SetBackground(colors.GetColor3d('leftBkg')) centerRenderer = vtk.vtkRenderer() renderWindow.AddRenderer(centerRenderer) centerRenderer.SetViewport(centerViewport) centerRenderer.SetBackground(colors.GetColor3d('centreBkg')) rightRenderer = vtk.vtkRenderer() renderWindow.AddRenderer(rightRenderer) rightRenderer.SetViewport(rightViewport) rightRenderer.SetBackground(colors.GetColor3d('rightBkg')) leftRenderer.AddActor(source1Actor) centerRenderer.AddActor(source2Actor) rightRenderer.AddActor(summedActor) leftRenderer.ResetCamera() centerRenderer.ResetCamera() rightRenderer.ResetCamera() renderWindow.Render() interactor.Start()
def testConversion(self): global args writefiles = "SaveData" in args src = vtk.vtkImageMandelbrotSource() src2 = vtk.vtkSphereSource() d2p = vtk.vtkDataSetToPiston() p2d = vtk.vtkPistonToDataSet() #test sending imagedata to the card and getting it back src.SetWholeExtent(0, 10, 0, 10, 0, 10) d2p.SetInputConnection(src.GetOutputPort()) p2d.SetOutputDataSetType(vtk.VTK_IMAGE_DATA) p2d.SetInputConnection(d2p.GetOutputPort()) p2d.Update() printDS("INPUT IMAGE DATA", src.GetOutput()) printTDO("GPU VERSION", d2p.GetPistonDataObjectOutput(0)) printDS("OUTPUT IMAGE DATA", p2d.GetDataSetOutput(0)) if writefiles: writeFile(p2d, "piston_imagedata.vtk") inDS = src.GetOutput() outDS = p2d.GetDataSetOutput(0) if inDS.GetBounds() != outDS.GetBounds(): self.fail("Problem: bounds were not preserved.") if inDS.GetNumberOfCells() != outDS.GetNumberOfCells(): self.fail("Problem: cells were not preserved.") if inDS.GetPointData().GetArray( 0).GetName() != outDS.GetPointData().GetArray(0).GetName(): self.fail("Problem: arrays were not preserved.") #test sending polydata to the card and getting it back #test a pipeline that works on poly data #below doesn't work in vtk6, gets null output for p2d #since data type AND upstream pipeline changes #workaround until that is fixes #d2p.SetInputConnection(src2.GetOutputPort()) #p2d.SetOutputDataSetType(vtk.VTK_POLY_DATA) #p2d.Update() #printDS("INPUT POLYDATA", src2.GetOutput()) #printTDO("GPU VERSION", d2p.GetPistonDataObjectOutput(0)) #printDS("OUTPUT POLYDATA", p2d.GetDataSetOutput(0)) #if writefiles: # writeFile(p2d, "piston_polydata.vtk") # #so use this instead d2p2 = vtk.vtkDataSetToPiston() p2d2 = vtk.vtkPistonToDataSet() d2p2.SetInputConnection(src2.GetOutputPort()) p2d2.SetOutputDataSetType(vtk.VTK_POLY_DATA) p2d2.SetInputConnection(d2p2.GetOutputPort()) p2d2.Update() printDS("INPUT POLYDATA", src2.GetOutput()) printTDO("GPU VERSION", d2p2.GetPistonDataObjectOutput(0)) printDS("OUTPUT POLYDATA", p2d2.GetDataSetOutput(0)) if writefiles: writeFile(p2d2, "piston_polydata.vtk") inDS = src2.GetOutput() outDS = p2d2.GetDataSetOutput(0) if inDS.GetBounds() != outDS.GetBounds(): self.fail("Problem: bounds were not preserved.") if inDS.GetNumberOfCells() != outDS.GetNumberOfCells(): self.fail("Problem: cells were not preserved.") if inDS.GetPointData().GetArray( 0).GetName() != outDS.GetPointData().GetArray(0).GetName(): self.fail("Problem: arrays were not preserved.")