Advertisement
Guest User

vtkImageActor test

a guest
Feb 13th, 2012
199
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
Advertisement