Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import vtk
- import math
- red = [255,0,0]
- blue= [0,0,255]
- green= [0,255,0]
- black= [0,0,0]
- class MyImage:
- # create image
- def __init__(self, ren ):
- self.vol = vtk.vtkImageData()
- self.vol.SetDimensions(512,512 ,1)
- self.vol.SetSpacing(1,1,1)
- self.vol.SetOrigin(0,0,0)
- self.vol.SetScalarTypeToUnsignedChar()
- self.vol.SetNumberOfScalarComponents(3)
- self.vol.AllocateScalars()
- self.scalars = vtk.vtkCharArray()
- # initialize the image
- for n in range(512):
- for m in range(512):
- x = 512/2 -n
- y = 512/2 -m
- d = math.sqrt(x*x+y*y)
- if ( d < 100 ):
- #print "red"
- col = red
- elif (d< 200 ):
- col = green
- else:
- col = blue
- for c in range(3):
- self.scalars.InsertTuple1( n*(512*3) + m*3 +c, col[c] )
- self.vol.GetPointData().SetScalars( self.scalars )
- self.vol.Update()
- self.ia = vtk.vtkImageActor()
- self.ia.SetInput(self.vol)
- self.ia.InterpolateOff()
- self.vol.Update()
- ren.AddActor( self.ia )
- # modify image
- def modify(self):
- for n in range(512):
- for m in range(512):
- x = 512/2 -n
- y = 512/2 -m
- d = math.sqrt(x*x+y*y)
- if ( d < 66 ):
- col = black
- for c in range(3):
- self.scalars.SetValue( n*(512*3) + m*3 +c, chr(col[c]) )
- self.vol.Update()
- if __name__ == "__main__":
- ren = vtk.vtkRenderer()
- renWin = vtk.vtkRenderWindow()
- renWin.AddRenderer(ren)
- iren = vtk.vtkRenderWindowInteractor()
- iren.SetRenderWindow(renWin)
- interactorstyle = iren.GetInteractorStyle()
- interactorstyle.SetCurrentStyleToTrackballCamera()
- camera = vtk.vtkCamera()
- camera.SetClippingRange(-10, 500)
- camera.SetPosition(0, -1, 3000)
- camera.SetFocalPoint(255, 255, 0)
- myim = MyImage(ren)
- #renWin.Render() # when this Render() is commented out, the results of modify() are visible
- # BUT, when Render() is called here, we don't see the results of modify()
- myim.modify()
- renWin.Render()
- iren.Initialize()
- iren.Start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement