コード例 #1
0
def main():
    colors = vtk.vtkNamedColors()

    camera = vtk.vtkCamera()
    camera.SetClippingRange(0.1, 0.4)
    planesArray = [0] * 24

    camera.GetFrustumPlanes(1.0, planesArray)

    planes = vtk.vtkPlanes()
    planes.SetFrustumPlanes(planesArray)

    frustumSource = vtk.vtkFrustumSource()
    frustumSource.ShowLinesOff()
    frustumSource.SetPlanes(planes)

    shrink = vtk.vtkShrinkPolyData()
    shrink.SetInputConnection(frustumSource.GetOutputPort())
    shrink.SetShrinkFactor(.9)

    mapper = vtk.vtkPolyDataMapper()
    mapper.SetInputConnection(shrink.GetOutputPort())

    back = vtk.vtkProperty()
    back.SetColor(colors.GetColor3d("Tomato"))

    actor = vtk.vtkActor()
    actor.SetMapper(mapper)
    actor.GetProperty().EdgeVisibilityOn()
    actor.GetProperty().SetColor(colors.GetColor3d("Banana"))
    actor.SetBackfaceProperty(back)

    # a renderer and render window
    renderer = vtk.vtkRenderer()
    renderWindow = vtk.vtkRenderWindow()
    renderWindow.SetWindowName("Frustum")
    renderWindow.AddRenderer(renderer)

    # an interactor
    renderWindowInteractor = vtk.vtkRenderWindowInteractor()
    renderWindowInteractor.SetRenderWindow(renderWindow)

    # add the actors to the scene
    renderer.AddActor(actor)
    renderer.SetBackground(colors.GetColor3d("Silver"))

    # Position the camera so that we can see the frustum
    renderer.GetActiveCamera().SetPosition(1, 0, 0)
    renderer.GetActiveCamera().SetFocalPoint(0, 0, 0)
    renderer.GetActiveCamera().SetViewUp(0, 1, 0)
    renderer.GetActiveCamera().Azimuth(30)
    renderer.GetActiveCamera().Elevation(30)
    renderer.ResetCamera()

    # render an image (lights and cameras are created automatically)
    renderWindow.Render()

    # begin mouse interaction
    renderWindowInteractor.Start()
コード例 #2
0
def create_frustum(aspect_ratio, fovy, scale, R, t):
    camera = vtk.vtkCamera()
    camera.SetViewAngle(fovy)
    print(t.item(0), t.item(1), t.item(2))
    camera.SetPosition(t.item(0), t.item(1), t.item(2))
    camera.SetViewUp(R[0][0], R[1][0], R[2][0])
    camera.SetFocalPoint(0.0, 0.0, 1.0)
    camera.SetClippingRange(1e-9, scale)

    planes_array = [0] * 24
    camera.GetFrustumPlanes(aspect_ratio, planes_array)

    planes = vtk.vtkPlanes()
    planes.SetFrustumPlanes(planes_array)

    frustumSource = vtk.vtkFrustumSource()
    frustumSource.SetPlanes(planes)

    extract_edges = vtk.vtkExtractEdges()
    extract_edges.SetInputConnection(frustumSource.GetOutputPort())
    extract_edges.Update()

    return extract_edges.GetOutput()
コード例 #3
0
    def __init__(self, parent = None):
        super(VTKFrame, self).__init__(parent)

        self.vtkWidget = QVTKRenderWindowInteractor(self)
        vl = QtGui.QVBoxLayout(self)
        vl.addWidget(self.vtkWidget)
        vl.setContentsMargins(0, 0, 0, 0)
 
        self.ren = vtk.vtkRenderer()
        self.ren.SetBackground(0.1, 0.2, 0.4)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()
 
        # Create source
        camera = vtk.vtkCamera()
        planesArray = [0]*24
        camera.GetFrustumPlanes(2, planesArray)
         
        planes = vtk.vtkPlanes()
        planes.SetFrustumPlanes(planesArray)
         
        frustumSource = vtk.vtkFrustumSource()
        frustumSource.SetPlanes(planes)
        frustumSource.Update()
         
        frustum = frustumSource.GetOutput()
         
        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInput(frustum)
         
        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
 
        self.ren.AddActor(actor)
        self.ren.ResetCamera()

        self._initialized = False
