Ejemplo n.º 1
0
def create_renderer(viewport=None, actor=None, color_scheme=None):
# Create the Renderer
    renderer = vtk.vtkRenderer()
    if color_scheme == 'bw':
        renderer.SetBackground(0.0, 0.0, 0.0)
    elif color_scheme == 'wb':
        renderer.SetBackground(1.0, 1.0, 1.0)
    else:
        renderer.SetBackground(0.1, 0.2, 0.31)
    if viewport:
        renderer.SetViewport(viewport)

    light_kit = vtk.vtkLightKit()
    light_kit.AddLightsToRenderer(renderer)
    light_kit.SetHeadLightWarmth(0.2)
    light_kit.SetFillLightWarmth(0.5)
    light_kit.SetKeyLightWarmth(0.5)
    light_kit.SetKeyLightAzimuth(0.0)

#    camera = renderer.GetActiveCamera()
#    camera.SetViewUp(0.0, 0.0, 1.0)
#    camera.SetPosition(0.0, 0.0, 50.0)
#    camera.ParallelProjectionOn()
#    camera.SetFocalPoint(0.0, 0.0, 0.0)
#    camera.SetViewAngle(45)

    if actor:
        renderer.AddActor(actor)
    renderer.ResetCamera()
    return renderer
Ejemplo n.º 2
0
 def __init__(self):
   self.lightKit = vtk.vtkLightKit()
   self.lightKit.MaintainLuminanceOn()
   lightkitObserverTag = self.lightKit.AddObserver(vtk.vtkCommand.ModifiedEvent, self.onLightkitModified)
   self.ssaoEnabled = False
   self.ssaoSizeScaleLog = 0.0
   self.managedViewNodes = []
   self.imageBasedLightingImageFile = None
Ejemplo n.º 3
0
 def __init__(self, *args, **kwargs):
     """Initializer.
     """
     VisualizerNode.__init__(self, *args, **kwargs)
     # setup renderer
     self.renderer = vtk.vtkRenderer()
     # configure background
     self.renderer.SetBackground([0, 0, 0])
     # configure lighting
     light_kit = vtk.vtkLightKit()
     light_kit.SetKeyLightIntensity(1.0)
     light_kit.AddLightsToRenderer(self.renderer)
Ejemplo n.º 4
0
 def __init__(self, *args, **kwargs):
     """Initializer.
     """
     VisualizerNode.__init__(self, *args, **kwargs)
     # setup renderer
     self.renderer = vtk.vtkRenderer()
     # configure background
     self.renderer.SetBackground([0, 0, 0])
     # configure lighting
     light_kit = vtk.vtkLightKit()
     light_kit.SetKeyLightIntensity(1.0)
     light_kit.AddLightsToRenderer(self.renderer)
Ejemplo n.º 5
0
 def removeManagedView(self, viewNode):
   if viewNode not in self.managedViewNodes:
     return
   self.managedViewNodes.remove(viewNode)
   renderWindow = self.renderWindowFromViewNode(viewNode)
   renderer = renderWindow.GetRenderers().GetFirstRenderer()
   # Make a copy of current lightkit
   currentLightKit = vtk.vtkLightKit()
   currentLightKit.DeepCopy(self.lightKit)
   renderer.RemoveAllLights()
   currentLightKit.AddLightsToRenderer(renderer)
   renderer.UseSphericalHarmonicsOn()
   renderer.SetEnvironmentTexture(None)
   renderer.UseImageBasedLightingOff()
   renderWindow.Render()
Ejemplo n.º 6
0
        def init_vtk():

            renWin = vtk.vtkRenderWindow()

            renderers = []

            if 1:
                camera = vtk.vtkCamera()
                camera.SetParallelProjection(1)

                camera.SetClippingRange(1e-3, 1e6)

                ren1 = vtk.vtkRenderer()
                lk = vtk.vtkLightKit()
                ren1.SetViewport(0.0, 0, 1.0, 1.0)
                ren1.SetBackground(.6, .6, .75)
                ren1.SetActiveCamera(camera)
                renWin.AddRenderer(ren1)
                renderers.append(ren1)

            renWin.SetSize(1024, 768)
            return renWin, renderers
        def init_vtk():

            renWin = vtk.vtkRenderWindow()

            renderers = []

            if 1:
                camera = vtk.vtkCamera()
                camera.SetParallelProjection(1)

                camera.SetClippingRange (1e-3, 1e6)

                ren1 = vtk.vtkRenderer()
                lk = vtk.vtkLightKit()
                ren1.SetViewport(0.0,0,1.0,1.0)
                ren1.SetBackground( .6,.6,.75)
                ren1.SetActiveCamera( camera )
                renWin.AddRenderer( ren1 )
                renderers.append( ren1 )

            renWin.SetSize( 1024, 768 )
            return renWin, renderers
Ejemplo n.º 8
0
    def start(self):
        # setup the vtk background - as default, set to light
        self.vtk_renderer.GradientBackgroundOn()
        self.setBackgroundLight()

        # setup the default camera
        self.camera_perspective = False
        self.defaultPerspectiveCamera()

        # setup a default light kit (simple sun illumination + camera spotlight)
        self.light_kit = vtk.vtkLightKit()
        self.light_kit.MaintainLuminanceOn()
        self.light_kit.AddLightsToRenderer(self.vtk_renderer)

        # add the orientation axes to the bottom left of the canvas
        self.Qt4GUI.addOrientationAxes()

        # setup the default base grid - 1x1km, 10m squares
        self.Qt4GUI.addGrid(['grids', '1 km x 1 km, 10 m'], 1000, 10)

        # startup vtk
        self.vtk_interactor.Initialize()
        self.vtk_interactor.Start()
