Guest User

vtkImageActor test

a guest
Feb 13th, 2012
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.55 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.     def get_actor(self):
  45.         return self.ia
  46.        
  47.     # modify image
  48.     def modify(self):
  49.         for n in range(512):
  50.             for m in range(512):
  51.                 x = 512/2 -n
  52.                 y = 512/2 -m
  53.                 d = math.sqrt(x*x+y*y)
  54.                 if ( d < 66 ):
  55.                     col = black
  56.                     for c in range(3):
  57.                         self.scalars.SetValue( n*(512*3) + m*3 +c, chr(col[c]) )
  58.         self.vol.Update()
  59.        
  60.        
  61. if __name__ == "__main__":  
  62.     ren = vtk.vtkRenderer()
  63.     renWin = vtk.vtkRenderWindow()
  64.     renWin.AddRenderer(ren)
  65.      
  66.     iren = vtk.vtkRenderWindowInteractor()
  67.     iren.SetRenderWindow(renWin)
  68.     interactorstyle = iren.GetInteractorStyle()
  69.     interactorstyle.SetCurrentStyleToTrackballCamera()    
  70.      
  71.     camera = vtk.vtkCamera()
  72.     camera.SetClippingRange(-10, 500)
  73.     camera.SetPosition(0, -1, 3000)
  74.     camera.SetFocalPoint(255, 255, 0)
  75.    
  76.     myim = MyImage(ren)
  77.     ia = myim.get_actor()
  78.     ren.AddActor(ia)
  79.    
  80.     renWin.Render() # when this Render() is commented out, the results of modify() are visible
  81.     # BUT, when Render() is called here, we don't see the results of modify()
  82.    
  83.     myim.modify()
  84.     renWin.Render()
  85.     iren.Initialize()
  86.     iren.Start()
Advertisement
Add Comment
Please, Sign In to add comment