Guest User

vtkImageActor

a guest
Feb 11th, 2012
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.44 KB | None | 0 0
  1. import vtk
  2. import math
  3.  
  4. red = [255,0,0]
  5. blue= [0,0,255]
  6. green= [0,255,0]
  7. black= [0,0,0]
  8.  
  9. class MyImage:
  10.     # create image
  11.     def __init__(self, ren ):
  12.         self.vol = vtk.vtkImageData()
  13.         self.vol.SetDimensions(512,512 ,1)
  14.         self.vol.SetSpacing(1,1,1)
  15.         self.vol.SetOrigin(0,0,0)
  16.         self.vol.SetScalarTypeToUnsignedChar()
  17.         self.vol.SetNumberOfScalarComponents(3)
  18.         self.vol.AllocateScalars()
  19.         self.scalars = vtk.vtkCharArray()
  20.         # initialize the image
  21.         for n in range(512):
  22.             for m in range(512):
  23.                 x = 512/2 -n
  24.                 y = 512/2 -m
  25.                 d = math.sqrt(x*x+y*y)
  26.                 if ( d < 100 ):
  27.                     #print "red"
  28.                     col = red
  29.                 elif (d< 200 ):
  30.                     col = green
  31.                 else:
  32.                     col = blue
  33.                 for c in range(3):
  34.                     self.scalars.InsertTuple1( n*(512*3) + m*3 +c, col[c] )
  35.         self.vol.GetPointData().SetScalars( self.scalars )
  36.         self.vol.Update()
  37.         self.ia = vtk.vtkImageActor()
  38.         self.ia.SetInput(self.vol)
  39.         self.ia.InterpolateOff()
  40.         self.vol.Update()
  41.  
  42.         ren.AddActor( self.ia )
  43.    
  44.     # modify image
  45.     def modify(self):
  46.         for n in range(512):
  47.             for m in range(512):
  48.                 x = 512/2 -n
  49.                 y = 512/2 -m
  50.                 d = math.sqrt(x*x+y*y)
  51.                 if ( d < 66 ):
  52.                     col = black
  53.                     for c in range(3):
  54.                         self.scalars.SetValue( n*(512*3) + m*3 +c, chr(col[c]) )
  55.         self.vol.Update()
  56.        
  57.        
  58. if __name__ == "__main__":  
  59.     ren = vtk.vtkRenderer()
  60.     renWin = vtk.vtkRenderWindow()
  61.     renWin.AddRenderer(ren)
  62.      
  63.     iren = vtk.vtkRenderWindowInteractor()
  64.     iren.SetRenderWindow(renWin)
  65.     interactorstyle = iren.GetInteractorStyle()
  66.     interactorstyle.SetCurrentStyleToTrackballCamera()    
  67.      
  68.     camera = vtk.vtkCamera()
  69.     camera.SetClippingRange(-10, 500)
  70.     camera.SetPosition(0, -1, 3000)
  71.     camera.SetFocalPoint(255, 255, 0)
  72.    
  73.     myim = MyImage(ren)
  74.    
  75.     #renWin.Render() # when this Render() is commented out, the results of modify() are visible
  76.     # BUT, when Render() is called here, we don't see the results of modify()
  77.    
  78.     myim.modify()
  79.     renWin.Render()
  80.     iren.Initialize()
  81.     iren.Start()
Advertisement
Add Comment
Please, Sign In to add comment