Ejemplo n.º 9
0
 def _add_lights_to_renderer(self, renderer):
     # Create a automatic light kit
     light_kit = vtk.vtkLightKit()
     light_kit.SetKeyLightIntensity(self.settings.light_intensity)
     light_kit.AddLightsToRenderer(renderer)
Ejemplo n.º 10
0
def visualise_default(surface,ref,case,arrayname,mini,maxi):
    """Visualise surface with a default parameters."""

    #Create a lookup table to map cell data to colors
    lut = vtk.vtkLookupTable()
    lut.SetNumberOfTableValues(255)
    lut.SetValueRange(0, 255)

    # qualitative data from colorbrewer  --> matching qualitative colormap of Paraview
    lut.SetTableValue(0     , 0     , 0     , 0, 1)  #Black
    lut.SetTableValue(mini, 1,1,1, 1) # white
    lut.SetTableValue(mini+1, 77/255.,175/255., 74/255. ,     1)  # green
    lut.SetTableValue(maxi-3, 152/255.,78/255.,163/255., 1) # purple
    lut.SetTableValue(maxi-2, 255/255.,127/255., 0., 1) # orange
    lut.SetTableValue(maxi-1, 55/255., 126/255., 184/255., 1) # blue
    lut.SetTableValue(maxi, 166/255.,86/255.,40/255., 1) # brown
    lut.Build()

    # create a text actor
    txt = vtk.vtkTextActor()
    txt.SetInput(case)
    txtprop=txt.GetTextProperty()
    txtprop.SetFontFamilyToArial()
    txtprop.SetFontSize(18)
    txtprop.SetColor(0, 0, 0)
    txt.SetDisplayPosition(20, 30)

    # create a rendering window, renderer, and renderwindowinteractor
    ren = vtk.vtkRenderer()
    renWin = vtk.vtkRenderWindow()
    renWin.AddRenderer(ren)
    iren = vtk.vtkRenderWindowInteractor()
    style = vtk.vtkInteractorStyleTrackballCamera()
    iren.SetInteractorStyle(style)
    iren.SetRenderWindow(renWin)

    # surface mapper and actor
    surfacemapper = vtk.vtkPolyDataMapper()
    surfacemapper.SetInputData(surface)
    surfacemapper.SetScalarModeToUsePointFieldData()
    surfacemapper.SelectColorArray(arrayname)
    surfacemapper.SetLookupTable(lut)
    surfacemapper.SetScalarRange(0,255)
    surfaceactor = vtk.vtkActor()
    surfaceactor.SetMapper(surfacemapper)

    # refsurface mapper and actor
    refmapper = vtk.vtkPolyDataMapper()
    refmapper.SetInputData(ref)
    refmapper.SetScalarModeToUsePointFieldData()
    refmapper.SelectColorArray(arrayname)
    refmapper.SetLookupTable(lut)
    refmapper.SetScalarRange(0,255)
    refactor = vtk.vtkActor()
    refactor.GetProperty().SetOpacity(0.7)
    refactor.SetMapper(refmapper)


    # Remove existing lights and add lightkit lights
    ren.RemoveAllLights()
    lightkit = vtk.vtkLightKit()
    lightkit.AddLightsToRenderer(ren)

    # assign actors to the renderer
    ren.AddActor(refactor)
    ren.AddActor(surfaceactor)
    ren.AddActor(txt)

    # set the background and size; zoom in; and render
    ren.SetBackground(1, 1, 1)
    renWin.SetSize(1280, 960)
    ren.ResetCamera()
    ren.GetActiveCamera().Zoom(1)

    # enable user interface interactor
    iren.Initialize()
    renWin.Render()
    iren.Start()

    outcam = ren.GetActiveCamera()
