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()
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()
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
# 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)
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()
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()
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()
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()
#!/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)