コード例 #4
0
ファイル: FrustumSource.py プロジェクト: demarle/VTKExamples
# create a rendering window and renderer
ren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)

# create a renderwindowinteractor
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)

planesArray=[0]*24 # Allocate a list of length 24
camera = vtk.vtkCamera()
camera.GetFrustumPlanes(1, planesArray)
planes=vtk.vtkPlanes()
planes.SetFrustumPlanes(planesArray)

frustumSource = vtk.vtkFrustumSource()
frustumSource.SetPlanes(planes)
frustumSource.ShowLinesOff();
frustumSource.Update()

# mapper
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputData(frustumSource.GetOutput())

# actor
actor = vtk.vtkActor()
actor.SetMapper(mapper)
actor.GetProperty().SetColor(0.8,0.9,0.7)

# assign actor to the renderer
ren.AddActor(actor)
コード例 #5
0
def main(argv):
    if len(argv) < 3:
        print("Usage: " + argv[0] + " polydata texture")
        return 0
    polyData = ReadPolyData(argv[1])

    readerFactory = vtk.vtkImageReader2Factory()
    textureFile = readerFactory.CreateImageReader2(argv[2])
    textureFile.SetFileName(argv[2])
    textureFile.Update()

    colors = vtk.vtkNamedColors()

    center = polyData.GetCenter()
    print("Center: %f, %f, %f" % (center[0], center[1], center[2]))
    camera = vtk.vtkCamera()
    camera.SetPosition(center[0], center[1] + .0375, center[2] + .5)
    camera.SetFocalPoint(center[0], center[1] + .0375, center[2])
    camera.Azimuth(-45)
    camera.Roll(-90)
    camera.SetClippingRange(.5, .6)

    planesArray = 24 * [1.0]
    camera.GetFrustumPlanes(1.0, planesArray)

    # Settings for vtkProjectedTexture
    aspect = [1.0, 1.0, 1.0]
    aspect[1] = (
        1.0 /
        (vtk.vtkMath.RadiansFromDegrees(math.tan(camera.GetViewAngle()))))
    aspect[2] = 2.0
    print("Aspect: %f, %f, %f" % (aspect[0], aspect[1], aspect[2]))

    projectedTexture = vtk.vtkProjectedTexture()

    projectedTexture.SetAspectRatio(aspect)
    projectedTexture.SetPosition(camera.GetPosition())
    projectedTexture.SetFocalPoint(camera.GetFocalPoint())
    projectedTexture.SetUp(camera.GetViewUp()[0],
                           camera.GetViewUp()[1],
                           camera.GetViewUp()[2])

    projectedTexture.SetInputData(polyData)
    projectedTexture.Update()

    # Map Texture on Surface
    polyData.GetPointData().SetTCoords(
        projectedTexture.GetOutput().GetPointData().GetTCoords())

    texture = vtk.vtkTexture()
    texture.SetInputData(textureFile.GetOutput())

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

    actor = vtk.vtkActor()
    actor.SetMapper(mapper)
    actor.SetTexture(texture)

    planes = vtk.vtkPlanes()
    planes.SetFrustumPlanes(planesArray)

    frustumSource = vtk.vtkFrustumSource()
    frustumSource.ShowLinesOff()
    frustumSource.SetPlanes(planes)
    frustumSource.Update()

    frustumMapper = vtk.vtkPolyDataMapper()
    frustumMapper.SetInputConnection(frustumSource.GetOutputPort())

    frustumActor = vtk.vtkActor()
    frustumActor.SetMapper(frustumMapper)
    frustumActor.GetProperty().EdgeVisibilityOn()
    frustumActor.GetProperty().SetColor(colors.GetColor3d("Banana"))
    frustumActor.GetProperty().SetOpacity(.5)
    frustumActor.GetProperty().SetRepresentationToWireframe()

    renderer = vtk.vtkRenderer()
    renderer.AddActor(actor)
    renderer.AddActor(frustumActor)
    renderer.SetBackground(colors.GetColor3d("SlateGray"))
    renderer.SetActiveCamera(camera)
    camera.Azimuth(180)
    camera.Roll(-90)
    renderer.ResetCameraClippingRange()

    renderWindow = vtk.vtkRenderWindow()
    renderWindow.AddRenderer(renderer)
    renderWindow.SetWindowName("ProjectedTexture")

    renWinInteractor = vtk.vtkRenderWindowInteractor()
    renWinInteractor.SetRenderWindow(renderWindow)

    renderWindow.Render()
    renWinInteractor.Start()
