1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
#!/usr/bin/env python
import vtk
def SetRandomSeed(caller, eventId):
#print "Restart random number generator"
raMath = vtk.vtkMath()
raMath.RandomSeed(6)
def SphereActor(lut, interpolateBeforeMapping):
ss = vtk.vtkSphereSource()
if interpolateBeforeMapping:
ss.SetCenter(-1, 0, 0)
bp = vtk.vtkBrownianPoints()
bp.SetInputConnection(ss.GetOutputPort())
bp.AddObserver (vtk.vtkCommand.EndEvent, SetRandomSeed)
pm = vtk.vtkPolyDataMapper()
pm.SetInputConnection(bp.GetOutputPort())
pm.SetScalarModeToUsePointFieldData()
pm.SelectColorArray("BrownianVectors")
pm.SetLookupTable(lut)
pm.SetInterpolateScalarsBeforeMapping(interpolateBeforeMapping)
a = vtk.vtkActor()
a.SetMapper(pm)
return a
def ColorTransferFunction():
opacityTransfer = vtk.vtkPiecewiseFunction()
opacityTransfer.AddPoint(0,0)
opacityTransfer.AddPoint(0.6,0)
opacityTransfer.AddPoint(1,1)
lut = vtk.vtkDiscretizableColorTransferFunction()
lut.SetColorSpaceToDiverging();
lut.AddRGBPoint(0.0, 0.23, 0.299, 0.754)
lut.AddRGBPoint(1.0, 0.706, 0.016, 0.150);
lut.SetVectorModeToMagnitude()
lut.SetRange (0, 1)
lut.SetScalarOpacityFunction(opacityTransfer)
lut.EnableOpacityMappingOn()
return lut
renWin = vtk.vtkRenderWindow()
renWin.SetSize(300, 300)
# enable depth peeling
renWin.AlphaBitPlanesOn()
renWin.SetMultiSamples(0)
ren = vtk.vtkRenderer()
ren.SetBackground(0, 0, 0)
# enable depth peeling
ren.UseDepthPeelingOn()
ren.SetMaximumNumberOfPeels(4)
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)
# Force a starting random value
SetRandomSeed(0, 0)
lut = ColorTransferFunction()
ren.AddActor(SphereActor (lut, 0))
ren.AddActor(SphereActor (lut, 1))
renWin.Render()
#iren.Start()
|