Example #1
0
    def create(self):
        source = vtk.vtkCubeSource()
        source.SetXLength(1.5 * FlowChannel.RADIUS)
        source.SetYLength(self._length)
        source.SetZLength(1.5 * FlowChannel.RADIUS)

        self._mapper = vtk.vtkPolyDataMapper()
        self._mapper.SetInputConnection(source.GetOutputPort())

        self._actor = vtk.vtkActor()
        self._actor.SetMapper(self._mapper)
        self._actor.SetPosition(self._position)
        self._actor.SetOrientation(self._vtk_orientation)

        self._silhouette = vtk.vtkPolyDataSilhouette()
        self._silhouette.SetInputData(self._mapper.GetInput())

        self._silhouette_mapper = vtk.vtkPolyDataMapper()
        self._silhouette_mapper.SetInputConnection(
            self._silhouette.GetOutputPort())

        self._silhouette_actor = vtk.vtkActor()
        self._silhouette_actor.SetMapper(self._silhouette_mapper)
        self._silhouette_actor.SetPosition(self._position)
        self._silhouette_actor.SetOrientation(self._vtk_orientation)

        self._caption_actor = self._createCaptionActor()
        self._caption_actor.SetAttachmentPoint(self._position)
Example #2
0
 def _silhouette(self,
                 mesh,
                 color=None,
                 line_width=None,
                 alpha=None,
                 decimate=None):
     mesh = mesh.decimate(decimate) if decimate is not None else mesh
     silhouette_filter = vtk.vtkPolyDataSilhouette()
     silhouette_filter.SetInputData(mesh)
     silhouette_filter.SetCamera(self.plotter.renderer.GetActiveCamera())
     silhouette_filter.SetEnableFeatureAngle(0)
     silhouette_mapper = vtk.vtkPolyDataMapper()
     silhouette_mapper.SetInputConnection(silhouette_filter.GetOutputPort())
     _, prop = self.plotter.add_actor(silhouette_mapper,
                                      reset_camera=False,
                                      name=None,
                                      culling=False,
                                      pickable=False,
                                      render=False)
     if color is not None:
         prop.SetColor(*color)
     if alpha is not None:
         prop.SetOpacity(alpha)
     if line_width is not None:
         prop.SetLineWidth(line_width)
Example #3
0
    def create(self):
        self._center = self.__computeCenter(self.__connections)
        bounds = self.__computeBounds(self._center)

        source = vtk.vtkCubeSource()
        source.SetCenter(self._center)
        source.SetBounds(bounds)

        self._mapper = vtk.vtkPolyDataMapper()
        self._mapper.SetInputConnection(source.GetOutputPort())

        self._actor = vtk.vtkActor()
        self._actor.SetMapper(self._mapper)

        self._silhouette = vtk.vtkPolyDataSilhouette()
        self._silhouette.SetInputData(self._mapper.GetInput())

        self._silhouette_mapper = vtk.vtkPolyDataMapper()
        self._silhouette_mapper.SetInputConnection(
            self._silhouette.GetOutputPort())

        self._silhouette_actor = vtk.vtkActor()
        self._silhouette_actor.SetMapper(self._silhouette_mapper)

        self._caption_actor = self._createCaptionActor()
        self._caption_actor.SetAttachmentPoint(self._center)
Example #4
0
    def _setUpSilhouette(self, camera):
        self._silhouette = vtk.vtkPolyDataSilhouette()
        self._silhouette.SetInputData(self._mapper.GetInput())
        self._silhouette.SetCamera(camera)

        self._silhouette_mapper = vtk.vtkPolyDataMapper()
        self._silhouette_mapper.SetInputConnection(
            self._silhouette.GetOutputPort())

        self._silhouette_actor = vtk.vtkActor()
        self._silhouette_actor.SetMapper(self._silhouette_mapper)
        self._silhouette_actor.VisibilityOff()

        self._silhouette_property = self._silhouette_actor.GetProperty()
        self._silhouette_property.SetColor([0, 0, 0])
        self._silhouette_property.SetLineWidth(3)