コード例 #6
0
ファイル: visualizer.py プロジェクト: Na-Z/3DMVGOD
def visualize_frustums_intersection(p_planes_list, intersections):

    colors = vtk.vtkNamedColors()

    # set a renderer and a render window
    renderer = vtk.vtkRenderer()
    renderer.SetBackground(colors.GetColor3d("Silver"))
    renderWindow = vtk.vtkRenderWindow()
    renderWindow.SetSize(600, 600)
    renderWindow.SetWindowName("Frustum Intersection plus intersection points")
    renderWindow.AddRenderer(renderer)

    # an interactor
    renderWindowInteractor = vtk.vtkRenderWindowInteractor()
    renderWindowInteractor.SetInteractorStyle(
        vtk.vtkInteractorStyleTrackballCamera())
    renderWindowInteractor.SetRenderWindow(renderWindow)

    for i, p_planes in enumerate(p_planes_list):

        planesArray = list(p_planes.flatten())
        planes = vtk.vtkPlanes()
        planes.SetFrustumPlanes(planesArray)

        frustum = vtk.vtkFrustumSource()
        frustum.ShowLinesOff()
        frustum.SetPlanes(planes)

        shrink = vtk.vtkShrinkPolyData()
        shrink.SetInputConnection(frustum.GetOutputPort())
        shrink.SetShrinkFactor(1.)

        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(shrink.GetOutputPort())

        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
        actor.GetProperty().EdgeVisibilityOn()
        if i % 2 == 0:
            actor.GetProperty().SetColor(colors.GetColor3d("Tomato"))
            actor.GetProperty().SetOpacity(.2)
        else:
            actor.GetProperty().SetColor(colors.GetColor3d("Banana"))
            actor.GetProperty().SetOpacity(.4)

        renderer.AddActor(actor)

    # create sphere for all the intersection point
    for i in range(intersections.shape[0]):
        point = intersections[i]
        sphereSource = vtk.vtkSphereSource()
        sphereSource.SetCenter(point[0], point[1], point[2])
        sphereSource.SetRadius(.05)
        # Make the surface smooth.
        sphereSource.SetPhiResolution(100)
        sphereSource.SetThetaResolution(100)

        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(sphereSource.GetOutputPort())

        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
        actor.GetProperty().SetColor(colors.GetColor3d("DarkGreen"))

        renderer.AddActor(actor)

    transform = vtk.vtkTransform()
    transform.Translate(0, 0, 0)
    axes = vtk.vtkAxesActor()
    #  The axes are positioned with a user transform
    axes.SetAxisLabels(1)
    axes.SetUserTransform(transform)
    axes.AxisLabelsOff()
    axes.SetTotalLength(3.0, 3.0, 3.0)
    renderer.AddActor(axes)

    renderer.SetUseDepthPeeling(1)
    renderer.SetOcclusionRatio(0.1)
    renderer.SetMaximumNumberOfPeels(100)
    renderWindow.SetMultiSamples(0)
    renderWindow.SetAlphaBitPlanes(1)

    # Position the camera so that we can see the frustum
    renderer.GetActiveCamera().SetPosition(1, 0, 0)
    renderer.GetActiveCamera().SetFocalPoint(0, 0, 0)
    renderer.GetActiveCamera().SetViewUp(0, 1, 0)
    renderer.GetActiveCamera().Azimuth(30)
    renderer.GetActiveCamera().Elevation(30)
    renderer.ResetCamera()

    # render an image (lights and cameras are created automatically)
    renderWindow.Render()

    # begin mouse interaction
    renderWindowInteractor.Start()
