from vtk import *
def main():
math = vtkMath()
# 20x10x10 points
nx = 20
ny = 10
nz = 10
# create the cloud of 20x10x10 points
scalars = vtkUnsignedCharArray()
for z in range(0, nz):
for y in range(0, ny):
for x in range(0, nx):
if x < 5:
scalars.InsertNextTuple1( 0 )
else:
scalars.InsertNextTuple1( math.Random( 0, 255 ) + 1 )
cloud = vtkStructuredPoints()
cloud.SetDimensions( nx, ny, nz )
cloud.SetOrigin( 0, 0, 0 )
cloud.SetSpacing( 1, 1, 1 )
cloud.GetPointData().SetScalars( scalars )
# create mapper + change black points opacity
mapper = vtkDataSetMapper()
mapper.SetInput( cloud )
mapper.SetScalarRange( cloud.GetScalarRange() )
mapper.SetColorModeToMapScalars()
lut = mapper.GetLookupTable()
lut.Build()
lut.SetTableValue( 0, 0, 0, 0, 0 )
# render it
actor = vtkActor()
actor.SetMapper( mapper )
ren = vtkRenderer()
ren.AddActor( actor )
ren.SetBackground( 1, 1, 1 )
renWin = vtkRenderWindow()
renWin.AddRenderer( ren )
iren = vtkRenderWindowInteractor()
iren.SetRenderWindow( renWin )
renWin.SetSize( 500, 500 )
renWin.Render()
iren.Start()
if __name__ == '__main__':
main()
|