コード例 #1
0
ファイル: waveletcontour.py プロジェクト: sakjain92/paraview
def flush_render_buffer():
    '''When running as a single process use the WindowToImage filter to
    force a framebuffer read.  This bypasses driver optimizations that
    perform lazy rendering and allows you to get actual frame rates for
    a single process with a GPU.  Multi-process doesn't need this since
    compositing forces the frame buffer read.
    '''

    # If we're not using off-screen rendering then we can bypass this since
    # the frame buffer display will force a GL flush
    w = GetRenderView().SMProxy.GetRenderWindow()
    if not w.GetOffScreenRendering():
        return

    from vtkmodules.vtkRenderingCore import vtkWindowToImageFilter
    from vtkmodules.vtkParallelCore import vtkMultiProcessController

    # If we're using MPI we can also bypass this since compositing will
    # for a GL flush
    controller = vtkMultiProcessController.GetGlobalController()
    if controller.GetNumberOfProcesses() > 1:
        return

    # Force a GL flush by retrieving the frame buffer image
    w2i = vtkWindowToImageFilter()
    w2i.ReadFrontBufferOff()
    w2i.ShouldRerenderOff()
    w2i.SetInput(w)
    w2i.Modified()
    w2i.Update()
コード例 #2
0
ファイル: waveletvolume.py プロジェクト: Kitware/ParaView
def flush_render_buffer():
    '''When running as a single process use the WindowToImage filter to
    force a framebuffer read.  This bypasses driver optimizations that
    perform lazy rendering and allows you to get actual frame rates for
    a single process with a GPU.  Multi-process doesn't need this since
    compositing forces the frame buffer read.
    '''

    # If we're not using off-screen rendering then we can bypass this since
    # the frame buffer display will force a GL flush
    w = GetRenderView().SMProxy.GetRenderWindow()
    if not w.GetOffScreenRendering():
        return

    from vtkmodules.vtkParallelCore import vtkMultiProcessController
    from vtkmodules.vtkRenderingCore import vtkWindowToImageFilter

    # If we're using MPI we can also bypass this since compositing will
    # for a GL flush
    controller = vtkMultiProcessController.GetGlobalController()
    if controller.GetNumberOfProcesses() > 1:
        return

    # Force a GL flush by retrieving the frame buffer image
    w2i = vtkWindowToImageFilter()
    w2i.ReadFrontBufferOff()
    w2i.ShouldRerenderOff()
    w2i.SetInput(w)
    w2i.Modified()
    w2i.Update()
コード例 #3
0
ファイル: waveletcontour.py プロジェクト: sakjain92/paraview
def save_render_buffer(fname):
    '''Similar to SaveScreenshot except a re-render will not be triggered'''
    from vtkmodules.vtkRenderingCore import vtkWindowToImageFilter
    w = GetRenderView().SMProxy.GetRenderWindow()
    w2i = vtkWindowToImageFilter()
    w2i.ReadFrontBufferOff()
    w2i.ShouldRerenderOff()
    w2i.SetInput(w)
    w2i.Modified()
    tiff = TIFFWriter()
    tiff.Input = w2i.GetOutput()
    tiff.FileName = fname
    tiff.UpdatePipeline()
コード例 #4
0
ファイル: waveletvolume.py プロジェクト: Kitware/ParaView
def save_render_buffer(fname):
    '''Similar to SaveScreenshot except a re-render will not be triggered'''
    from vtkmodules.vtkRenderingCore import vtkWindowToImageFilter
    w = GetRenderView().SMProxy.GetRenderWindow()
    w2i = vtkWindowToImageFilter()
    w2i.ReadFrontBufferOff()
    w2i.ShouldRerenderOff()
    w2i.SetInput(w)
    w2i.Modified()
    png = PNGWriter()
    png.Input = w2i.GetOutput()
    png.FileName = fname
    png.UpdatePipeline()
コード例 #5
0
ファイル: misc.py プロジェクト: jpouderoux/VTK
def vtkRegressionTestImage( renWin ):
    """vtkRegressionTestImage(renWin) -- produce regression image for window

    This function writes out a regression .png file for a vtkWindow.
    Does anyone involved in testing care to elaborate?
    """
    from vtkmodules.vtkRenderingCore import vtkWindowToImageFilter
    from vtkmodules.vtkIOImage import vtkPNGReader
    from vtkmodules.vtkImagingCore import vtkImageDifference

    imageIndex=-1;
    for i in range(0, len(sys.argv)):
        if sys.argv[i] == '-V' and i < len(sys.argv)-1:
            imageIndex = i+1

    if imageIndex != -1:
        fname = os.path.join(vtkGetDataRoot(), sys.argv[imageIndex])

        rt_w2if = vtkWindowToImageFilter()
        rt_w2if.SetInput(renWin)

        if os.path.isfile(fname):
            pass
        else:
            rt_pngw = vtkPNGWriter()
            rt_pngw.SetFileName(fname)
            rt_pngw.SetInputConnection(rt_w2if.GetOutputPort())
            rt_pngw.Write()
            rt_pngw = None

        rt_png = vtkPNGReader()
        rt_png.SetFileName(fname)

        rt_id = vtkImageDifference()
        rt_id.SetInputConnection(rt_w2if.GetOutputPort())
        rt_id.SetImageConnection(rt_png.GetOutputPort())
        rt_id.Update()

        if rt_id.GetThresholdedError() <= 10:
            return 1
        else:
            sys.stderr.write('Failed image test: %f\n'
                             % rt_id.GetThresholdedError())
            return 0
    return 2
コード例 #6
0
def vtkRegressionTestImage(renWin):
    """vtkRegressionTestImage(renWin) -- produce regression image for window

    This function writes out a regression .png file for a vtkWindow.
    Does anyone involved in testing care to elaborate?
    """
    from vtkmodules.vtkRenderingCore import vtkWindowToImageFilter
    from vtkmodules.vtkIOImage import vtkPNGReader
    from vtkmodules.vtkImagingCore import vtkImageDifference

    imageIndex = -1
    for i in range(0, len(sys.argv)):
        if sys.argv[i] == '-V' and i < len(sys.argv) - 1:
            imageIndex = i + 1

    if imageIndex != -1:
        fname = os.path.join(vtkGetDataRoot(), sys.argv[imageIndex])

        rt_w2if = vtkWindowToImageFilter()
        rt_w2if.SetInput(renWin)

        if os.path.isfile(fname):
            pass
        else:
            rt_pngw = vtkPNGWriter()
            rt_pngw.SetFileName(fname)
            rt_pngw.SetInputConnection(rt_w2if.GetOutputPort())
            rt_pngw.Write()
            rt_pngw = None

        rt_png = vtkPNGReader()
        rt_png.SetFileName(fname)

        rt_id = vtkImageDifference()
        rt_id.SetInputConnection(rt_w2if.GetOutputPort())
        rt_id.SetImageConnection(rt_png.GetOutputPort())
        rt_id.Update()

        if rt_id.GetThresholdedError() <= 10:
            return 1
        else:
            sys.stderr.write('Failed image test: %f\n' %
                             rt_id.GetThresholdedError())
            return 0
    return 2
コード例 #7
0
ファイル: Testing.py プロジェクト: testmana2/VTK
def compareImage(renwin, img_fname, threshold=10):
    """Compares renwin's (a vtkRenderWindow) contents with the image
    file whose name is given in the second argument.  If the image
    file does not exist the image is generated and stored.  If not the
    image in the render window is compared to that of the figure.
    This function also handles multiple images and finds the best
    matching image.  """

    global _NO_IMAGE
    if _NO_IMAGE:
        return

    w2if = vtkWindowToImageFilter()
    w2if.ReadFrontBufferOff()
    w2if.SetInput(renwin)
    w2if.Update()
    try:
        compareImageWithSavedImage(w2if, img_fname, threshold)
    except RuntimeError:
        w2if.ReadFrontBufferOn()
        compareImageWithSavedImage(w2if, img_fname, threshold)
    return
コード例 #8
0
ファイル: dataset_builder.py プロジェクト: xj361685640/VTK
 def __init__(self, magnification=1):
     self.windowToImage = vtkWindowToImageFilter()
     self.windowToImage.SetScale(magnification)
     self.windowToImage.SetInputBufferTypeToRGB()
     self.windowToImage.ReadFrontBufferOn()
     self.writer = None
コード例 #9
0
ファイル: Testing.py プロジェクト: testmana2/VTK
    def prepareTestImage(self, interactor, **kwargs):
        import time
        startTime = time.time()
        events = []

        def onKeyPress(caller, eventId):
            print('key is "' + caller.GetKeySym() + '"')
            events.append((time.time() - startTime, eventId, caller.GetKeySym()))

        def onButton(caller, eventId):
            events.append((time.time() - startTime, eventId))

        def onMovement(caller, eventId):
            events.append((time.time() - startTime, eventId, caller.GetEventPosition()))

        interactor.AddObserver(vtkCommand.KeyPressEvent, onKeyPress)
        interactor.AddObserver(vtkCommand.LeftButtonPressEvent, onButton)
        interactor.AddObserver(vtkCommand.LeftButtonReleaseEvent, onButton)
        interactor.AddObserver(vtkCommand.MouseMoveEvent, onMovement)
        interactor.Start()
        rw = interactor.GetRenderWindow()
        baseline = 'baselineFilename'
        if 'filename' in kwargs:
            # Render an image and save it to the given filename
            w2if = vtkWindowToImageFilter()
            w2if.ReadFrontBufferOff()
            w2if.SetInput(rw)
            w2if.Update()
            baselineWithPath = kwargs['filename']
            baseline = os.path.split(baselineWithPath)[-1]
            pngw = vtkPNGWriter()
            pngw.SetFileName(baselineWithPath)
            pngw.SetInputConnection(w2if.GetOutputPort())
            try:
                pngw.Write()
            except RuntimeError:
                w2if.ReadFrontBufferOn()
                pngw.Write()
        rsz = rw.GetSize()
        rrc = rw.GetRenderers()
        rrs = [rrc.GetItemAsObject(i) for i in range(rrc.GetNumberOfItems())]
        eye = [0,0,1]
        aim = [0,0,0]
        up  = [0,1,0]
        if len(rrs) > 0:
            cam = rrs[0].GetActiveCamera()
            eye = cam.GetPosition()
            aim = cam.GetFocalPoint()
            up  = cam.GetViewUp()
        print("""
        Replace prepareTestImage() in your script with the following to make a test:

            camera.SetPosition({eye[0]}, {eye[1]}, {eye[2]})
            camera.SetFocalPoint({aim[0]}, {aim[1]}, {aim[2]})
            camera.SetViewUp({up[0]}, {up[1]}, {up[2]})
            renwin.SetSize({rsz[0]}, {rsz[1]})
            self.assertImageMatch(renwin, '{baseline}')

        Be sure that "renwin" and "camera" are valid variables (or rename them in the
        snippet above) referencing the vtkRenderWindow and vtkCamera, respectively.
        """.format(eye=eye, aim=aim, up=up, rsz=rsz, baseline=baseline))
        return events