コード例 #7
0
ファイル: visualizer.py プロジェクト: Na-Z/3DMVGOD
def visualize_n_frustums_plus_ptclouds(p_planes_list, frustum_ptcloud):
    colors = vtk.vtkNamedColors()

    # set a renderer and a render window
    renderer = vtk.vtkRenderer()
    renderer.SetBackground(colors.GetColor3d("Silver"))
    renderWindow = vtk.vtkRenderWindow()
    renderWindow.SetSize(600, 600)
    renderWindow.SetWindowName("Frustum Intersection")
    renderWindow.AddRenderer(renderer)

    # an interactor
    renderWindowInteractor = vtk.vtkRenderWindowInteractor()
    renderWindowInteractor.SetInteractorStyle(
        vtk.vtkInteractorStyleTrackballCamera())
    renderWindowInteractor.SetRenderWindow(renderWindow)

    # add n frustums
    for i, p_planes in enumerate(p_planes_list):

        planesArray = list(p_planes.flatten())
        planes = vtk.vtkPlanes()
        planes.SetFrustumPlanes(planesArray)

        frustum = vtk.vtkFrustumSource()
        frustum.ShowLinesOff()
        frustum.SetPlanes(planes)

        shrink = vtk.vtkShrinkPolyData()
        shrink.SetInputConnection(frustum.GetOutputPort())
        shrink.SetShrinkFactor(1.)

        mapper = vtk.vtkPolyDataMapper()
        mapper.SetInputConnection(shrink.GetOutputPort())

        actor = vtk.vtkActor()
        actor.SetMapper(mapper)
        actor.GetProperty().EdgeVisibilityOn()
        actor.GetProperty().SetColor(colors.GetColor3d("Banana"))
        actor.GetProperty().SetOpacity(.2)

        renderer.AddActor(actor)

    # add ptclouds
    # assin color to ptcloud (n,4)
    cm = colormap.get_cmap('RdBu')
    color_mapper = colormap.ScalarMappable(norm=matplotlib.colors.Normalize(
        vmin=0, vmax=1, clip=True),
                                           cmap=cm)
    color = color_mapper.to_rgba(frustum_ptcloud[:, 3])[:, :3] * 255
    ptcloud = np.hstack((frustum_ptcloud[:, 0:3], color))

    # Create the geometry of a point (the coordinate)
    points = vtk.vtkPoints()
    # Create the topology of the point (a vertex)
    vertices = vtk.vtkCellArray()
    # Setup colors
    Colors = vtk.vtkUnsignedCharArray()
    Colors.SetNumberOfComponents(3)
    Colors.SetName("Colors")
    # Add points
    for i in range(0, len(ptcloud)):
        p = ptcloud[i, :3]
        id = points.InsertNextPoint(p)
        vertices.InsertNextCell(1)
        vertices.InsertCellPoint(id)
        Colors.InsertNextTuple3(ptcloud[i, 3], ptcloud[i, 4], ptcloud[i, 5])
    point = vtk.vtkPolyData()
    # Set the points and vertices we created as the geometry and topology of the polydata
    point.SetPoints(points)
    point.SetVerts(vertices)
    point.GetPointData().SetScalars(Colors)
    point.Modified()

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

    actor = vtk.vtkActor()
    actor.SetMapper(mapper)
    actor.GetProperty().EdgeVisibilityOn()
    actor.GetProperty().SetColor(colors.GetColor3d("Tomato"))
    actor.GetProperty().SetOpacity(.3)

    renderer.AddActor(actor)

    transform = vtk.vtkTransform()
    transform.Translate(0, 0, 0)
    axes = vtk.vtkAxesActor()
    #  The axes are positioned with a user transform
    axes.SetAxisLabels(1)
    axes.SetUserTransform(transform)
    axes.AxisLabelsOff()
    axes.SetTotalLength(3.0, 3.0, 3.0)
    renderer.AddActor(axes)

    renderer.SetUseDepthPeeling(1)
    renderer.SetOcclusionRatio(0.1)
    renderer.SetMaximumNumberOfPeels(100)
    renderWindow.SetMultiSamples(0)
    renderWindow.SetAlphaBitPlanes(1)

    # Position the camera so that we can see the frustum
    renderer.GetActiveCamera().SetPosition(1, 0, 0)
    renderer.GetActiveCamera().SetFocalPoint(0, 0, 0)
    renderer.GetActiveCamera().SetViewUp(0, 1, 0)
    renderer.GetActiveCamera().Azimuth(30)
    renderer.GetActiveCamera().Elevation(30)
    renderer.ResetCamera()

    # render an image (lights and cameras are created automatically)
    renderWindow.Render()

    # begin mouse interaction
    renderWindowInteractor.Start()
