Advertisement
Guest User

vtkImageActor

a guest
Feb 11th, 2012
185
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
Advertisement