text: #!/usr/bin/env python
  
  # This is a simple volume rendering example that uses a
  # vtkVolumeTextureMapper2D mapper
  
  import vtk
  from vtk.util.misc import vtkGetDataRoot
  VTK_DATA_ROOT = vtkGetDataRoot()
  
  # Create the standard renderer, render window and interactor
  ren = vtk.vtkRenderer()
  renWin = vtk.vtkRenderWindow()
  renWin.AddRenderer(ren)
  iren = vtk.vtkRenderWindowInteractor()
  iren.SetRenderWindow(renWin)
  
  # Create the reader for the data
  reader = vtk.vtkStructuredPointsReader()
  reader.SetFileName(VTK_DATA_ROOT + "/Data/ironProt.vtk")
  
  # Create transfer mapping scalar value to opacity
  opacityTransferFunction = vtk.vtkPiecewiseFunction()
  opacityTransferFunction.AddPoint(20, 0.0)
  opacityTransferFunction.AddPoint(255, 0.2)
  
  # Create transfer mapping scalar value to color
  colorTransferFunction = vtk.vtkColorTransferFunction()
  colorTransferFunction.AddRGBPoint(0.0, 0.0, 0.0, 0.0)
  colorTransferFunction.AddRGBPoint(64.0, 1.0, 0.0, 0.0)
  colorTransferFunction.AddRGBPoint(128.0, 0.0, 0.0, 1.0)
  colorTransferFunction.AddRGBPoint(192.0, 0.0, 1.0, 0.0)
  colorTransferFunction.AddRGBPoint(255.0, 0.0, 0.2, 0.0)
  
  # The property describes how the data will look
  volumeProperty = vtk.vtkVolumeProperty()
  volumeProperty.SetColor(colorTransferFunction)
  volumeProperty.SetScalarOpacity(opacityTransferFunction)
  
  # The mapper knows how to render the data
  volumeMapper = vtk.vtkVolumeTextureMapper2D()
  volumeMapper.SetInputConnection(reader.GetOutputPort())
  
  # The volume holds the mapper and the property and can be used to
  # position/orient the volume
  volume = vtk.vtkVolume()
  volume.SetMapper(volumeMapper)
  volume.SetProperty(volumeProperty)
  
  ren.AddVolume(volume)
  renWin.Render()
  
  def CheckAbort(obj, event):
      if obj.GetEventPending() != 0:
          obj.SetAbortRender(1)
   
  renWin.AddObserver("AbortCheckEvent", CheckAbort)
  
  iren.Initialize()
  renWin.Render()
  iren.Start()
  