Example #5
0
    def create(self):
        comp = self._reader.getComponent(self._connection['name'])

        pos = comp.getPoint(self._connection['type'])
        ori = comp.getOrientation(self._connection['type'])
        if self._connection['type'] == 'in':
            self._center = [
                pos[0] - ori[0] * 0.5 * Boundary.SIZE,
                pos[1] - ori[1] * 0.5 * Boundary.SIZE,
                pos[2] - ori[2] * 0.5 * Boundary.SIZE
            ]
        elif self._connection['type'] == 'out':
            self._center = [
                pos[0] + ori[0] * 0.5 * Boundary.SIZE,
                pos[1] + ori[1] * 0.5 * Boundary.SIZE,
                pos[2] + ori[2] * 0.5 * Boundary.SIZE
            ]
        else:
            self._center = pos

        source = vtk.vtkCubeSource()
        source.SetCenter(self._center)
        source.SetXLength(Boundary.SIZE)
        source.SetYLength(Boundary.SIZE)
        source.SetZLength(Boundary.SIZE)

        self._mapper = vtk.vtkPolyDataMapper()
        self._mapper.SetInputConnection(source.GetOutputPort())

        self._actor = vtk.vtkActor()
        self._actor.SetMapper(self._mapper)

        self._silhouette = vtk.vtkPolyDataSilhouette()
        self._silhouette.SetInputData(self._mapper.GetInput())

        self._silhouette_mapper = vtk.vtkPolyDataMapper()
        self._silhouette_mapper.SetInputConnection(
            self._silhouette.GetOutputPort())

        self._silhouette_actor = vtk.vtkActor()
        self._silhouette_actor.SetMapper(self._silhouette_mapper)

        self._caption_actor = self._createCaptionActor()
        self._caption_actor.SetAttachmentPoint(self._center)
Example #6
0
    def create(self):
        """
        Creates the CubeSource object representing a heat structure.
        """
        source = vtk.vtkCubeSource()
        source.SetBounds(self._bounds)

        self._mapper = vtk.vtkPolyDataMapper()
        self._mapper.SetInputConnection(source.GetOutputPort())

        self._actor = vtk.vtkActor()
        self._actor.SetMapper(self._mapper)
        self._actor.SetPosition(self._position)
        self._actor.SetOrientation(self._orientation)
        self._actor.RotateX(self._rotation)
        self._actor.RotateY(0)
        self._actor.RotateZ(0)

        self._silhouette = vtk.vtkPolyDataSilhouette()
        self._silhouette.SetInputData(self._mapper.GetInput())

        self._silhouette_mapper = vtk.vtkPolyDataMapper()
        self._silhouette_mapper.SetInputConnection(
            self._silhouette.GetOutputPort())

        self._silhouette_actor = vtk.vtkActor()
        self._silhouette_actor.SetMapper(self._silhouette_mapper)
        self._silhouette_actor.SetPosition(self._position)
        self._silhouette_actor.SetOrientation(self._orientation)
        self._silhouette_actor.RotateX(self._rotation)
        self._silhouette_actor.RotateY(0)
        self._silhouette_actor.RotateZ(0)

        self._caption_actor = self._createCaptionActor()
        center = self._actor.GetCenter()
        self._caption_actor.SetAttachmentPoint(center)
Example #7
0
"""Make the silhouette of an object
move along with camera position.
"""
from vtkplotter import *
import vtk

plt = Plotter(bg='lightblue', interactive=False)

s = load(datadir + 'shark.ply')
s.alpha(0.1).c('gray').lw(0.1).lc('red')
plt.show(s, Text(__doc__))

sil = vtk.vtkPolyDataSilhouette()
sil.SetInputData(s.polydata())
sil.SetCamera(plt.camera)
silMapper = vtk.vtkPolyDataMapper()
silMapper.SetInputConnection(sil.GetOutputPort())

actor = Actor()
actor.lw(4).c('black').SetMapper(silMapper)