Ejemplo n.º 11
0
def visualise_nan_glyph(surface,glyph,overlay,case,arrayname,edges=0,flip=0,colormap='BlYl',
    interact=1,filename='./screenshot.png',LegendTitle='',mini='',maxi=''):
    """Visualise surface with glyphs colormapped according to 'arrayname'."""

    # glyph mapper
    glyphmapper = vtk.vtkPolyDataMapper()
    glyphmapper.SetInputData(glyph)
    glyphmapper.SelectColorArray(arrayname)


    # only pointdata
    array = vtk_to_numpy(surface.GetPointData().GetArray(arrayname))
    glyphmapper.SetScalarModeToUsePointFieldData()

    if not maxi:
        maxi = np.nanmax(array)

    if not mini:
        # mini might be zero, and is true
        if mini == 0:
            mini = mini
        else:
            mini = np.nanmin(array)

    colors = getcolors(colormap)
    numcolors = int(len(colors))

    if colormap == '24_regions':
        lut = vtk.vtkLookupTable()
        lut.SetNumberOfTableValues(24)

        # don't interpolate
        for c in range(len(colors)):
            this = colors[c]
            lut.SetTableValue(this[0], this[1], this[2], this[3])
        lut.Build()
        glyphmapper.SetLookupTable(lut)
        glyphmapper.SetScalarRange(1,24)
        glyphmapper.InterpolateScalarsBeforeMappingOn()
    else:
        lut = vtk.vtkColorTransferFunction()
        lut.SetColorSpaceToHSV()
        lut.SetNanColor(0.5,0.5,0.5)
        for c in range(len(colors)):
                cmin = colors[0][0]
                cmax = colors[numcolors-1][0]
                this = colors[c]
                rat = (this[0] - cmin) / (cmax - cmin)
                t = (maxi - mini) * rat + mini
                lut.AddRGBPoint(t, this[1], this[2], this[3])
        lut.Build()
        glyphmapper.SetLookupTable(lut)
        glyphmapper.SetScalarRange(mini,maxi)
        glyphmapper.InterpolateScalarsBeforeMappingOn()

    # create a text actor
    txt = vtk.vtkTextActor()
    txt.SetInput(case)
    txtprop=txt.GetTextProperty()
    txtprop.SetFontFamilyToArial()
    txtprop.SetFontSize(30)
    txtprop.SetColor(0, 0, 0)
    txt.SetDisplayPosition(20, 30)

    # create a rendering window, renderer, and renderwindowinteractor
    ren = vtk.vtkRenderer()
    renWin = vtk.vtkRenderWindow()
    renWin.AddRenderer(ren)
    iren = vtk.vtkRenderWindowInteractor()
    style = vtk.vtkInteractorStyleTrackballCamera()
    iren.SetInteractorStyle(style)
    iren.SetRenderWindow(renWin)

    # surface mapper
    surfacemapper = vtk.vtkPolyDataMapper()
    surfacemapper.SetInputData(surface)
    surfaceactor = vtk.vtkActor()
    surfaceactor.SetMapper(surfacemapper)
    surfaceactor.GetProperty().SetOpacity(0.5)
    surfaceactor.GetProperty().SetColor(0.5,0.5,0.5)

    # glyph in scalar colors
    glyphactor = vtk.vtkActor()
    glyphactor.SetMapper(glyphmapper)

    # overlay mapper and actor
    refmapper = vtk.vtkPolyDataMapper()
    refmapper.SetInputData(overlay)
    refmapper.SetScalarModeToUsePointFieldData()

    if edges == 1:
        refactor = vtk.vtkActor()
        refactor.GetProperty().SetOpacity(1)
        refactor.GetProperty().SetColor(0, 0, 0)
        refactor.GetProperty().SetRepresentationToWireframe()
        refactor.GetProperty().SetLineWidth(6.)
        refactor.SetMapper(refmapper)
    else:
        refactor = vtk.vtkActor()
        refactor.GetProperty().SetOpacity(0.5)
        refactor.GetProperty().SetColor(1, 0, 0)
        refactor.SetMapper(refmapper)

    ren.AddActor(surfaceactor)
    ren.AddActor(refactor)
    ren.AddActor(glyphactor)

    if LegendTitle:
        ScalarBarActor = vtk.vtkScalarBarActor()
        # colormap
        ScalarBarActor.SetLookupTable(glyphactor.GetMapper().GetLookupTable())

        #labels format
        ScalarBarActor.GetLabelTextProperty().ItalicOff()
        ScalarBarActor.GetLabelTextProperty().BoldOn()
        ScalarBarActor.GetLabelTextProperty().ShadowOff()
        ScalarBarActor.GetLabelTextProperty().SetFontFamilyToArial()
        ScalarBarActor.GetLabelTextProperty().SetFontSize(100)
        ScalarBarActor.GetLabelTextProperty().SetColor(0.,0.,0.)
        ScalarBarActor.SetLabelFormat('%.2f')

        if colormap == '24_regions':
            ScalarBarActor.GetLabelTextProperty().BoldOff()
            ScalarBarActor.GetLabelTextProperty().SetFontSize(100)
            ScalarBarActor.SetNumberOfLabels(24)
            ScalarBarActor.SetLabelFormat('%.0f')

        # orientation
        ScalarBarActor.SetMaximumWidthInPixels(200)
        ScalarBarActor.SetPosition(0.90,0.15)
        ren.AddActor(ScalarBarActor)
    else:
        ren.AddActor(txt)


    # set the background and size; zoom in; and render
    ren.SetBackground(1, 1, 1)
    renWin.SetSize(875, 800)
    ren.ResetCamera()


    if flip ==1:
        # default values from paraview
        aCamera = vtk.vtkCamera()
        aCamera.SetViewUp(0, 1, 0)
        aCamera.SetPosition(0,0,-3.17)
        aCamera.SetFocalPoint(0,0,0)
        aCamera.SetClippingRange(3.14,3.22)
        aCamera.SetParallelScale(0.83)
        ren.SetActiveCamera(aCamera)

    ren.GetActiveCamera().Zoom(1.4)
    iren.Initialize()
    renWin.Render()

    # Remove existing lights and add lightkit lights
    ren.RemoveAllLights()
    lightkit = vtk.vtkLightKit()
    lightkit.AddLightsToRenderer(ren)

    # enable user interface interactor
    if interact ==1:

        iren.Start()
    else:
        # save as png
        ## Screenshot
        windowToImageFilter = vtk.vtkWindowToImageFilter()

        windowToImageFilter.SetInput(renWin)
        windowToImageFilter.SetMagnification(3) #set the resolution of the output image (3 times the current resolution of vtk render window)
        windowToImageFilter.SetInputBufferTypeToRGBA() #also record the alpha (transparency) channel
        windowToImageFilter.Update()

        pngwriter = vtk.vtkPNGWriter()
        pngwriter.SetFileName(filename)
        pngwriter.SetInputConnection(windowToImageFilter.GetOutputPort())
        pngwriter.Write()
Ejemplo n.º 12
0
print "Right drag up and down : zoom"
print "      Ctrl + Left drag : roll"
print "\nRendering..."

ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
track = vtk.vtkInteractorStyleTrackballCamera()
iren.SetInteractorStyle(track)
ren.SetBackground(0.95, 0.9, 0.85)
renWin.SetSize(800, 600)
# renWin.SetSize(1280, 720)

lights = vtk.vtkLightKit()
lights.AddLightsToRenderer(ren)

surface = makePolyData(all_verts, faces_as_tris)
edges = makePolyData(all_verts, outer_faces + inner_faces)

