ParametricObjectsDemo2
VTKExamples/Python/GeometricObjects/ParametricObjectsDemo2
Code¶
ParametricObjectsDemo2.py
#!/usr/bin/env python import vtk class ParametricObjects(object): def ParametricObjects(self): colors = vtk.vtkNamedColors() # Set the background color. bkg = map(lambda x: x / 256.0, [25, 51, 102]) colors.SetColor("BkgColor", *bkg) parametricObjects = list() parametricObjects.append(vtk.vtkParametricBohemianDome()) parametricObjects[-1].SetA(0.5) parametricObjects[-1].SetB(1.0) parametricObjects[-1].SetC(2.0) parametricObjects.append(vtk.vtkParametricBour()) parametricObjects.append(vtk.vtkParametricCatalanMinimal()) parametricObjects.append(vtk.vtkParametricHenneberg()) parametricObjects.append(vtk.vtkParametricKuen()) parametricObjects.append(vtk.vtkParametricPluckerConoid()) parametricObjects.append(vtk.vtkParametricPseudosphere()) parametricFunctionSources = list() renderers = list() mappers = list() actors = list() textmappers = list() textactors = list() # Create a common text property. textProperty = vtk.vtkTextProperty() textProperty.SetFontSize(10) textProperty.SetJustificationToCentered() colors = vtk.vtkNamedColors() # Set the background color. Match those in VTKTextbook.pdf. bkg = map(lambda x: x / 256.0, [25, 51, 102]) colors.SetColor("BkgColor", *bkg) backProperty = vtk.vtkProperty() backProperty.SetColor(colors.GetColor3d("Red")) # Create a parametric function source, renderer, mapper # and actor for each object. for idx, item in enumerate(parametricObjects): parametricFunctionSources.append(vtk.vtkParametricFunctionSource()) parametricFunctionSources[idx].SetParametricFunction(item) parametricFunctionSources[idx].Update() mappers.append(vtk.vtkPolyDataMapper()) mappers[idx].SetInputConnection(parametricFunctionSources[idx].GetOutputPort()) actors.append(vtk.vtkActor()) actors[idx].SetMapper(mappers[idx]) actors[idx].GetProperty().SetColor(colors.GetColor3d("White")) actors[idx].SetBackfaceProperty(backProperty) textmappers.append(vtk.vtkTextMapper()) textmappers[idx].SetInput(item.GetClassName()) textmappers[idx].SetTextProperty(textProperty) textactors.append(vtk.vtkActor2D()) textactors[idx].SetMapper(textmappers[idx]) textactors[idx].SetPosition(100, 16) renderers.append(vtk.vtkRenderer()) gridDimensionsX = 4 gridDimensionsY = 2 for idx in range(len(parametricObjects), gridDimensionsX * gridDimensionsY): renderers.append(vtk.vtkRenderer) rendererSize = 200 # Create the RenderWindow renderWindow = vtk.vtkRenderWindow() renderWindow.SetSize(rendererSize * gridDimensionsX, rendererSize * gridDimensionsY) # Add and position the renders to the render window. viewport = list() for row in range(gridDimensionsY): for col in range(gridDimensionsX): idx = row * gridDimensionsX + col x0 = float(col) / gridDimensionsX y0 = float(gridDimensionsY - row - 1) / gridDimensionsY x1 = float(col + 1) / gridDimensionsX y1 = float(gridDimensionsY - row) / gridDimensionsY viewport[:] = [] viewport.append(x0) viewport.append(y0) viewport.append(x1) viewport.append(y1) if idx > (len(parametricObjects) - 1): continue renderWindow.AddRenderer(renderers[idx]) renderers[idx].SetViewport(viewport) renderers[idx].AddActor(actors[idx]) renderers[idx].AddActor(textactors[idx]) renderers[idx].SetBackground(colors.GetColor3d("BkgColor")) renderers[idx].ResetCamera() renderers[idx].GetActiveCamera().Azimuth(30) renderers[idx].GetActiveCamera().Elevation(-30) renderers[idx].GetActiveCamera().Zoom(0.9) renderers[idx].ResetCameraClippingRange() interactor = vtk.vtkRenderWindowInteractor() interactor.SetRenderWindow(renderWindow) renderWindow.Render() interactor.Start() if __name__ == "__main__": po = ParametricObjects() po.ParametricObjects()