コード例 #8
0
ファイル: visualizer.py プロジェクト: Na-Z/3DMVGOD
def visualize_one_frustum(p_planes):

    colors = vtk.vtkNamedColors()

    planesArray = list(p_planes.flatten())
    planes = vtk.vtkPlanes()
    planes.SetFrustumPlanes(planesArray)

    frustumSource = vtk.vtkFrustumSource()
    frustumSource.ShowLinesOff()
    frustumSource.SetPlanes(planes)

    shrink = vtk.vtkShrinkPolyData()
    shrink.SetInputConnection(frustumSource.GetOutputPort())
    shrink.SetShrinkFactor(1.)

    mapper = vtk.vtkPolyDataMapper()
    mapper.SetInputConnection(shrink.GetOutputPort())

    back = vtk.vtkProperty()
    back.SetColor(colors.GetColor3d("Tomato"))

    actor = vtk.vtkActor()
    actor.SetMapper(mapper)
    actor.GetProperty().EdgeVisibilityOn()
    actor.GetProperty().SetColor(colors.GetColor3d("Banana"))
    actor.SetBackfaceProperty(back)

    # a renderer and render window
    renderer = vtk.vtkRenderer()
    renderWindow = vtk.vtkRenderWindow()
    renderWindow.SetWindowName("Frustum")
    renderWindow.AddRenderer(renderer)

    # an interactor
    renderWindowInteractor = vtk.vtkRenderWindowInteractor()
    renderWindowInteractor.SetInteractorStyle(
        vtk.vtkInteractorStyleTrackballCamera())
    renderWindowInteractor.SetRenderWindow(renderWindow)

    # add the actors to the scene
    renderer.AddActor(actor)
    renderer.SetBackground(colors.GetColor3d("Silver"))

    transform = vtk.vtkTransform()
    transform.Translate(0, 0, 0)
    axes = vtk.vtkAxesActor()
    #  The axes are positioned with a user transform
    axes.SetAxisLabels(1)
    axes.SetUserTransform(transform)
    axes.AxisLabelsOff()
    axes.SetTotalLength(3.0, 3.0, 3.0)
    renderer.AddActor(axes)

    # Position the camera so that we can see the frustum
    renderer.GetActiveCamera().SetPosition(1, 0, 0)
    renderer.GetActiveCamera().SetFocalPoint(0, 0, 0)
    renderer.GetActiveCamera().SetViewUp(0, 1, 0)
    renderer.GetActiveCamera().Azimuth(30)
    renderer.GetActiveCamera().Elevation(30)
    renderer.ResetCamera()

    # render an image (lights and cameras are created automatically)
    renderWindow.Render()

    # begin mouse interaction
    renderWindowInteractor.Start()
コード例 #9
0
ファイル: Frustum.py プロジェクト: dlrdave/VTKWikiExamples
#!/usr/bin/env python

import vtk

camera = vtk.vtkCamera()
planesArray = [0 for i in range(24)]

camera.GetFrustumPlanes(1, planesArray)

planes = vtk.vtkPlanes()
planes.SetFrustumPlanes(planesArray)

frustumSource = vtk.vtkFrustumSource()
frustumSource.SetPlanes(planes)
frustumSource.Update()

frustum = frustumSource.GetOutput()

mapper = vtk.vtkPolyDataMapper()
if vtk.VTK_MAJOR_VERSION <= 5:
    mapper.SetInput(frustum)
else:
    mapper.SetInputData(frustum)

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

# a renderer and render window
renderer = vtk.vtkRenderer()
renderWindow = vtk. vtk.vtkRenderWindow()
renderWindow.AddRenderer(renderer)