kq_ids = [1, 2, 0, 23, 20, 8, 22, 19, 7, 21, 18, 6, 12, 14, 13, 3, 17, 11, 5, 16, 10, 4, 15, 9]
plane_ids = {
    0: 0,
    1: 1,
    2: 2,
    3: 3,
    4: 4,
    5: 5,
    6: 6,
    7: 10,
Ejemplo n.º 13
0
def draw(poly_data,
         color_scale='Diverging',
         write_file=False,
         file_name='unstr.png'):
    ctf = vtk.vtkColorTransferFunction()
    lut = vtk.vtkLookupTable()
    args = Namespace(colorScale=color_scale, vlog=False)
    ctf, lut = CreateCTF(args, ctf, lut)

    mapper = vtk.vtkPolyDataMapper()
    mapper.SetInputData(poly_data)

    mapper.SetLookupTable(lut)
    data_array = poly_data.GetCellData().GetScalars()
    if data_array is not None:
        np_attribute = numpy_support.vtk_to_numpy(data_array)
        min_val = np_attribute.min()
        max_val = np_attribute.max()
    else:
        min_val = 0
        max_val = 1
    mapper.SetScalarRange(min_val, max_val)

    actor = vtk.vtkActor()
    actor.SetMapper(mapper)
    actor.GetProperty().SetSpecular(0.3)

    camera = vtk.vtkCamera()
    camera.SetPosition(0, 0e3, 20e3)
    camera.SetFocalPoint(0, 0e3, -10e3)
    camera.Zoom(1.0)

    renderer = vtk.vtkRenderer()
    renderer.AddActor(actor)
    renderer.SetBackground(0, 0, 0)
    renderer.SetActiveCamera(camera)
    renderer.ResetCamera()

    light_kit = vtk.vtkLightKit()
    light_kit.MaintainLuminanceOn()
    light_kit.SetKeyLightIntensity(0.75)
    light_kit.SetKeyLightWarmth(0.60)
    light_kit.SetFillLightWarmth(0.4)
    light_kit.SetBackLightWarmth(0.5)
    light_kit.SetHeadLightWarmth(0.5)
    light_kit.AddLightsToRenderer(renderer)

    ren_win = vtk.vtkRenderWindow()
    ren_win.AddRenderer(renderer)
    ren_win.SetSize(1300, 900)

    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(ren_win)
    ren_win.Render()
    iren.Start()

    if write_file:
        render_large = vtk.vtkRenderLargeImage()
        render_large.SetInput(renderer)
        render_large.SetMagnification(1)
        writer = vtk.vtkPNGWriter()
        writer.SetInputConnection(render_large.GetOutputPort())
        writer.SetFileName('../../output-vtk/' + file_name)
        writer.Write()
        print('done writing %s' % file_name)
        del render_large
        del writer
Ejemplo n.º 14
0
## Lights are automatically created by VTK.
## Warning: If you create lights then the auto lights are turned off.
# Create a vtkLight, and set the light parameters.
if 0:
    light1 = vtk.vtkLight()
    light1.SetFocalPoint(xto)
    xl = xto+array([-0.5*L,-L,0])
    light1.SetPosition(xl)
    ren.AddLight(light1)
    light2 = vtk.vtkLight()
    light2.SetFocalPoint(xto)
    xl = xto+array([+0.5*L,-L,0])
    light2.SetPosition(xl)
    ren.AddLight(light2)
    lightKit = vtk.vtkLightKit()
    lightKit.SetKeyLightIntensity(0.35)
    lightKit.AddLightsToRenderer(ren)

if 0:
    lightKit = vtk.vtkLightKit()
    lightKit.SetKeyLightIntensity(0.35)
    lightKit.AddLightsToRenderer(ren)

## Create axes RGB at the origin
axes = draw_axes([0.,0.,0.],2,0.05)
ren.AddActor(axes[0])
ren.AddActor(axes[1])
ren.AddActor(axes[2])

## If interactive you can manipulate the scene
Ejemplo n.º 15
0
def loadNewMesh(currVTKInstance, commandArgs, mainWindowUI, the_TCPserver):

    #first get all the data we are expecting from the server
    ## NB this assumes that the order of sending by the server is
    #    1) vertices
    #    2) triangles
    #    3) color data r (rgba) for each vertex
    #    4) color data g (rgba) for each vertex
    #    5) color data b (rgba) for each vertex
    #    6) color data a (rgba) for each vertex

    if debug:
        print('received request for new mesh with Args:')
        print(commandArgs)

    # sanity check
    if ('vertices' in commandArgs[0]) and ('triangles' in commandArgs[1]):
        pass
    else:
        return "error - expecting vertices, then triangles!"

    # load the surfaces data
    verticesArgs = commandArgs[0].strip().split(',')
    vertices = unpackData(verticesArgs[1], int(verticesArgs[2]), the_TCPserver)
    vertices = array(vertices, 'f')
    vertices = vertices.reshape((len(vertices) / 3, 3))

    trianglesArgs = commandArgs[1].strip().split(',')
    triangles = unpackData(trianglesArgs[1], int(trianglesArgs[2]),
                           the_TCPserver)
    triangles = array(triangles, 'f')
    if debug: print(triangles)
    triangles = triangles.reshape((len(triangles) / 3, 3))
    if debug: print(triangles)

    # load the surface colour data
    rVecArgs = commandArgs[2].strip().split(',')
    r_vec = unpackData(rVecArgs[1], int(rVecArgs[2]), the_TCPserver)
    r_vec = array(r_vec, 'uint8')
    if debug: print(r_vec)

    gVecArgs = commandArgs[3].strip().split(',')
    g_vec = unpackData(gVecArgs[1], int(gVecArgs[2]), the_TCPserver)
    g_vec = array(g_vec, 'uint8')

    bVecArgs = commandArgs[4].strip().split(',')
    b_vec = unpackData(bVecArgs[1], int(bVecArgs[2]), the_TCPserver)
    b_vec = array(b_vec, 'uint8')

    aVecArgs = commandArgs[5].strip().split(',')
    a_vec = unpackData(aVecArgs[1], int(aVecArgs[2]), the_TCPserver)
    a_vec = array(a_vec, 'uint8')

    if debug:
        print(len(r_vec))
        print(len(g_vec))
        print(len(b_vec))
        print(len(a_vec))

    #combine into numpy array
    colorDat = squeeze(
        array(squeeze([r_vec, g_vec, b_vec, a_vec]), 'B',
              order='F').transpose())

    # convert this to a VTK unsigned char array
    scalars = numpy_support.numpy_to_vtk(colorDat, 0)

    curr_scalars = vtk.vtkUnsignedCharArray()
    curr_scalars.DeepCopy(scalars)

    ## ---- ok, we hav the data, lets turn it into vtk stuff

    # Process vertices
    points = vtk.vtkPoints()
    for i in range(vertices.shape[0]):
        points.InsertPoint(i, vertices[i][0], vertices[i][1], vertices[i][2])

    # Process faces (triangles)
    polys = vtk.vtkCellArray()

    nTriangles = triangles.shape[0]
    for i in range(nTriangles):
        polys.InsertNextCell(3)
        for j in range(3):
            polys.InsertCellPoint(int(triangles[i][j]))

    # check
    if debug: print(points)
    if debug: print(polys)
    if debug: print(scalars)
    if debug: print(currVTKInstance)

    # Assemble as PolyData
    polyData = vtk.vtkPolyData()
    polyData.SetPoints(points)
    polyData.SetPolys(polys)
    polyData.GetPointData().SetScalars(scalars)

    ## TODO ? smoothing on first load?

    smooth = vtk.vtkSmoothPolyDataFilter()
    smooth = vtk.vtkSmoothPolyDataFilter()
    smooth.SetNumberOfIterations(0)
    smooth.SetRelaxationFactor(0.0)
    smooth.FeatureEdgeSmoothingOff()
    smooth.SetInputData(polyData)

    pdm = vtk.vtkPolyDataMapper()
    pdm.SetScalarModeToUsePointData()
    pdm.SetInputConnection(smooth.GetOutputPort())

    actor = vtk.vtkActor()
    actor.SetMapper(pdm)

    iren = mainWindowUI.vtkInstances[-1]

    ## ---- engine room for drawing on the surface

    # add a picker that allows is top pick points on the surface
    picker = vtk.vtkCellPicker()
    picker.SetTolerance(0.0001)
    mainWindowUI.vtkInstances[-1].SetPicker(picker)
    mainWindowUI.vtkInstances[-1]._Iren.pickedPointIds = [
    ]  #place holder for picked vtk point IDs so we can track
    mainWindowUI.vtkInstances[-1].pickedPointIds = mainWindowUI.vtkInstances[
        -1]._Iren.pickedPointIds
    mainWindowUI.vtkInstances[-1]._Iren.pickedPointOrigValues = [
    ]  #place holder for picked vtk point IDs so we can track
    mainWindowUI.vtkInstances[
        -1].pickedPointOrigValues = mainWindowUI.vtkInstances[
            -1]._Iren.pickedPointOrigValues
    mainWindowUI.vtkInstances[-1]._Iren.pickedPoints = vtk.vtkPoints(
    )  #place holder for picked vtk point IDs so we can track
    mainWindowUI.vtkInstances[-1].pickedPoints = mainWindowUI.vtkInstances[
        -1]._Iren.pickedPoints
    mainWindowUI.vtkInstances[-1]._Iren.inDrawMode = 0  #TODO
    mainWindowUI.vtkInstances[-1].inDrawMode = mainWindowUI.vtkInstances[
        -1]._Iren.inDrawMode

    # drawing functions imported from mp_VTKDrawing
    mainWindowUI.vtkInstances[-1].AddObserver('LeftButtonPressEvent',
                                              drawingPickPoint, 1.0)
    mainWindowUI.vtkInstances[-1].AddObserver('RightButtonPressEvent',
                                              drawingMakeROI, 1.0)

    ren = mainWindowUI.vtkInstances[-1].ren
    mainWindowUI.vtkInstances[-1]._Iren.ren = ren

    # ADD A LIGHT SOURCE TODO: MAKE THIS OPTIONAL/DEFAULT?
    lightKit = vtk.vtkLightKit()
    lightKit.SetKeyLightIntensity(0.5)
    # TODO: SOME OPTIONS TO EXPLORE
    #lightKit.MaintainLuminanceOn()
    #lightKit.SetKeyLightIntensity(1.0)
    ## warmth of the lights
    #lightKit.SetKeyLightWarmth(0.65)
    #lightKit.SetFillLightWarmth(0.6)
    #lightKit.SetHeadLightWarmth(0.45)
    ## intensity ratios
    ## back lights will be very dimm
    lightKit.SetKeyToFillRatio(1.)
    lightKit.SetKeyToHeadRatio(2.)
    lightKit.SetKeyToBackRatio(1.)
    lightKit.AddLightsToRenderer(ren)

    ren.AddActor(actor)
    ren.SetBackground(1, 1, 1)
    ren.ResetCamera()
    ren.Render()
    mainWindowUI.vtkInstances[-1].Render()

    # lets put some of the data objects in the scope of the
    # main window so that they can be manipulated later.
    mainWindowUI.vtkInstances[-1].curr_actor = actor
    mainWindowUI.vtkInstances[-1].curr_smoother = smooth
    mainWindowUI.vtkInstances[-1].curr_polydata = polyData
    mainWindowUI.vtkInstances[-1].curr_mapper = pdm
    mainWindowUI.vtkInstances[-1].curr_camera = ren.GetActiveCamera()
    # and the raw mesh coordinate data.. why not
    mainWindowUI.vtkInstances[-1].curr_points = points
    mainWindowUI.vtkInstances[-1].curr_polys = polys
    mainWindowUI.vtkInstances[-1].curr_scalars = curr_scalars  #Deep copied

    # turns out that later processes access the inherited renderwindowinteractor (?)
    # so lets put all the above in the scope of that too
    mainWindowUI.vtkInstances[-1]._Iren.curr_actor = actor
    mainWindowUI.vtkInstances[-1]._Iren.curr_smoother = smooth
    mainWindowUI.vtkInstances[-1]._Iren.curr_polydata = polyData
    mainWindowUI.vtkInstances[-1]._Iren.curr_mapper = pdm
    mainWindowUI.vtkInstances[-1]._Iren.curr_camera = ren.GetActiveCamera()
    mainWindowUI.vtkInstances[-1]._Iren.curr_points = points
    mainWindowUI.vtkInstances[-1]._Iren.curr_polys = polys
    mainWindowUI.vtkInstances[
        -1]._Iren.curr_scalars = curr_scalars  #Deep copied

    # and so we can access ui controls (e.g. statusbar) from the inherited window
    mainWindowUI.vtkInstances[-1]._Iren.parent_ui = mainWindowUI

    def KeyPress(obj, evt):
        key = obj.GetKeySym()
        if key == 'l':
            currVTKinstance = len(mainWindowUI.vtkInstances)
            print(key)
            print(mainWindowUI.vtkInstances[currVTKinstance - 1])

    #let's also track key presses per instance esp for the draw routine :)
    mainWindowUI.vtkInstances[-1].AddObserver("KeyPressEvent", KeyPress)

    mainWindowUI.tabWidget.setCurrentIndex(len(mainWindowUI.vtkInstances) -
                                           1)  #zero index
Ejemplo n.º 16
0
 def __init__(self):
     self.lightKit = vtk.vtkLightKit()
     self.lightKit.MaintainLuminanceOn()
     lightkitObserverTag = self.lightKit.AddObserver(
         vtk.vtkCommand.ModifiedEvent, self.onLightkitModified)
     self.managedViewNodes = []
def main():
    cube = vtk.vtkCubeSource()
    cube.SetXLength(100)
    cube.SetYLength(100)
    cube.SetZLength(100)
    
    cubeMapper = vtk.vtkPolyDataMapper()
    cubeMapper.SetInputConnection(cube.GetOutputPort())
    
    cubeActor = vtk.vtkActor()
    cubeActor.SetMapper(cubeMapper)
    cubeActor.GetProperty().SetColor(0.2, 0.63, 0.79)
    cubeActor.GetProperty().SetDiffuse(0.7)
    cubeActor.GetProperty().SetSpecular(0.4)
    cubeActor.GetProperty().SetSpecularPower(20)
    cubeActor.GetProperty().SetInterpolationToPhong()
    cubeActor.GetProperty().ShadingOn()
    cubeActor.SetPosition(0, 0, 600)
    
    property = vtk.vtkProperty()
    property.SetColor(1.0, 0.3882, 0.2784)
    property.SetDiffuse(0.7)
    property.SetSpecular(0.4)
    property.SetSpecularPower(20)
    
    cubeActor2 = vtk.vtkActor()
    cubeActor2.SetMapper(cubeMapper)
    cubeActor2.GetProperty().SetColor(0.2, 0.63, 0.79)
    cubeActor2.SetProperty(property)
    cubeActor2.SetPosition(0, 0, 300)
    
    ren1 = vtk.vtkRenderer()
    ren1.AddActor(cubeActor)
    
    
    axes = vtk.vtkAxesActor()
    axesWidget = vtk.vtkOrientationMarkerWidget()
    axes.AxisLabelsOff()
    axes.SetShaftTypeToCylinder()
    
    
    ren1.AddActor(cubeActor2)
    ren1.SetBackground(0.1, 0.2, 0.4)
    
    lightkit = vtk.vtkLightKit()
    lightkit.AddLightsToRenderer(ren1)
    
    renWin = vtk.vtkRenderWindow()
    renWin.SetStereoCapableWindow(1)
    renWin.SetStereoTypeToCrystalEyes()
    renWin.SetStereoRender(1)
    
    
    renWin.AddRenderer(ren1)
    renWin.SetSize(1920, 1080)
    renWin.SetBorders(0)
    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(renWin)
    iren.SetInteractorStyle(vtk.vtkInteractorStyleTrackballCamera())

    renWin.Render()
    
    
    cam = ren1.GetActiveCamera()
    cam.UseOffAxisProjectionOn()

    cam.SetScreenBottomLeft(-717,-403,-1000)
    cam.SetScreenBottomRight(717,-403,-1000)
    cam.SetScreenTopRight(717,403,-1000)
    cam.SetEyeSeparation(65)

    
    axesWidget.SetOrientationMarker(axes)
    axesWidget.SetInteractor(iren)
    axesWidget.SetViewport(0.0, 0.0, 0.3, 0.3)
    axesWidget.SetEnabled(1)
    axesWidget.InteractiveOff()   
    
    
    text = vtk.vtkTextActor()        
    text.SetTextScaleModeToProp()
    text.SetDisplayPosition(20, 20)      
    text.SetInput("")
    ren1.AddActor(text) 
    
    
    cb = vtkTimerCallBack(ren1,text)
    cb.renderer = ren1
    iren.AddObserver('TimerEvent', cb.execute)
    iren.CreateRepeatingTimer(30)
        

    iren.Start()
Ejemplo n.º 18
0
 def _add_lights_to_renderer(self, renderer):
     # Create a automatic light kit
     light_kit = vtk.vtkLightKit()
     light_kit.SetKeyLightIntensity(self.settings.light_intensity)
     light_kit.AddLightsToRenderer(renderer)
Ejemplo n.º 19
0
def main():
# Turn on off-screen rendering, if available
#    gfx_factory = vtk.vtkGraphicsFactory()
#    gfx_factory.SetOffScreenOnlyMode(1)
#    gfx_factory.SetUseMesaClasses(1)

#    img_factory = vtk.vtkImagingFactory()
#    img_factory.SetUseMesaClasses(1)

    reader = vtk.vtkPolyDataReader()
    reader.SetFileName(args.infile[0])
    reader.Update() # Needed because of GetScalarRange
    output = reader.GetOutput()
    scalar_range = output.GetScalarRange()

# Create the mapper that corresponds the objects of the vtk file
# into graphics elements
    mapper = vtk.vtkPolyDataMapper()
#    mapper = vtk.vtkDataSetMapper()
    mapper.SetInput(output)
    mapper.SetScalarRange(scalar_range)
    mapper.SetScalarMaterialModeToDiffuse()
    mapper.SetScalarMaterialModeToAmbientAndDiffuse()
    mapper.SetScalarMaterialModeToAmbientAndDiffuse()

    transform = vtk.vtkTransform()
    transform.RotateX(75.0)
# Create the Actor
    actor = vtk.vtkActor()
    actor.SetMapper(mapper)
    actor.SetOrigin(0.0, 0.0, 0.0)
    actor.SetUserTransform(transform)
    props = actor.GetProperty()
#    props.SetAmbientColor(0.4, 1.0, 0.5)
    props.SetDiffuseColor(0.3, 0.2, 1.0)
    props.SetOpacity(1.0)
    props.SetLineWidth(1.0)


# Create the Renderer
    renderer1 = vtk.vtkRenderer()
    renderer1.AddActor(actor)
    renderer1.SetBackground(0.1, 0.2, 0.31) 
    renderer1.SetViewport(0.0, 0.0, 0.5, 1.0) 
    camera1 = renderer1.GetActiveCamera()

    renderer2 = vtk.vtkRenderer()
    renderer2.AddActor(actor)
    renderer2.SetBackground(0.1, 0.2, 0.31) 
    renderer2.SetViewport(0.5, 0.0, 1.0, 1.0) 
    renderer2.SetActiveCamera(camera1)
#    camera2 = renderer1.GetActiveCamera()

#    light = vtk.vtkLight()
#    light.SetFocalPoint(0.0, 0.0, 0.0)
#    light.SetPosition(0.0, 0.0, 1.0)
#    light.SetColor(1.0, 0.0, 0.0)
#    light.SetIntensity(0.5)
#    renderer1.AddLight(light)
    light_kit = vtk.vtkLightKit()
    light_kit.AddLightsToRenderer(renderer1)
    light_kit.SetHeadLightWarmth(0.1)
    light_kit.SetFillLightWarmth(0.1)
    light_kit.SetKeyLightWarmth(0.9)
    light_kit.SetKeyLightAzimuth(10.9)

    camera1.SetViewUp(0.0, 0.0, 1.0)
    camera1.SetPosition(-1.0, 0.0, 0.0)
    camera1.ParallelProjectionOn()
    camera1.SetFocalPoint(0.0, 0.0, 0.0)
    camera1.SetViewAngle(45)

#    camera2.SetViewUp(0.0, 0.0, 1.0)
#    camera2.SetPosition(0.0, 1.0, 0.0)
#    camera2.ParallelProjectionOn()
#    camera2.SetFocalPoint(0.0, 0.0, 0.0)
#    camera2.SetViewAngle(45)

    renderer1.ResetCamera()
    renderer2.ResetCamera()

# Create the RendererWindow
    renderer_window = vtk.vtkRenderWindow()
    renderer_window.AddRenderer(renderer1)
    renderer_window.AddRenderer(renderer2)
    renderer_window.SetSize(1000,500)
#    renderer_window.SetOffScreenRendering(1)

#    renderer_window.Render()

# Create the RendererWindowInteractor and display the vtk_file
    interactor = vtk.vtkRenderWindowInteractor()
    interactor.SetRenderWindow(renderer_window)
    interactor.Initialize()
    interactor.Start()

    # screenshot code:
    w2if = vtk.vtkWindowToImageFilter()
    w2if.SetInput(renderer_window)
    w2if.Update()

    writer = vtk.vtkPNGWriter()
    writer.SetFileName("screenshot.png")
    writer.SetInput(w2if.GetOutput())
    writer.Write()
def main():
    
    cube = vtk.vtkCubeSource()
    cube.SetXLength(60)
    cube.SetYLength(60)
    cube.SetZLength(0)
    
    cubeMapper = vtk.vtkPolyDataMapper()
    cubeMapper.SetInputConnection(cube.GetOutputPort())
    
    cubeActor = vtk.vtkActor()
    cubeActor.SetMapper(cubeMapper)
    cubeActor.GetProperty().SetColor(0.2, 0.6, 0.8)
    cubeActor.SetPosition(-30, -30, -150)

    '''
    sphere = vtk.vtkSphereSource()
    sphere.SetThetaResolution(30)
    sphere.SetPhiResolution(30)
    sphere.SetRadius(2)
    
    sphereTransform = vtk.vtkTransform()
    sphereTransform.Translate(0, 0, -100)

    sphereMapper = vtk.vtkPolyDataMapper()
    sphereMapper.SetInputConnection(sphere.GetOutputPort())
    
    sphereTransformFilter = vtk.vtkTransformPolyDataFilter()
    sphereTransformFilter.SetInputConnection(sphere.GetOutputPort())
    sphereTransformFilter.SetTransform(sphereTransform)
    
    line = vtk.vtkLineSource()
    line.SetResolution(30)
    line.SetPoint1(0.0, 0.0, 0.0)
    line.SetPoint2(0.0, 0.0, -100)
    
    appendFilter = vtk.vtkAppendPolyData()
    appendFilter.AddInputConnection(line.GetOutputPort())
    appendFilter.AddInputConnection(sphereTransformFilter.GetOutputPort())
    
    lineMapper = vtk.vtkPolyDataMapper()
    lineMapper.SetInputConnection(appendFilter.GetOutputPort())
    
    lineActor = vtk.vtkActor()
    lineActor.SetMapper(lineMapper)    
    '''
    ren = vtk.vtkRenderer()
    #ren.AddActor(lineActor)
    

    
    axes = vtk.vtkAxesActor()
    axesWidget = vtk.vtkOrientationMarkerWidget()
    axes.AxisLabelsOff()
    axes.SetShaftTypeToCylinder()
    
    ren.AddActor(cubeActor)
    ren.SetBackground(0.15, 0.15, 0.15)
    
    lightkit = vtk.vtkLightKit()
    lightkit.AddLightsToRenderer(ren)
    
    renWin = vtk.vtkRenderWindow()
    renWin.SetStereoCapableWindow(1)
    renWin.SetStereoTypeToCrystalEyes()
    renWin.SetStereoRender(1)
    
    
    renWin.AddRenderer(ren)
    renWin.SetFullScreen(True)
    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(renWin)
    iren.SetInteractorStyle(vtk.vtkInteractorStyleTrackballCamera())

    renWin.Render()
    
    yscreenf = 1.0*renWin.GetSize()[1]/1080.0
    
    camera = ren.GetActiveCamera()    
    camera.SetScreenBottomLeft(-262.5,148.5-148.5*2.0*yscreenf,-410)
    camera.SetScreenBottomRight(262.5,148.5-148.5*2.0*yscreenf,-410)
    camera.SetScreenTopRight(262.5,148.5,-410)    
    camera.SetUseOffAxisProjection(1)
    camera.SetEyeSeparation(60)
   
    axesWidget.SetOrientationMarker(axes)
    axesWidget.SetInteractor(iren)
    axesWidget.SetViewport(0.0, 0.0, 0.3, 0.3)
    axesWidget.SetEnabled(1)
    axesWidget.InteractiveOff()   
    
    
    textCamPos = vtk.vtkTextActor()        
    textCamPos.SetDisplayPosition(20, 20)      
    textCamPos.SetInput("0")
    ren.AddActor(textCamPos) 
     
    textStylus = vtk.vtkTextActor()        
    textStylus.SetDisplayPosition(1600, 20)      
    textStylus.SetInput("0")
    ren.AddActor(textStylus)     
       
    iren.Initialize()

    cb = vtkTimerCallBack(camera, textCamPos, textStylus)
    cb.renderer = ren
    iren.AddObserver('TimerEvent', cb.execute)
    iren.CreateRepeatingTimer(10)
        
    renWin.Render()
      
    iren.Start()
    else:
        # view port 4 - Surface (Phong shading)
        prop.SetInterpolationToPhong()
    prop.ShadingOn()

# Set render window
renWin = vtk.vtkRenderWindow()
renWin.SetSize(600, 600)

# Set renderer
ren = [vtk.vtkRenderer() for i in range(4)]
for i in range(4):
    ren[i].AddActor(actor[i])

    # Add light
    lightkit = vtk.vtkLightKit()
    lightkit.AddLightsToRenderer(ren[i])

    # Create four view ports
    if i < 2:
        ren[i].SetViewport(i / 2, 0.5, (i + 1) / 2, 1)
    else:
        ren[i].SetViewport((i - 2) / 2, 0, (i - 1) / 2, 0.5)
    renWin.AddRenderer(ren[i])

# Set interactor, render loop
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
renWin.Render()

# Export the rendered scene to a JPG file
Ejemplo n.º 22
0
print 'Right drag up and down : zoom'
print '      Ctrl + Left drag : roll'
print '\nRendering...'

ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
track = vtk.vtkInteractorStyleTrackballCamera()
iren.SetInteractorStyle(track)
ren.SetBackground(0.95, 0.9, 0.85)
renWin.SetSize(800, 600)
#renWin.SetSize(1280, 720)

lights = vtk.vtkLightKit()
lights.AddLightsToRenderer( ren )
  
surface = makePolyData( all_verts, faces_as_tris )
edges = makePolyData( all_verts, outer_faces + inner_faces )

kq_ids    = [ 1, 2, 0, 23, 20, 8, 22, 19, 7, 21, 18, 6, 12, 14, 13, 3, 17, 11, 5, 16, 10, 4, 15, 9 ]
plane_ids = { 0:0, 1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:10, 8:11, 9:7, 10:8, 11:9, 12:13, 14:12, 15:15, 16:16, 18:14, 20:17, 26:22, 27:23, 34:21, 36:20, 42:19, 52:18 }
outer_or_inner_type = [ 0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0 ]
tetrahedron_corner_type = [ 0,0,0,2,1,3,1,3,2,1,3,2,0,0,0,1,3,2,1,3,2,1,3,2 ]
three_colors_type = [ 1,0,2,0,2,1,0,2,1,2,1,0,1,0,2,0,2,1,0,2,1,2,1,0 ]
eight_coloring = [ 0, 1, 2, 3, 4, 5, 6, 6, 6, 7, 7, 7, 4, 5, 3, 5, 3, 4, 2, 0, 1, 0, 1, 2 ] # thanks to Niles Johnson
papercraft_type = [ 0,1,2,1,0,1,2,3,1,2,3,0,0,2,1,3,2,3,0,1,0,3,2,3 ] # printing 3 inner and 3 outer on 4 sheets of different card
affinity_groups_type = [ 2,0,1,2,0,1,0,1,2,2,0,1,2,0,1,2,0,1,0,1,2,0,1,2 ]
petrie_polygons = [ [3,45,44,5,9,10,30,29],[54,55,48,49,50,51,52,53],[22,23,35,34,46,47,27,26] ]