#!/usr/bin/env python#This simple example shows how to do basic rendering and pipeline#creation.
importvtkclassMouseInteractorHighLightActor(vtk.vtkInteractorStyleTrackballCamera):def __init__(self, parent =None):
self.AddObserver("MouseMoveEvent", self.MouseMoveEvent)
self.AddObserver("MouseWheelForwardEvent", self.MouseWheelForwardEvent)
self.AddObserver("MouseWheelBackwardEvent", self.MouseWheelBackwardEvent)defMouseMoveEvent(self, obj, event):pass
defMouseWheelBackwardEvent(self, obj, event):pass
defMouseWheelForwardEvent(self, obj, event):pass
defmain():
colors=vtk.vtkNamedColors()#Set the background color.
bkg = map(lambda x: x / 255.0, [26, 51, 102, 255])
colors.SetColor("BkgColor", *bkg)#This creates a polygonal cylinder model with eight circumferential
#facets.
cylinder =vtk.vtkCylinderSource()
cylinder.SetResolution(8)#The mapper is responsible for pushing the geometry into the graphics
#library. It may also do color mapping, if scalars or other
#attributes are defined.
cylinderMapper =vtk.vtkPolyDataMapper()
cylinderMapper.SetInputConnection(cylinder.GetOutputPort())#The actor is a grouping mechanism: besides the geometry (mapper), it
#also has a property, transformation matrix, and/or texture map.
#Here we set its color and rotate it -22.5 degrees.
cylinderActor =vtk.vtkActor()
cylinderActor.SetMapper(cylinderMapper)
cylinderActor.GetProperty().SetColor(colors.GetColor3d("red"))
cylinderActor.RotateX(30.0)
cylinderActor.RotateY(-45.0)#Create the graphics structure. The renderer renders into the render
#window. The render window interactor captures mouse events and will
#perform appropriate camera or actor manipulation depending on the
#nature of the events.
ren =vtk.vtkRenderer()
renWin=vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren=vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)#add the custom style
style =MouseInteractorHighLightActor()
style.SetDefaultRenderer(ren)
iren.SetInteractorStyle(style)#Add the actors to the renderer, set the background and size
ren.AddActor(cylinderActor)
ren.SetBackground(colors.GetColor3d("BkgColor"))
renWin.SetSize(300, 300)
renWin.SetWindowName('Cylinder')#This allows the interactor to initalize itself. It has to be
#called before an event loop.
iren.Initialize()#We'll zoom in a little by accessing the camera and invoking a "Zoom"
#method on it.
ren.ResetCamera()
ren.GetActiveCamera().Zoom(1.5)
renWin.Render()#Start the event loop.
iren.Start()if __name__ == '__main__':
main()