plt.add(actor)  # add() also renders the scene
interactive()
Example #8
0
def main():
    numberOfSpheres = get_program_parameters()
    colors = vtk.vtkNamedColors()

    # A renderer and render window
    renderer = vtk.vtkRenderer()
    renderer.SetBackground(colors.GetColor3d('SteelBlue'))

    renderWindow = vtk.vtkRenderWindow()
    renderWindow.SetSize(640, 480)
    renderWindow.AddRenderer(renderer)

    # An interactor
    interactor = vtk.vtkRenderWindowInteractor()
    interactor.SetRenderWindow(renderWindow)

    randomSequence = vtk.vtkMinimalStandardRandomSequence()
    # randomSequence.SetSeed(1043618065)
    # randomSequence.SetSeed(5170)
    randomSequence.SetSeed(8775070)
    # Add spheres to play with
    for i in range(numberOfSpheres):
        source = vtk.vtkSphereSource()

        # random position and radius
        x = randomSequence.GetRangeValue(-5.0, 5.0)
        randomSequence.Next()
        y = randomSequence.GetRangeValue(-5.0, 5.0)
        randomSequence.Next()
        z = randomSequence.GetRangeValue(-5.0, 5.0)
        randomSequence.Next()
        radius = randomSequence.GetRangeValue(0.5, 1.0)
        randomSequence.Next()

        source.SetRadius(radius)
        source.SetCenter(x, y, z)
        source.SetPhiResolution(11)
        source.SetThetaResolution(21)

        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(source.GetOutputPort())
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)

        r = randomSequence.GetRangeValue(0.4, 1.0)
        randomSequence.Next()
        g = randomSequence.GetRangeValue(0.4, 1.0)
        randomSequence.Next()
        b = randomSequence.GetRangeValue(0.4, 1.0)
        randomSequence.Next()

        actor.GetProperty().SetDiffuseColor(r, g, b)
        actor.GetProperty().SetDiffuse(0.8)
        actor.GetProperty().SetSpecular(0.5)
        actor.GetProperty().SetSpecularColor(colors.GetColor3d('White'))
        actor.GetProperty().SetSpecularPower(30.0)

        renderer.AddActor(actor)

    # Render and interact
    renderWindow.Render()

    # Create the silhouette pipeline, the input data will be set in the
    # interactor
    silhouette = vtk.vtkPolyDataSilhouette()
    silhouette.SetCamera(renderer.GetActiveCamera())

    # Create mapper and actor for silhouette
    silhouetteMapper = vtk.vtkPolyDataMapper()
    silhouetteMapper.SetInputConnection(silhouette.GetOutputPort())

    silhouetteActor = vtk.vtkActor()
    silhouetteActor.SetMapper(silhouetteMapper)
    silhouetteActor.GetProperty().SetColor(colors.GetColor3d("Tomato"))
    silhouetteActor.GetProperty().SetLineWidth(5)

    # Set the custom type to use for interaction.
    style = MouseInteractorHighLightActor(silhouette, silhouetteActor)
    style.SetDefaultRenderer(renderer)

    # Start
    interactor.Initialize()
    interactor.SetInteractorStyle(style)
    renderWindow.SetWindowName('HighlightWithSilhouette')
    renderWindow.Render()

    interactor.Start()
Example #9
0
def show_mesh(input_mesh, dists, plotter, spacing, tolerance=None):

    #vp2 = Plotter(bg = 'bb', size='fullscreen')
    vp2 = plotter
    plotter.clear()
    if tolerance is not None:
        try:
            poly_data = input_mesh.polydata()
            sil = vtk.vtkPolyDataSilhouette()
            sil.SetInputData(poly_data)
            sil.SetCamera(vp2.camera)
            silMapper = vtk.vtkPolyDataMapper()
            silMapper.SetInputConnection(sil.GetOutputPort())
            mesh1 = mesh.Mesh(alpha=0.21)
            mesh1.lw(3).c('w').SetMapper(silMapper)

            vp2 += mesh1

            pts = input_mesh.points()
            def_pts = []
            for i, dist in enumerate(dists):
                if dist > tolerance:
                    def_pts.append(pts[i])
            arr = np.array(def_pts)
            arr = removeOutliers(arr, spacing)
            cl = cluster(arr, radius=spacing)
            err_num = 0
            sph_arr = []
            for pt_cl in cl.GetParts():
                err_num += 1
                cl_pts = pt_cl.points()
                hull_pt1, hull_pt2 = furthest_pts(cl_pts)
                cnt_pnt = (hull_pt1 + hull_pt2) / 2
                rdi = 1 * pt_dist(cnt_pnt, hull_pt2)
                sp = shapes.Sphere(cnt_pnt,
                                   rdi,
                                   c=(1, 0, 0),
                                   alpha=.15,
                                   quads=True).wireframe(.5)
                sph_arr.append(sp)
                vp2 += sp

            txt = Text2D("Detected {} Object Defect".format(err_num),
                         pos=8,
                         c='gray',
                         s=1.31)
            vp2 += txt
            vp2.show(interactive=1)
        except AttributeError as error:
            print("Error during automatic error detection:", error)

    vp2.clear()

    input_mesh.pointColors(dists, cmap='jet')

    input_mesh.addScalarBar(title="Divergence",
                            pos=(0, 0.24),
                            titleFontSize=16,
                            titleYOffset=25)

    def slider(widget, event):
        value = widget.GetRepresentation().GetValue()
        cuttoff = round(value * 900)
        hidden = np.full((cuttoff), 0.0)
        show = np.full((900 - cuttoff), 1)
        opacities = np.concatenate((hidden, show), axis=None)
        input_mesh.pointColors(dists, cmap='jet', alpha=opacities)

    vp2.addSlider2D(slider,
                    xmin=0.0,
                    xmax=1,
                    value=0.0,
                    showValue=False,
                    pos=[(0.9, 1), (0.9, 0)],
                    c='lightgray')
    ambient, diffuse, specular = .4, 1., 0.
    specularPower, specularColor = 20, 'white'
    input_mesh.lighting('default', ambient, diffuse, specular, specularPower,
                        specularColor)

    vp2 += input_mesh
Example #10
0
def main():
    nargs = len(sys.argv)

    if nargs < 2:
        sphere_source = vtk.vtkSphereSource()
        sphere_source.Update()
        polyData = sphere_source.GetOutput()
    else:
        reader = vtkXMLPolyDataReader()
        reader.SetFileName(sys.argv[1])

        clean = vtk.vtkCleanPolyData()
        clean.SetInputConnection(reader.GetOutputPort())
        clean.Update()
        poly_data = clean.GetOutput()

    colors = vtk.vtkNamedColors()

    #create mapper and actor for original model
    mapper = vtk.vtkPolyDataMapper()
    mapper.SetInputData(poly_data)
    mapper.ScalarVisibilityOff()

    actor = vtk.vtkActor()
    actor.SetMapper(mapper)
    actor.GetProperty().SetInterpolationToFlat()
    #actor.GetProperty().SetColor(colors.GetColor3d("Banana").GetData())
    actor.GetProperty().SetColor(1., 0., 1.)

    #create renderer and renderWindow
    renderer = vtk.vtkRenderer()
    render_window = vtk.vtkRenderWindow()
    render_window.AddRenderer(renderer)

    renderer.AddActor(actor)  #view the original model

    #Compute the silhouette
    silhouette = vtk.vtkPolyDataSilhouette()
    silhouette.SetInputData(poly_data)
    silhouette.SetCamera(renderer.GetActiveCamera())
    silhouette.SetEnableFeatureAngle(0)

    #create mapper and actor for silouette
    mapper2 = vtk.vtkPolyDataMapper()
    mapper2.SetInputConnection(silhouette.GetOutputPort())

    actor2 = vtk.vtkActor()
    actor2.SetMapper(mapper2)
    #actor2.GetProperty().SetColor(colors.GetColor3d("Tomato").GetData())
    actor2.GetProperty().SetColor(1., 1., 0.)
    actor2.GetProperty().SetLineWidth(5)

    renderer.AddActor(actor2)
    #renderer.SetBackground(colors.GetColor3d("Silver").GetData())
    renderer.SetBackground(0.1, 0.2, 0.5)
    renderer.ResetCamera()
    renderer.GetActiveCamera().Azimuth(30)
    renderer.GetActiveCamera().Elevation(30)
    renderer.GetActiveCamera().Dolly(1.5)
    renderer.ResetCameraClippingRange()

    iren = vtk.vtkRenderWindowInteractor()
    iren.SetRenderWindow(render_window)

    #render and interact
    render_window.SetSize(640, 480)
    render_window.Render()
    iren.Start()